Próbuję konfiguracji serwera JBoss „klient” (wersja 5.1.0), aby korzystać z funkcji zdalnego EJBs z innego serwera JBoss (10.90.0.91) , ale nie mogę tego zrobić, używając pliku jndi.properties na kliencie Jboss.nie mogę skonfigurować moje jndi.properties na zdalny dostęp EJBs na JBoss 5
można uzyskać zdalny EJB za pomocą tego prostego kodu na mojego klienta:
InitialContext ctx = null;
try {
Hashtable<String, String> jndiProps = new Hashtable<String, String>();
jndiProps.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
jndiProps.put(InitialContext.PROVIDER_URL, "jnp://10.90.0.91:1099");
ctx = new InitialContext(jndiProps);
return ctx.lookup(jndiName);
} catch (NamingException e) {
throw new RuntimeException(e);
}
To działa prawidłowo.
Teraz chciałbym, aby skonfigurować klienta JBoss Dzięki tej właściwości. Ale jeśli mogę edytować istniejący plik jndi.properties zlokalizowaną na server/{application}/conf/
od:
# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
Do:
# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=jnp://10.90.0.91:1099
otrzymam jakieś błędy podczas uruchamiania klienta JBoss (podobno, nie wiem co robię :)):
2016-08-19 10:17:41,645 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Start: name=HASessionStateService state=Create
javax.naming.NameAlreadyBoundException: Default
at org.jnp.server.NamingServer.bind(NamingServer.java:209)
at org.jnp.server.NamingServer.bind(NamingServer.java:167)
[...]
2016-08-19 10:17:42,767 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Start: name=ProfileServiceProxyFactory state=Create
javax.naming.NameAlreadyBoundException: ProfileService
at org.jnp.server.NamingServer.bind(NamingServer.java:209)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[...]
2016-08-19 10:17:44,778 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (main) Error installing to Start: name=jboss:service=ClientUserTransaction state=Create mode=Manual requiredState=Installed
javax.naming.NameAlreadyBoundException: UserTransaction
at org.jnp.server.NamingServer.bind(NamingServer.java:209)
at sun.reflect.GeneratedMethodAccessor487.invoke(Unknown Source)
[...]
A w finale:
2016-08-19 10:17:51,993 ERROR [org.jboss.system.server.profileservice.ProfileServiceBootstrap] (main) Failed to load profile: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
DEPLOYMENTS MISSING DEPENDENCIES:
Deployment "ProfileServiceInvocationHandler" is missing the following dependencies:
Dependency "ProfileServiceProxyFactory" (should be in state "Configured", but is actually in state "**ERROR**")
Dependency "ProfileServiceProxyFactory" (should be in state "Configured", but is actually in state "**ERROR**")
DEPLOYMENTS IN ERROR:
Deployment "jboss:service=ClientUserTransaction" is in error due to the following reason(s): javax.naming.NameAlreadyBoundException: UserTransaction
Deployment "HASessionStateService" is in error due to the following reason(s): javax.naming.NameAlreadyBoundException: Default
Deployment "ProfileServiceProxyFactory" is in error due to the following reason(s): javax.naming.NameAlreadyBoundException: ProfileService, **ERROR**
Sądzę, że nie mogę dotknąć już istniejących właściwości JNDI w tym pliku.
Jeśli nie można zmienić pliku jndi.properties, ponieważ jest on używany przez samą aplikację JBoss, w której lokalizacji umieszcza moje ustawienia wyszukiwania JNDI w zdalnych komponentach EJB w ramach Jboss 5? Jak mogę skonfigurować plik jndi.properties, aby był dostępny w ścieżce klasy aplikacji bez umieszczania pliku jndi.properties w pliku WAR?
Dzięki!
Wspomniałeś klienta jboss, ale myślę, że masz na myśli serwer jboss. Więc chcesz, aby serwer1 był klientem serwera2, gdzie serwer2 udostępnia komponenty EJB. Jeśli to prawda, nie sądzę, że można zmienić plik jndi.properties, ponieważ dotyczy to konfiguracji serwera1. Podczas twojej wojny uruchomionej na serwerze1 potrzebujesz czegoś podobnego do przykładowego kodu klienta. Te właściwości w przykładowym kodzie klienta mogą znajdować się w jego własnym pliku konfiguracyjnym. –
Cześć! Tak, to "klient" serwera jboss. Niektóre dokumenty na temat Jbossa mówiły, że konfiguracja tych właściwości jest możliwa w jndi.properties w Jboss: https://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/Contexts-Obtaining_a_Context_using_InitialContext.html#Obtaining_a_Context_using_InitialContext- A_sample_jndi.properties_file – Dherik
Czy oba serwery działają w JBoss AS 5.x? –