我有玻璃鱼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的异常名称= java:global / Service / allServices / ServiceEJBs!Service1Remote,Remote 3.x interface = Service1Remote,ejb-link = null,lookup =,mappedName = global / Service / allServices / ServiceEJBs!Service1Remote,jndi-name =,refType = session in 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;
}
}
答案 0 :(得分:1)
显然,您对@EJB(mappedname)的定义与@Stateless(mappedNamed)定义中的映射名称不同。
也就是说,如果你替换了正确的映射名称,它甚至都无法工作(因为这些是在两个不同的耳朵部署中)。
实际获得参考,请使用
@EJB(lookup="java:global/Service/allServices/ServiceEJBs!Service1Remote")
而不是
@EJB(mappedName="java:global/Service/allServices/ServiceEJBs!Service1Remote")
答案 1 :(得分:0)
我重新安装了最新版本的glassfish 4.1和JDK1.8.0_25,并且 Maress 表示已更改:
@EJB(lookup="java:global/Service/allServices/ServiceEJBs!Service1Remote")
而不是
@EJB(mappedName="java:global/Service/allServices/ServiceEJBs!Service1Remote")
现在它工作正常。
感谢 Maress :)