我在耳边部署了一个无接口的ejb(MyEar.ear)
@Stateless
@LocalBean
public class MyService{
// stuff
}
耳部部署到jboss-6.0.0.Final
我从服务器jmx控制台确认了JNDI名称:
MyEar /为MyService /无界面
我试图在同一台服务器的战争中(耳朵外)从另一个ejb引用这个ejb:
@EJB(mappedName = "MyEar/MyService/no-interface")
private MyService myService;
我在eclipse中引用了war项目的ear项目,编译成功了.
部署战争时我不断收到ClassNotFoundException异常:
java.lang.ClassNotFoundException:eg.com.test.MyService
为什么战争中的ejb没有从另一只耳朵看到ejb?
编辑:我更新到了以下内容
远程接口
@Remote
public interface MyServiceRemote{
// stuff
}
EJB
@Stateless
public class MyService implements MyServiceRemote{
// stuff
}
ejb在不同的应用程序中的引用
@EJB(mappedName = "MyEar/MyService/remote")
private MyServiceRemote myService;
我在服务器上验证了新的JNDI名称:MyEar / MyService / remote
但我仍然得到相同的异常,这次没有找到接口:
java.lang.ClassNotFoundException:eg.com.test.MyServiceRemote
更新:我需要用战争打包远程接口,它现在正常工作.
最佳答案 EJB需要有一个远程接口,您可以像访问外部WAR的任何远程EJB一样访问它.外部WAR对EAR有一个单独的类加载器,因此它不会找到EAR类.