Java netbeans 7-8,远程ejb的注入

Java netbeans 7-8,远程ejb的注入,java,jakarta-ee,netbeans,ejb,Java,Jakarta Ee,Netbeans,Ejb,您好,我有一个名为“服务EJB”的EJB项目,其中包括: @无状态 @远程(ServiceRemote.class) 公共类服务实现ServiceLocal、ServiceRemote{ […业务代码…] } 在同一项目中,我有本地接口: @Local 公共接口ServiceLocal{} 以及名为“服务库”的类库项目中的远程接口: @Remote 公共接口服务远程{ 公共布尔checkIfOk(); } 我可以毫无问题地单独或在JavaEE应用程序中部署它。关键是我不明白如何告诉NetB

您好,我有一个名为“服务EJB”的EJB项目,其中包括:

@无状态
@远程(ServiceRemote.class)
公共类服务实现ServiceLocal、ServiceRemote{
[…业务代码…]
}
在同一项目中,我有本地接口:

@Local
公共接口ServiceLocal{}
以及名为“服务库”的类库项目中的远程接口:

@Remote
公共接口服务远程{
公共布尔checkIfOk();
}
我可以毫无问题地单独或在JavaEE应用程序中部署它。关键是我不明白如何告诉NetBeans我希望从另一个应用程序调用该bean。例如,我有另一个带有war组件的java EE项目,我在servlet中编写了:

@EJB
专用服务远程服务测试;
但它当然会编译失败,所以我尝试了:

InitialContext ic=new InitialContext();
ServiceRemoteServiceTest=(ServiceRemote)ic.lookup(“ServiceRemote”);
没有运气。。。在NetBeans中,我可以告诉它在哪里使用“服务库”作为参考?我不希望它被添加为库,然后与ear一起部署,我只希望NetBeans正确编译代码

对不起,如果这个问题听起来很傻,但我已经阅读了文档,我不明白我遗漏了什么

---编辑---

我会尽量弄清楚的。“服务ejb”引用“服务库”,所以我将“服务ejb”部署到glassfish。没错,我有:

glassfish\u应用程序\u目录$find-name“服务*”
./_内部/服务ejb
./_内部/service ejb/service-ejb.jar
服务ejb
./service ejb/com/tecytal/components/email/beans/service.class
./service ejb/com/tecytal/components/email/interfaces/local/ServiceLocal.class
./service ejb/service-lib.jar
然后我打开一个JavaEE项目,我们用war模块“MyEngineWAR”将其称为“myEngine”。我试图在“myEngine war”中添加对“service lib”的引用,当然,在本例中,它编译得很好。关键是我可以做任何事情,告诉netbeans不要用war打包“服务库”,但当我部署“myEngine”时,我得到:

glassfish\u应用程序\u目录$find-name“服务*”
./myEngine/lib/service-lib.jar
./_内部/服务ejb
./_内部/service ejb/service-ejb.jar
服务ejb
./service ejb/com/tecytal/components/email/beans/service.class
./service ejb/com/tecytal/components/email/interfaces/local/ServiceLocal.class
./service ejb/service-lib.jar

我不想在我的服务器上有两个service-lib.jar,一个在service ejb中,一个在myEngine中,我不明白如何在netbeans中使用远程ebj,告诉他不要部署同一个lib 3214899213次:)

我建议在一个单独的jar中添加远程服务接口和它引用的所有类(包括异常)。然后在其他两个项目中声明对这个jar的依赖关系

I don't want it to be added as library and then deployed with the ear

我建议只添加包含接口等的服务库作为库,并使用ear部署它,而不是包含实现的整个服务ejb。

对不起,我不明白。服务库包含远程接口和所有需要的类(传输等),我尝试将服务库项目添加到客户机应用程序中(包选项已激活且未激活),但部署总是失败,出现“zip文件为空--无效zip文件…service lib.jar”。如果我必须在我的项目中打包远程ejb,那么有可能调用远程ejb有什么意义呢?只打包远程接口等,而不是实现。因此,我误解了一些事情:要远程调用ejb,我必须打包远程接口是或是,所以如果我有100个使用“服务”的应用程序我将有100个服务远程接口的副本,对吗?是的,这是正确的,AFAIK(我还没有从另一个JavaEE应用程序调用远程EJB。)只要确保远程接口(连同DTO、异常等)在一个单独的jar中,这样您就可以简单地将整个jar打包到EAR/WAR文件中。