EJB Enterprise Java Beans

Status
Nicht offen für weitere Antworten.

kossy

Bekanntes Mitglied
Hallo !

habe mal eine Frage zu den EJB (Version 2.0 oder 2.1, noch nicht 3.0 !). Es wird immer davon gesprochen, dass man die EJB´s lokal, und nicht entfernt aufrufen soll. Warum ist das so? Meine Vermutung wäre, aufgrund möglicher Inkonsistenzen der Daten beim entfernten Aufruf und größeren Administrationsaufwand, der die Anwendung verlangsamen würde. Grundsätzlich kann man glaube ich ja EJB´s entfernt aufrufen, aber ich habe gehört, dass man dies eher lokal vollziehen sollte, also auf der gleiche Maschine und noch nicht mal in unterschiedlichen JVM´s bzw. Rechnerknoten.
 
M

maki

Gast
Es wird immer davon gesprochen, dass man die EJB´s lokal, und nicht entfernt aufrufen soll. Warum ist das so?
Was für EJBs?

Meinst wohl EJB2.x EntityBeans, oder?

IMHO sollte man die gar nicht verwenden.
 

kossy

Bekanntes Mitglied
Tschuldigung ! Ich meinte natürlich auch die Entity-Beans und nicht Session Beans oder so.
 
M

maki

Gast
Warum man sie nicht remote aufrufen sollte:
EntityBeans haben feingranulare Schnittstellen.
Jeder getter/setter Aufruf würde eine Netzwerkverbindung zur Folge haben, langsam, und wenn deine ENtityBean viele getter/setter hat, wären das viele langsame aufrufe.

Stattdessen EntitBeans nur über SessionBeans aufrufen welche alle benötigten Daten auf einmal übers Netz schieben in sog. TransferObjects.

Aber EJB2.x EntityBeans sollte man wirklich vermeiden, geht auch schon vor EJB3, man nehme POJOs.
 

kossy

Bekanntes Mitglied
EntityBeans haben feingranulare Schnittstellen.

Könntest du das vielleicht etwas näher erläutern?

Stattdessen EntitBeans nur über SessionBeans aufrufen welche alle benötigten Daten auf einmal übers Netz schieben in sog. TransferObjects.

Wie genau darf ich mir einen solchen Aufruf einer EntityBean über eine SessionBeans vorstellen? Gibt es eine Alternative dazu bzw. was ist der gängigste Weg?

Aber EJB2.x EntityBeans sollte man wirklich vermeiden, geht auch schon vor EJB3, man nehme POJOs.

Ich weiß, leider kaue ich diese Thema derzeit nur "theoretisch" in meiner Hochschule durch und der Prof hat auch schon mal davon gesprochen, POJOs zu nehmen. Praxisbeispiele habe ich aber kaum zu dem Thema gesehen. Ist bestimmt nicht gerade sehr förderlich fürs Verständnis.

Ich habe mir noch ein Buch vom o´reilly Verlag bestellt, ich glaube das hieß EJB 2.0 oder so. Ich hoffe, dass mir das weiterhelfen wird.
 

foobar

Top Contributor
Wie genau darf ich mir einen solchen Aufruf einer EntityBean über eine SessionBeans vorstellen? Gibt es eine Alternative dazu bzw. was ist der gängigste Weg?
Das Pattern heisst Session Facade: http://java.sun.com/blueprints/corej2eepatterns/Patterns/SessionFacade.html

Könntest du das vielleicht etwas näher erläutern?
Eine Entity Bean stellt eine Entität in deiner Domäne dar z.b. eine Rechnung einen Auftrag etc. Diese Bean hat dann für jede Property einen Getter und Setter, wenn du jetzt per Remote eine EntityBean ansprichst und auf die einzelnen Getter zugreift, wird jedesmal ein einzelnder remotezugriff durchgeführt. Das ist nicht das was man will. Deshalb werden EntityBeans nur lokal verwendet und die Services über eine SessionBean zur Verfügung gestellt.
 

kossy

Bekanntes Mitglied
Ok vielen Dank, nun sind die Dinge etwas besser verständlich !

Es hat sich zwischenzeitlich noch Fragen zu einem anderen Thema ergeben, was aber auch die reine Kommunikation betrifft

Bei Java Message Service (JMS), handelt es sich um asynchrone Kommunikation, allerdings habe ich hier in einem Fachbuch gelesen, dass es egal ist, ob ich prozedual oder objektorientiert programmiere. Ich frage mich warum das so ist und kann mir diese Frage auch nirgends beantworten. Gerade SOA soll sich die Vorteile einer Message Queing zu nutze machen und nie entfernte Aufrufe realisieren.

