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.
Autor: Daniel Ramotowski
