在Glassfish上使用@EJB注释和Maven的java应用程序客户端
NetBeans站点how to create Application Client中有一个使用简单项目(没有Maven)的示例。需要4个项目(EJB、EAR、Lib、Program)。本教程很简单,效果很好
我想问一下如何对Maven做同样的事情?我无法正确获取所有依赖项,所以当我尝试调用EJB方法时,它会给我NullPointerException
。谁能告诉我,需要完成的关键步骤(使用NetBeans优先)?因为我很困惑,需要创建多少个项目?我知道,我需要应用程序项目、EAR和EJB项目,就这样?这些项目pom中需要编写哪些特殊配置。xml文件
EDIT1:
我不想显式地使用JNDI,我希望能够使用@EJB注释
# 1 楼答案
以下是步骤:
修改应用程序客户机的POM,以便使用maven assembly插件获取具有依赖项的jar。如果不执行此步骤,部署将失败,因为GF无法加载接口类。将以下行添加到
plugins
选项卡(根据需要更改主类):使用NB构建应用程序客户端项目
appclient -jar EntAppClient-1.0-SNAPSHOT-jar-with-dependencies.jar
有用的链接:Java EE's Buried Treasure: the Application Client Container作者:Jason Lee
重要提示
为了将客户端部署到oher JVMyou have to install the appclient on each client machine并设置目标服务器属性。appclient似乎有一个非常复杂的结构,您不能简单地通过添加这些行(加上EclipseLink持久性工件)来生成它:
将这些工件添加到客户机可以完美地编译,但jar无法工作。这是可以理解的,因为缺少文件sun-acc.xml(该文件是必需的,因为它包含目标服务器属性)因此,我认为唯一的方法是根据链接文档使用
package-appclient
脚本# 2 楼答案
有一个有用的EJB FAQ提到了如何通过使用
ejb-ref
和sun-web.xml
一起使用@EJB
来访问远程EJB,或者现在它是一个glassfish-web.xml
作为以下链接:-What if I have multiple instances of the Appserver running and I want to access a Remote EJB component between them?
如果您想比较
ejb-ref
和ejb-local-ref
,您可以在What is the relationship between @EJB and ejb-ref/ejb-local-ref?上查看更多信息我希望这能有所帮助