EJB über normalen GUI-Client ansprechen

Vatar

Erfahrenes Mitglied
Moin Moin
Meine Frage wäre wie ich über einen Client an den InitialContext des Servers herankomme (über den ich ja dann die EJBs ansprechen kann).
Wir nutzen den WebSphere 5.1 und bisher initialisieren wir den Context innerhalb der Webanwendung mit
Code:
Context.INITIAL_CONTEXT_FACTORY = com.ibm.websphere.naming.WsnInitialContextFactory
Wenn ich dieselbe Variante für den Client nutze funktioniert es nicht.
 
Hallo!

um von einem Client aus eine EJB anzusprechen gibt es mehrere Möglichkeiten. Eine wäre dann beispielsweise die von dir genannte vom Client aus einen JNDI Lookup durchzuführen, dass Home-Interface zu suchen und damit eine entsprechende Remote-Referenz zu besorgen und anschließend an dieser Remote-Referenz den Remote-Methodenaufruf durchzuführen.

Um vom client aus nun ins entfernte JNDI zu gucken musst du natürlich zunächst mal eine entsprechende Verbindung aufbauen. Das macht man in der Regel über ein entsprechendes jndi.properties File im Classpath das die EJB-Container spezifischen JNDI Zugangsdaten enthält.

In der Regel liegt jeder Applikationsserver-Distribution irgendwo ein entsprechends jndi.properties bei, einfach mal suchen. Zusätzlich muss man noch in der Regel ein entsprechendes jar-File mit einer passenden Implementierung der JNDI ContextFactory in den Classpath legen.

Bei JBoss reicht beispielsweise ein jndi.properties File wie dieses hier:
Code:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://loclhost:1099

Sowas ähnliches gibt es mit Sicherheit auch vom WAS.

Ansonsten reicht dann in der Regel sowas:
Code:
        InitialContext ctx = new InitialContext();
        SomeServiceBeanHome someServiceBeanHome = (SomeServiceBeanHome) ctx.lookup(SomeServiceBeanHome.JNDI_NAME);
        SomeServiceBean someServiceBean = someServiceBeanHome.create();

Gruss Tom
 

Neue Beiträge

Zurück