Hallo,<br><br>ich arbeite mit einem <b>JBoss Enterprise-Server</b> mit <b>embedded Tomcat</b> für eine Webanwendung. Weil der EJB-Container und der Servlet-Container mit demselben Adressraum arbeiten, möchte ich für den Zugriff auf SessionBeans mit einem <b>LocalHome</b> Interface arbeiten. Leider bekomme ich die Erstellung des Contextes und die anschliessende Verbindung zum LocalHome-Object nicht richtig hin. Es sieht so aus, als würde die Anwendung keinen Kontakt zur SessionBean hinbekommen.<br><br>Daher meine Frage: hat jemand Demosourcen, die mir den Zugriff auf eine lokale SessioBean beispielhaft zeigen. - Der Zugriff über ein Remote-Object klappt fehlerfrei, jedoch erscheint mir der Zugriff über den JNDI-Dienst für eine lokale SessionBean zu aufwendig...<br><br>Freue mich auf hilfreiche Tipps, Martin
Announcement
Collapse
No announcement yet.
Client-Zugriff auf LocalHome
Collapse
X
-
Hallo Martin,
Der Zugriff funktioniert genauso wie über das remote interface. Allerdings muß für die session bean natürlich ein local/local-home interface in der ejb-jar.xml Datei und ein zugehöriger local-jndi-name in der jboss.xml Datei definiert sein.
Also z.b. in ejb-jar.xml
<PRE>
<session >
<description></description>
<display-name>TestSessionBean</display-name>
<ejb-name>TestSession</ejb-name>
<home>de.test.ejb.interfaces.TestSessionHome </home>
<remote>de.test.ejb.interfaces.TestSession&l t;/remote>
<local-home>de.test.ejb.interfaces.TestSessionLocalHom e</local-home>
<local>de.test.ejb.interfaces.TestSessionLoc al</local>
<ejb-class>de.test.ejb.impl.TestSessionBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</PRE>
Im jboss.xml steht für die bean:
<PRE>
<session>
<ejb-name>TestSession</ejb-name>
<jndi-name>test/TestSession</jndi-name>
<local-jndi-name>test/TestSessionLocal</local-jndi-name>
</session>
</PRE>
Der Zugriff erfolgt dann innerhalb der JBoss JVM über den local-jndi-name. Es müssen natürlich die local interfaces benutzt werden:
<PRE>
InitialContext context = new InitialContext();
TestSessionLocalHome home = (TestSessionLocalHome)context.lookup("test/TestSessionLocal");
TestSessionLocal testSession = home.create();
// use bean
testSession.remove();
</PRE>
Die Angabe der INITIAL_CONTEXT_FACTORY und PROVIDER_URL ist innerhalb der JBoss JVM nicht nötig. Außerdem kann man die Referenz einfach casten, ohne PortableRemoteObject.narrow zu benutzen.
Gruß,
Alwi
Comment