Я пытаюсь настроить «клиент» сервера Jboss (версия 5.1.0) для использования удаленных EJB с другого сервера Jboss (10.90.0.91) , но я не могу это сделать, используя файл jndi.properties на клиенте Jboss.Я не могу настроить свои jndi.properties для доступа к удаленным EJBs на Jboss 5
я могу получить удаленный EJB с помощью этого простого кода на моем клиенте:
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);
}
Это прекрасно работает.
Теперь я хотел бы настроить клиент Jboss с этими свойствами. Но если бы я изменить существующий файл jndi.properties локализованный на server/{application}/conf/
из:
# 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
To:
# 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
я получаю некоторые ошибки, когда я запускаю клиент JBoss (видимо, я не знаю, что Я делаю :)):
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)
[...]
И в финале:
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**
Итак, я думаю, что не могу касаться уже существующих свойств JNDI в этом файле.
Если файл jndi.properties не может быть изменен, так как он используется самим JBoss, в каком месте ставит мои настройки поиска JNDI на удаленные EJB в Jboss 5? Как настроить файл jndi.properties, который будет доступен в пути к классам приложений, не помещать файл jndi.properties внутри моего WAR-файла?
Спасибо!
Вы упомянули клиента jboss, но я думаю, что вы имеете в виду сервер jboss. Таким образом, вы хотите, чтобы server1 был клиентом server2, где server2 предоставляет EJB. Если это правда, я не думаю, что вы можете изменить jndi.properties, поскольку это для конфигурации server1. В рамках вашей войны, запущенной на сервере 1, вам понадобится нечто похожее на образец клиентского кода. Эти свойства в вашем примере клиентского кода могут быть в собственном файле конфигурации. –
Привет! Да, это «клиент» сервера jboss. В некоторых документах о Jboss сказано, что конфигурация этих свойств возможна в jndi.properties 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
Оба сервера работают под управлением JBoss AS 5.x? –