Ich vermute mal, dass liegt daran, dass der Empfänger erst bei Bedarf seine Informationen holt. Ich glaube man benutzt nicht entfernte Aufrufe, weil sonst zuviel Traffic auf der Leitung wäre.

Warum benutzt man für RMI vorwiegend das CORBA Protokoll IIOP und nicht das Java Protokoll JRMP ein?

Ich vermute, weil es so möglich ist, nicht nur Javasysteme miteinander zu koppeln, sondern auch hetrogene Systeme ! Stichwort Interoperabilität.
 

foobar

Top Contributor
Bei Java Message Service (JMS), handelt es sich um asynchrone Kommunikation, allerdings habe ich hier in einem Fachbuch gelesen, dass es egal ist, ob ich prozedual oder objektorientiert programmiere.
Den Zusammenhang verstehe ich nicht. JMS hat nichts mit OOP oder prozeduraler Programmierung zu tun. JMS wird dann verwendet, wenn der Client nicht auf die Abarbeitung einer Anfrge warten kann oder will. Dadurch lassen sich auch verteilte Systeme koppeln.

Warum benutzt man für RMI vorwiegend das CORBA Protokoll IIOP und nicht das Java Protokoll JRMP ein?

Ich vermute, weil es so möglich ist, nicht nur Javasysteme miteinander zu koppeln, sondern auch hetrogene Systeme ! Stichwort Interoperabilität.
RMI nutzt man nur dann wenn Clients und Server in Java implementiert sind und man keine Interoperabilität braucht. Denn Webservices bringen eine Menge Overhead den man nicht immer in Kauf nehmen will, wenn es nur darum geht die Geschäftslogik zentral zu hinterlegen.
 

kossy

Bekanntes Mitglied
also ist nur der Unterscheid das RPC prozedual arbeitet und rmi eher für objekte geeignet ist?
 

kossy

Bekanntes Mitglied
Ich muss nochmal nachhaken. Warum ist RPC auch gleichzeitig RMI ? Also soweit ich weiß ist RPC (die Idee entfernte Prozeduren aufrufen zu können) der Vorgänger von RMI (die Idee entfernte Methoden für bestimmte Objektidentitäten aufrufen zu können).

Also wenn ich nun von einer Objektarchitektur und der Kommunikation von einzelnen Objekten untereinander spreche, dann benötige ich RMI Verfahren für die Kommunikation und nicht RPC, weil ich keine statischen Prozeduren aufrufen will.

Ist das so korrekt, kann das vielleicht jemand beantworten?
 

kossy

Bekanntes Mitglied
Ist ja auch egal wie man das jetzt nennt, hauptsache es funzt ;-)

Grundsätzlich hast Du recht, aber leider muss ich im Rahmen meines Studiums solche Dinge ganz genau definieren und trennen können. Leider reiten die Profs. gerade auf solchen Dinge herum und wollen es ganz genau wissen :x

Nochmal kurz was anderes. Wird der Namensdienst RMi registry eigentlich von dem Komponentenmodel (bzw. EJB Container) implizit bereits gestellt? Oder wird der Namensdienst irgendwo anders bereitsgestellt?
 

foobar

Top Contributor
Ja, JNDI ist Teil von Jee http://de.wikipedia.org/wiki/JEE

Grundsätzlich hast Du recht, aber leider muss ich im Rahmen meines Studiums solche Dinge ganz genau definieren und trennen können. Leider reiten die Profs. gerade auf solchen Dinge herum und wollen es ganz genau wissen
Verstehe. Laut Wikipedia ist RMI eine RPC implementierung. Eine Differenzierung zwischen oo und prozedural ist mir in diesem Bereich nicht bekannt.
Bei Soap wird bei den Services zwischen dem Stype RPC und Document LIteral unterschieden aber bei RMI gibt es nur entfernte Methodenaufrufe.
 

kossy

Bekanntes Mitglied
Ich habe nochmal eine theoretische Frage aus einer Vorlesung, bei deren Beantwortung ich mich schwer tue.

Hier die Frage:

Begründen Sie warum in manchen Anwendungsszenarien die Interaktion der Komponenten auf der Grundlage des Message Queuing gegenüber dem entfernten Aufruf die bessere Wahl darstellt?

Ich vermute, dass es manchmal erwünscht ist, die Komponenten bzw. Sender und Empfänger zu entkoppeln, umso die Geschwindigkeit meiner verteilten Anwendung zu erhöhen. Würde ich alles mit RMI und RPC machen wollen, wäre der administrative, technische Aufwand zu groß und geht auf Kosten der Geschwindigkeit.

Der Vorteil bei Nachrichtenorientierter Kommuniikation ist ja das Ausnutzen einer asynchronen Verbindung. Der Sender muss nicht auf eine Bestätigung vom Empfänger warten. Das ist optional !

Kann man das so stehen lassen? Was könnte ich noch ergänzen?

Vielen Dank !
MFG
 

foobar

Top Contributor
Ja, würde ich auch so sagen. Der Sender muß nicht auf das Ende einer Longrunningoperation warten.
 

kossy

Bekanntes Mitglied
Hallo !

Ich habe nochmal eine Frage. Es geht um die Entity Beans und die Datenbank, in denen die Attributwerte der Entity Bean in Feldern gespeichert werden soll.

Ist es möglich, dass irgendeine Entity Bean in einer entfernten Datenbank ihre Werte abspeichern kann? Also die Datenbank könnte auf einem anderen Rechner aktiv sein, als die Entity Bean. Ist dieser Weg vielleicht sogar üblich?

Muss eigentlich immer ein identisches Datenbankprodukt verwendet werden (z.B. Oracle oder MySQL). Oder reicht es einfach aus, auf allen in Frage kommenden Datenbank ein realtionales DB Schema x-beliebiger Hersteller laufen zu lassen?

Kann es sich auch um eine verteilte Datenbank handeln? (Falls es so etwas gibt)

Danke schön...
 

foobar

Top Contributor
Ist es möglich, dass irgendeine Entity Bean in einer entfernten Datenbank ihre Werte abspeichern kann? Also die Datenbank könnte auf einem anderen Rechner aktiv sein, als die Entity Bean. Ist dieser Weg vielleicht sogar üblich?
Ja, das ist theoretisch durch verschiedene persitentunits möglich. Aber nur eine Entity aus einer entfernten DB zu laden ist wohl eher unüblich. Ausser diese Entity enthält Daten, die sich nicht oft ändern wie irgendwelche Paramter der Anwendung.

Muss eigentlich immer ein identisches Datenbankprodukt verwendet werden (z.B. Oracle oder MySQL). Oder reicht es einfach aus, auf allen in Frage kommenden Datenbank ein realtionales DB Schema x-beliebiger Hersteller laufen zu lassen?
Öhm, JPA ist DB unabhängig. Du kannst deine DB theoretisch jeder Zeit austauschen und JPA kann auch zur Laufzeit dein DB-Schema anpassen oder neu erstellen falls nicht vorhanden.

Kann es sich auch um eine verteilte Datenbank handeln? (Falls es so etwas gibt)
Ja, sowas nennt man Clustering. Damit kann man entweder eine DB replizieren d.h. es gibt einen Master und mehrere Nodes an die Anfragen weiter geleitet werden.
Man kann aber auch nur eine einzelne Tabelle aus einer anderen DB verwenden. Das wird z.b. von Mysql und Informix Online unterstützt.
 

kossy

Bekanntes Mitglied
Öhm, JPA ist DB unabhängig. Du kannst deine DB theoretisch jeder Zeit austauschen und JPA kann auch zur Laufzeit dein DB-Schema anpassen oder neu erstellen falls nicht vorhanden.

Vielen Dank erstmal, was genau meinst du mit JPA? In dem Zusammenhang mit Entity Beans hat sich noch eine weitere Frage ergeben. Die sogenannten Callbackmethoden (ejbLoad(), ejbStore() usw.) werden ja implizit durch den EJB Container aufgerufen. Kann eigentlich eine entfernte Clientanwendung irgendwie an diese Callbackmethoden herankommen bzw. sie aufrufen? Oder ist das gänzlich unterbunden durch die EJB Container Architektur. Falls das funktionieren sollte, wird dass dann im Deployment Deskriptor festgelegt?

MFG und Danke
 

foobar

Top Contributor
EJBs sind normale Pojos. Wenn die Callbackmethoden public sind, kann theoretische jeder darauf zugreifen.

JPA ist die Java Persistence API. Diese API wird von EntityBeans zur Persistierung verwendet.
 

kossy

Bekanntes Mitglied
foobar hat gesagt.:
Wenn die Callbackmethoden public sind, kann theoretische jeder darauf zugreifen.

