如何使用@EJB与远程接口“
我有glassfish v4和2个耳朵:
我尝试使用:
@EJB(mappedName="java:global/Service/allServices/ServiceEJBs!Service1Remote")
Service1Remote service1Remot;
但我得到错误:
导致:com.sun.faces.spi.InjectionProviderException:com.sun.enterprise.container.common.spi.util.InjectionException:尝试注入远程ejb-ref name = java:global / Service / allServices / ServiceEJBs的异常!Service1Remote ,Remote 3.x interface = Service1Remote,ejb-link = null,lookup =,mappedName = global / Service / allServices / ServiceEJBs!Service1Remote,jndi-name =,refType =进入类的会话com.manage.application.WebApplication:null
但是当我使用:
Service1Remote remote= (Service1Remote) new InitialContext().lookup("java:global/Service/allServices/ServiceEJBs!Service1Remote");
它工作正常。
EJB:
@Remote
public interface Service1Remote{
public long getCount(int itemId);
}
@Stateless(name = "ServiceEJBs" , mappedName ="ServiceEJBs")
public Service1Bean implements Service1Remote{
public long getCount(int itemId){
...............
return 100000999;
}
}
显然你的@EJB(mappedname)定义与@Stateless(mappedNamed)定义中的映射名称不同。
也就是说,如果您替换了正确的映射名称(因为它们在两个不同的耳部署中),它甚至不会工作。
要真正获得参考,请使用
@EJB(lookup="java:global/Service/allServices/ServiceEJBs!Service1Remote")
代替
@EJB(mappedName="java:global/Service/allServices/ServiceEJBs!Service1Remote")
我重新安装了最新版本的glassfish 4.1和JDK1.8.0_25,正如Maress所说的那样:
@EJB(lookup="java:global/Service/allServices/ServiceEJBs!Service1Remote")
代替
@EJB(mappedName="java:global/Service/allServices/ServiceEJBs!Service1Remote")
现在它工作正常。
谢谢女士 :)
链接地址: http://www.djcxy.com/p/58783.html