使用@ejb注释进行远程查找

Jav*_*eek 5 java ejb

我有两个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将其绑定到客户端ear实例.我如何使用注释@EJE配置jndi属性,即provider_url,初始上下文属性?

rod*_*tti 5

我找到了一个回答你问题的论坛帖子: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;
Run Code Online (Sandbox Code Playgroud)


Rav*_*edi 1

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

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

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

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