java-ee – 在不同的耳朵中注入无接口ejb

我在耳边部署了一个无接口的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类.

点赞