带有ejbs的全局模块

时间:2018-11-27 17:43:12

标签: ejb wildfly jndi

我部署了定义了远程ejb的全局模块,但无法从已部署的应用程序访问它们。

这是界面:

{{1}}

由于默认@Ejb找不到bean,如何找到已部署的ejb的jndi名称?只需提及,来自jboss-cli的/ subsystem = naming:jndi-view()不会显示有关已部署模块的任何内容,并且wildfly日志中没有错误。

也许无法在全局模块中定义可注射ejb?

1 个答案:

答案 0 :(得分:0)

绑定到EJB的portable JNDI name取决于bean的部署方式和某些配置(例如,部署描述符)。

除了可移植的JNDI名称外,JBoss还提供来自java:jboss/exported名称空间内的远程VM的访问。

为方便起见,JBoss的默认日志记录在部署时在控制台上和服务器日志文件中显示了JNDI名称,绑定到EJB的JNDI名称。记录器处于org.jboss.as.ejb3.deployment级的INFO

示例:

12:00:00,000 INFO  [org.jboss.as.ejb3.deployment] (MSC service thread 1-6) WFLYEJB0473: JNDI bindings for session bean named 'MyBean' in deployment unit 'subdeployment "my-beans.jar" of deployment "my-app.ear"' are as follows:

java:global/my-app/my-beans/MyBean!my.package.MyBeanRemote
java:app/my-beans/MyBean!my.package.MyBeanRemote
java:module/MyBean!my.package.MyBeanRemote
java:jboss/exported/my-app/my-beans/MyBean!my.package.MyBeanRemote

要访问EJB,可以进行手动JNDI查找或使用@EJB批注lookup method进行注入。