簡體   English   中英

使用@ejb注釋進行遠程查找

[英]Remote lookup using @ejb annotation

我有兩個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,初始上下文屬性?

我找到了一個回答你問題的論壇帖子: 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;

僅當應用程序部署在同一服務器實例中時,才能使用@EJB批注。 如果您嘗試進行跨服務器實例調用或遠程服務器調用,則@EJB注釋將不起作用。 因此,在您的情況下,注釋注入將不起作用。

那么,有哪些解決方案?

選項1)使用舊式程序化JNDI查找

選項2)根據CDI (Context Dependency Injection) 創建托管bean,並在那里配置所有JNDI屬性。 @injectmanaged bean到您的客戶端。

我知道這太晚了。 包括這個以供進一步參考

您可以使用可移植查找字符串格式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的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM