6

我有 2 个 Jboss 5 的服务器实例,每个实例都部署有两个 EAR。说 Client.Ear 和 Server.Ear。Server Ear 暴露了一些 ejb。我想通过注释将其注入 ClientEar。使用 JNDI 查找我做得很好并且可以正常工作。但是使用注释我总是得到 javax.naming.NamingException。但是,当跨部署工件注入会话 bean 时,必须使用全局 JNDI 名称进行注入,我也使用它,例如 @EJB(mappedName ="java:global/Server/component/ApplicationService!com.test.server.ApplicationServiceInterface")

但似乎我没有提供远程服务器的 provider_url 以将其绑定到客户端耳朵实例。我如何使用注释@EJB 配置jndi 属性,即provider_url,初始上下文属性?

4

3 回答 3

6

我找到了一个回答您问题的论坛帖子: https ://community.jboss.org/thread/228789

在其中他指的是 https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+server+instance

并使用他使用的 @EJB 注释完成 jndi 查找

@EJB(lookup = "ejb:earname/modulename/BeanClass!fully.qualified.RemoteInterface")
private RemoteInterface bean;
于 2013-10-29T12:14:41.423 回答
1

@EJB只有当应用程序部署在同一个服务器实例中时,才能使用注解。@EJB如果您尝试进行跨服务器实例调用或远程服务器调用,注释将不起作用。因此,在您的情况下,注释注入将不起作用。

那么,有哪些解决方案呢?

选项 1)使用旧式程序化 JNDI 查找

选项 2)根据创建托管 beanCDI (Context Dependency Injection)并在那里配置所有 JNDI 属性。并@inject进入managed bean您的客户。

于 2013-05-13T09:25:48.210 回答
1

我知道这有点太晚了。包括这个以供进一步参考

您可以使用可移植的查找字符串格式 EJB 使用 RMI over IIOP 并具有标准映射 EJB 体系结构到 CORBA 因此您可以通过服务器主机和端口号查找

@EJB(lookup = "corbaname:iiop:example.com:3701#java:global/mycrud/mycrud-dss-ejb/InformeBean!com.myorg.ejb.InformeRemote")

参考资料: https ://docs.oracle.com/javase/8/docs/technotes/guides/idl/corba.html https://docs.oracle.com/javase/8/docs/technotes/guides/idl/INStutorial .html

于 2015-12-28T01:53:32.817 回答