以下是步骤:
- 使用 New Project 菜单的 Maven 文件夹创建用于保存接口类的 Java 类库。选择 Maven 文件夹下的 Java 应用程序。
- 按照 NB 的教程创建企业应用程序。唯一的区别是你必须使用新项目菜单的Maven文件夹
- 构建类库
- 确保类库是企业应用程序中的依赖项。
- 运行企业应用程序。NB 将其部署到 GF 服务器
- 使用 Maven 的文件夹创建应用程序客户端。不要在此处使用插入代码NB 的功能来注入无状态 EJB,因为它会崩溃(至少在我的版本中:NB 7.2)。相反,只需复制并粘贴教程中显示的代码。您不需要任何部署/ejb 描述符。
修改应用程序客户端的 POM 以使用 maven-assembly-plugin 获取具有依赖项的 jar。如果不执行此步骤,部署将失败,因为 GF 无法加载接口类。将以下行添加到plugins
选项卡(根据需要更改主类):
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.entapp.entappclient.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
用NB构建应用客户端项目
- 使用 GF 的应用程序客户端命令运行应用程序客户端:
appclient -jar EntAppClient-1.0-SNAPSHOT-jar-with-dependencies.jar
有用的链接:Java EE 埋藏的宝藏: Jason Lee的应用程序客户端容器
重要的提示
为了将客户端部署到其他 JVM ,您必须在每台客户端计算机上安装 appclient并设置 target-server 属性。appclient 似乎有一个非常复杂的结构,你不能简单地通过添加这些行来生成它(加上 EclipseLink 持久性工件):
<dependency>
<groupId>org.glassfish.appclient</groupId>
<artifactId>gf-client</artifactId>
<version>3.1.1</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
将这些工件添加到客户端可以完美编译,但 jar 不起作用。这是可以理解的,因为缺少 sun-acc.xml 文件(该文件是必需的,因为包含 target-server 属性)。因此,我认为唯一的方法是package-appclient
按照链接文档使用脚本。