Ok aber würde das denn auch Sinn machen und nicht vielleicht sogar Gefahren mit sich bringen (unerlaubte Zugriffe von x-beliebigen Clients, Datenintegrität könnte gefährdet werden, unerlaubte Datenbankzugriffe).

Im Zusammenhang mit Entity Beans wird immer wieder EJBHome- und EJBObject-Objekte ins Spiel gebracht. Diese sind doch konkrete Klassen, die aber eher technische Dinge umsetzen und sich auf die Home und Remoteschnittstellen einer bestimmten Entitybean beziehen oder?
 

ps

Bekanntes Mitglied
> JPA ist die Java Persistence API. Diese API wird von EntityBeans zur Persistierung verwendet.

Die gabs bei EJB2.x doch noch garnicht...
 

kossy

Bekanntes Mitglied
Ist Java RMI eigentlich ein Komponentenmodel? Oder sind RMI Registry usw. nur spezielle Klassen einer Middleware?
 

foobar

Top Contributor
RMI dient nur dazu entfernte Methoden aufzurufen wie der Name ja schon vermuten lässt *g*
Als Komponentenmodell würde ich das nicht bezeichnen.
 

byte

Top Contributor
Sag Deinem Prof mal, dass seine Vorlesungsinhalte lange überholt sind. :roll:

EJB 2 ist der letzte Scheiss und seit Jahren veraltet. Selbst als es aktuell war, wurde es von vielen links liegen gelassen, weil höchst unpraktikabel. ;)
 

kossy

Bekanntes Mitglied
Ich glaube, dass weiß er selbst, vielleicht nutzt er die EJB 2.0 noch, um so besser die theoretischen Zusammenhänge erklären zu können?! Ich kenne nun die EJB 3.0 nicht (oder auch POJO's heißen die nun glaube ich), aber vielleicht kann er anhand dieser die Zusammenhänge weniger gut erklären!?
 

byte

Top Contributor
POJO: http://de.wikipedia.org/wiki/Plain_Old_Java_Object

Auch ich habe damals EJB 2 gelernt in der Uni (damals gabs JEE 5 noch nicht). Die theoretischen Zusammenhänge lernt man da imo aber nicht besser, weil man durch viel zu viel technische Details verwirrt wird. Es mag durchaus richtig sein, dass EJB 2 das Verständis besser fördern könnte, wie ein EJB Container intern arbeitet, aber das wird in solchen Vorlesungen sicherlich nicht vermittelt. Ausserdem ist es wohl eher nur von peripherem Interesse, wenn man damit arbeiten möchte.

Andererseits hats auch was für sich: Du hast Dein Aha-Erlebnis noch vor Dir, wenn Du Dich irgendwann mit EJB 3 beschäftigst und siehst, dass es auch einfach geht. ;)
 
G

Guest

Gast
Ich muss euch nochmal kurz etwas zu Instanzen-Pooling fragen. In EJB 2.0 (also der veralteten Version) werden doch nur zustandslose Sessionbeans und Message Driven Beans gepoolt oder? Mein Prof. hat in einer Vorlesung behauptet, dass die Entity Beans und zustandsbehaftete Sessionsbeans nicht gepoolt werden.

Da sich mein Prof. leider oft sehr missverständlich ausdrückt, frage ich lieber hier nochmal bei euch nach. Stimm das? Ich bin ziemlich sicher, dass auch Entity Beans gepoolt werden.

Es geht mir nur um den einfachen Standard und nicht um irgendwelche x-beliebigen Herstellerimplementierungen. Klar ist, dass jeder Hersteller das auch unterschiedlich handhaben kann.

Danke euch !
 
G

Guest

Gast
Mit poolen meine ich, dass Instanzenpooling. Hoffe, ich hatte mich klar genug ausgedrückt.
 

kossy

Bekanntes Mitglied
War die Frage vielleicht zu undeutlich? Also mit Instanzenpooling meine ich, dass die Instanzen der Beanklassen (welcher letztenendes auch alle nötigen Geschäfts- und Callbackmethoden implementieren) schon vorab zu einer gewissen Anzahl erzeugt werden und dann einfach dem EJB Object hinzugefügt werden, sobald der Client über das EJB Home Objekt die create Methode aufruft.
 

foobar

