Dobieramy się do JNDI

post_img

Dość często w celach testowych muszę wywołać komponent EJB po interfejsie zdalnym i zawsze w takim momencie brakuje mi kompendium informacji na temat ustawiania właściwości kontekstu, specyficznych dla dostawcy serwera aplikacji.
To powód, dla którego piszę ten post, a Ty go zapewne czytasz :).

Nie wdając się w dalsze dyskusje, poniżej charakteryzuję ustawianie właściwości kontekstu JNDI na różnych serwerach aplikacji.
Zakładam przy tym, że każdy z serwerów jest zainstalowany pod dobrze znanym adresem „localhost” oraz, że usługi są  skonfigurowane na portach domyślnych.

Serwer / właściwość Context.INITIAL_CONTEXT_FACTORY Context.PROVIDER_URL Context.URL_PKG_PREFIXES
SAP NetWeaver 7.1 com.sap.engine.services.jndi.InitialContextFactoryImpl p4://localhost:50004 com.sap.engine.services
IBM Websphere 7 com.ibm.websphere.naming.WsnInitialContextFactory corbaloc:iiop:localhost:2809 com.ibm.ws.naming
JBoss 4.x, 5.x org.jnp.interfaces.NamingContextFactory jnp://localhost:1099 org.jboss.naming:org.jnp.interfaces

Właściwości te możemy przekazać jako mapę podczas tworzenia kontekstu JNDI.
Możemy je również zdefiniować w pliku o nazwie jndi.properties:

Postać pliku dla SAP NetWeaver 7.1

java.naming.factory.initial=com.sap.engine.services.jndi.InitialContextFactoryImpl
java.naming.provider.url=p4://localhost:50004
java.naming.factory.url.pkgs=com.sap.engine.services

Postać pliku dla IBM Websphere Application Server 7

java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
java.naming.provider.url=corbaloc:iiop:localhost:2809
java.naming.factory.url.pkgs=com.ibm.ws.naming

Postać pliku dla JBoss

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://localhost:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

Aby w pełni cieszyć się możliwościami wywołań zdalnych komponentów, przydadzą się nam jeszcze biblioteki z implementacją JNDI.

  • Jeżeli używamy SAP NetWeaver Develiper Studio, na ścieżce klas potrzebna nam będzie biblioteka com.sap.engine.clientapis_2.0.0.090709123112.jar, którą znajdziemy w katalogu plugins.
  • W przypadku IBM Websphere Application Server 7 będziemy potrzebowali bibliotek com.ibm.ws.ejb.thinclient_7.0.0.jar oraz com.ibm.ws.orb_7.0.0.jar, które znajdziemy w katalogu AppServer\runtimes.
  • W przypadku serwera JBoss 4.2.X będzie potrzebna biblioteka jbossall-client.jar,którą znajdziemy w katalogu client.
  • W przypadku serwera JBoss 5.X będą potrzebne właściwie wszystkie biblioteki z katalogu client.

Miłej zabawy!!! 🙂

PS. Jako ciekawostkę dodam, że wywołując zdalne metody komponentów EJB zainstalowanych na IBM Websphere warto zapoznać się z narzędziem createEJBStubs.
Jest ono dostarczane razem z serwerem aplikacji Websphere.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *