我部署了定义了远程ejb的全局模块,但无法从已部署的应用程序访问它们。
这是界面:
{{1}}
由于默认@Ejb找不到bean,如何找到已部署的ejb的jndi名称?只需提及,来自jboss-cli的/ subsystem = naming:jndi-view()不会显示有关已部署模块的任何内容,并且wildfly日志中没有错误。
也许无法在全局模块中定义可注射ejb?
答案 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进行注入。