jBoss automatische Synchronisation?

G

Gaestling

Gast
Hallo

wir sollen demnächst ein EJB-Projekt im jBoss 4 oder 5 erstellen. Mich interessiert die Synchronistion von den Methoden, die in einer EJB aufgerufen werden. Also z.B. eine EJB mit einer Methode, die weitere Klassen anderer Methoden benutzt.
Müssen die Klassen, die in der EJB-Methode benutzt werden sich um thread-safety usw. selber kümmern, oder macht das der Container? Ist es gut oder Pflicht, in solchen Klassen java concurrency zu benutzen?
In einer EJB darf ich nicht synchronisieren, wie sieht es in den darunterliegenden Klassen aus?

Danke und mit freundlichen Grüßen
Gaestling
 
R

reNur

Gast
Falls wir hier über den JBoss Application Server nehmen:
Tu dir selbst einen gefallen und verwende die aktuellste Version - 7.1.x.
Alles andere ist quatsch und du quälst dich nur rum.

So, zum Thema:
Der Container kümmert sich per default nicht um Threadsicherheit. Ich weiss nicht genau was du machen willst (schreib am besten mal ein paar Zeilen als Beispiel), reden wir hier über Stateless/Stateful Bean?

Wie auch immer, du musst bedenken dass es mehrere Instanzen eines EJBs gibt, die vom Container verwaltet werden. Eine Möglichkeit, Threadsicherheit zu gewährleisten ist z.B. der Einsatz eines Singleton-EJBs (gibt es seit 1.3). Dort kannst du auch über Annotationen das java-concurrent API benutzen und so den Zugriff auf die Methoden steuern.
 

FArt

Top Contributor
Threadsicherheit ist in der Regel kein Thema. Singletons solltest du nur verwenden, wenn du sie wirklich benötigst.

SLSB: Jeder Call hat seine eigene Instanz und es kann somit nicht zu konkurrierenden Zugriffen kommen.
SFSB: Jedes SFSB ist einem Client (die Rolle Client) zugeordnet. Konkurrierende Zugriffe auf ein SFSB sind per Spec verboten, wenn auch oft technisch möglich.

Statische Methoden usw. (Singletons) sind natürlich ungünstig, können aber vorkommen, sollten es aber nicht). Lesende statische Zugriffe sind uninteressant, schreibende sollte man vermeiden, zumal vom Classloading abhängt, welche Intanz der statischen Referenz ("Singleton") man erhält.
 
R

reNur

Gast
Ja, aber wenn er schon explizit nach Synchronisierung fragt, muss es ja irgend einen Grund dafür geben :)
Wenn ich nur threadsichere Methoden habe, dann muss ich ja gar nicht anfangen, darüber nachzudenken, ob das nun in einer EJB-Umgebung anders sein sollte.
 

FArt

Top Contributor
Ja, aber wenn er schon explizit nach Synchronisierung fragt, muss es ja irgend einen Grund dafür geben :)
Wenn es aber aus Sicht der Spec keinen Grund gibt, dann sollte man die Ausgangssituation näher beleuchten und die Anforderung hinterfragen.

Wenn ich nur threadsichere Methoden habe, dann muss ich ja gar nicht anfangen, darüber nachzudenken, ob das nun in einer EJB-Umgebung anders sein sollte.
Es ist ein Irrglaube, dass beliebiger Java-Code auch einfach so in einem Applicationserver läuft. Eine API z.B., die synchronisiert, kann man natürlich verwenden. Aber die Synchronisation ist dann überflüssig und kostet nur Ressourcen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Spring JBoss 7 - wie JNDI Datasource einbinden Application Tier 8
S JBoss - .properties vom Kunden änderbar machen Application Tier 10
M org.jboss.weld.exceptions.UnproxyableResolutionException wegen Parametern im Superclass-Kontruktor Application Tier 10
JimPanse JBoss 7 + JPA + Kundera + Cassandra Application Tier 2
B Glassfish vs. Tomcat/JBoss Application Tier 4
S Umstellung von JBoss 7 Full auf Web Profile Application Tier 4
V [JBoss 5] Datenbankverbindung zur Laufzeit aufbauen? Application Tier 8
V [JBoss5] JBoss stoppen bzw. am starten hindern? Application Tier 9
V [JBoss 5] Startroutine implementieren? Application Tier 7
S JBoss, EAR, EJB und ClassNotFound Application Tier 28
V JBoss 5 DeploymentSorter? Application Tier 3
V JBoss 5 mag @Service nicht Application Tier 2
K Threads im JBoss Application Tier 20
S JBoss EJB RMI Application Tier 5
A Jboss Ear mittels maven Application Tier 3
D Lazy Hibernate bei 3-Tier Applikation (JBoss + EJB3 + FatClient) Application Tier 6
ruutaiokwu stateful ejb unter jboss als webservice zur verfügung stellen... Application Tier 2
T Simples EJB-Beispiel für JBoss mit Eclipse Application Tier 3
M Spring - Leichtgewichtiger als JBoss? Application Tier 4
M JBoss Seam - Spring Application Tier 11
D Automatische Typkonvertierung in Spring Application Tier 5
D JSF Frage zu Synchronisation zwischen SessionScoped beans Application Tier 11

Ähnliche Java Themen

Neue Themen


Oben