Top Contributor
Stateful SessionBeans werden auf keinen Fall gepoolt wie das bei EntityBeans aussah weiß ich auch nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Enterprise Java Beans Allgemeines EE 7
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
M Wann Enterprise Java nutzen? Allgemeines EE 3
F Interaktive Datenvisualisierung mit Java Enterprise Edition Allgemeines EE 2
K Probleme mit Enterprise Anwendung Allgemeines EE 5
F Customizing und Erweiterbarkeit bei Enterprise-Anwendungen Allgemeines EE 11
G Enterprise Entwicklung Allgemeines EE 4
G AnfängerFrage: EJB 3 und Enterprise Client Allgemeines EE 4
U Enterprise Bean mit dynamischer Datenbankauswahl? Allgemeines EE 3
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
M Rest mit Java 11 Allgemeines EE 6
M java.lang.SecurityException: class "javax.persistence.TupleElement"'s signer information does not match ... Allgemeines EE 1
F Java Programmierer Allgemeines EE 13
R Wie viel DevOps sollte ein Java-Entwickler kennen, der sich in Microservices spezialisiert? Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
A Java EE (am Cleint) und websocket Allgemeines EE 8
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
R Aufbau zum Java EE Entwickler - Schulungen Allgemeines EE 0
G Java EE Hosting ? Allgemeines EE 6
P Java EE Videotutorials Allgemeines EE 1
R Java Enterpise entwickeln mit Virtualbox Allgemeines EE 6
A OutOfMemoryError: Java heap space Allgemeines EE 7
I Start Word from Java Allgemeines EE 1
T Java Jersey Interceptor Allgemeines EE 7
R Post Variable in Java Allgemeines EE 8
L JSP Fehlermeldung bei Verwendung von Java-Expression-Language Allgemeines EE 8
K Wie habt ihr Java EE gelernt? Allgemeines EE 11
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
T Java Login Allgemeines EE 1
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
W Authentifizierung und Sessions in Java EE7 Allgemeines EE 0
OnDemand Task in Java ee Allgemeines EE 7
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand Deployen ohne .java Files Allgemeines EE 0
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
G Bachelorthesis: Java oder PHP (CMS) Allgemeines EE 7
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
D Java Projekt goes Webservice Allgemeines EE 6
L Button Handling in JSP mit Java-Backend Allgemeines EE 2
Shams Frage zu Dowload von JAVA SDK Allgemeines EE 5
T Größeres Java EE Beispiel Projekt Allgemeines EE 4
N JavaScript schickt und Java empfängt? Allgemeines EE 4
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
H java selenium spezis? Allgemeines EE 4
H java selenium test connection refused Allgemeines EE 6
M Java EE-Technologie-Lern-Wahl Allgemeines EE 5
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
J Java Dependencies auslesen Allgemeines EE 19
2 installation java EE Allgemeines EE 12
J PHP oder Java? Allgemeines EE 12
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
T Java CMS Entwicklung : Welcher Weg ist besser? Allgemeines EE 9
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
J Einstieg in Java EE Allgemeines EE 5
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
D Grundüberlegung Java Webprojekt Allgemeines EE 10
F Einstieg in Java EE - Beispielanwendungen Allgemeines EE 52
R JAVA EE - eigene Klassen aus EJB übernehmen Allgemeines EE 2
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
G java ResourceLocator Allgemeines EE 12
M Was ist mit Java möglich? Allgemeines EE 13
T Komponenten zusammenhänge Java EE Allgemeines EE 7
A Java CMS Allgemeines EE 2
P Architektur Java EE <-> HTML5 Allgemeines EE 3
A Java Tomcat findet Website nicht Allgemeines EE 8
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
B Java EE, kickstart my heart Allgemeines EE 10
P Frage zu Java EE Design Patterns Allgemeines EE 3
G EJB und Java EE - No Persistence provider Allgemeines EE 5
zilti Java EE Hosting, worauf muss ich achten? Allgemeines EE 5
M Java EE6: Wie Login-Vorgang durchführen? Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
G Java <-> Flex Allgemeines EE 2
Spin Ant - Java Beans umsetzen Allgemeines EE 4
V "null" durch NICHTS ersetzen jsp und java beans Allgemeines EE 3
M Serialisierung und Klonen in Java Allgemeines EE 5
W JAVA Optionen auslesen Allgemeines EE 3
D Spring 3 vs. Java EE 6 Allgemeines EE 33
MQue CMS in Verbindung mit Java Allgemeines EE 16
X3TitanCore Java Servertechnologie Allgemeines EE 7
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
R Variablen statt Java-Methoden in EL's Allgemeines EE 4
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
G Vergleich zwischen Java Spirng und Ruby on Rails Allgemeines EE 9
F Ich will mit Java Internetseiten bauen, aber wo hosten? Allgemeines EE 14
J OOP Java Array Problem Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben