Как найти EJB на сервере WildFly для клиента

1

Я хотел бы знать, как искать EJB, расположенный на сервере WildFly, с удаленного клиента с использованием JNDI.

Вот что я использую для инициализации контекста

jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put(Context.PROVIDER_URL, "http-remoting://192.168.0.15:8080");
jndiProps.put("jboss.naming.client.ejb.context", true);
Context ctx = new InitialContext(jndiProps);

И это консольный вывод при развертывании сервера:

21:08:29,352 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-10) JNDI bindings for session bean named DataBaseServiceImpl in deployment unit deployment "AnalyseExcelServeur.war" are as follows:

java:global/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:app/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:module/DataBaseServiceImpl!serveur.database.DataBaseService
java:jboss/exported/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService
java:global/AnalyseExcelServeur/DataBaseServiceImpl
java:app/AnalyseExcelServeur/DataBaseServiceImpl
java:module/DataBaseServiceImpl

Я попробовал много комбинации, но каждый раз, когда я получаю javax.naming.NameNotFoundException:

javax.naming.NameNotFoundException: exported/AnalyseExcelServeur/DataBaseServiceImpl!serveur.database.DataBaseService -- service jboss.naming.context.java.jboss.exported.exported.AnalyseExcelServeur."DataBaseServiceImpl!serveur.database.DataBaseService"
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:104)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:202)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179)
at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Я не определил имя приложения или имя модуля.

  • Название проекта сервера: AnalyseExcelServeur
  • Имя EJB - DataBaseServiceImpl
  • EJB реализует DataBaseService, который находится в пакете serveur.database

Вот как я объявляю EJB:

@Stateless
@Remote(DataBaseService.class)
public class DataBaseServiceImpl extends SessionDB implements DataBaseService

На стороне клиента реализация интерфейса DataBaseService находится в пакете compte.remote.ejb

Я не знаю, нужно ли мне использовать ejb: /appname/modulename/bean/location или просто /appname/modulename/bean/location или что-нибудь еще...

Может быть, я должен поместить файл в.war, чтобы объявить EJB...

  • 0
    Вы добавили пользователя приложения в jboss?
Теги:
java-ee
ejb
wildfly
jndi

3 ответа

0
Лучший ответ

Я сделал это !! Проблема заключалась в том, что я использовал два разных класса для ejb.

EJB на стороне сервера был в serveur.database.DataBaseService

Интерфейс ejb на стороне клиента был в compte.remote.ejb.DataBaseService

Они должны быть в одном пути, поэтому я перемещаю ejb на стороне клиента в имя пакета serveur.database и это работает!

1

Возможно, вам стоит взглянуть на документацию:

https://docs.jboss.org/author/display/WFLY8/EJB+invocations+from+a+remote+client+using+JNDI

  • 0
    Да, уже сделал, у меня было javax.naming.NoInitialContextException с использованием jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming") я поместил jboss-ejb-client.properties в ресурсы src / main / (может быть, не должно быть здесь?). Вот почему я использовал jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); Которые работают, кстати (у меня есть "Рукопожатие" и серверная сторона реагируют), но URL-адрес ejb не так ...
0

Надеюсь, это поможет разобраться. (Это для поиска очереди JMS, но так же, как вы можете это сделать и для Beans).

http://www.mastertheboss.com/jboss-server/jboss-jms/how-to-code-a-remote-jms-client-for-wildfly-8

благодаря

Ещё вопросы

Сообщество Overcoder
Наверх
Меню