gpt4 book ai didi

java - 在 Glassfish 上使用 @EJB 注释和 Maven 的应用程序客户端

转载 作者:行者123 更新时间:2023-12-04 05:06:36 24 4
gpt4 key购买 nike

NetBeans 站点how to create Application Client 中有一个示例使用简单的项目(没有 Maven)。需要 4 个项目(EJB、EAR、Lib、程序)。本教程很简单,而且效果很好。

我想问一下如何对 Maven 做同样的事情?我无法正确获取所有依赖项,因此当我尝试调用 EJB 方法时,它给了我 NullPointerException .谁能告诉我需要完成的关键步骤(最好使用 NetBeans)?因为我很困惑,关于需要创建多少项目?我知道,我需要应用程序项目、EAR 和 EJB 项目,仅此而已?这些项目 pom.xml 文件中需要编写哪些特殊配置?

EDIT1:

我不想显式 JNDI 我希望能够使用 @EJB 注释。

最佳答案

以下是步骤:

  • 使用 New Project 菜单的 Maven 文件夹创建用于保存接口(interface)类的 Java 类库。选择 Maven 文件夹下的 Java 应用程序。
  • 按照 NB 的教程创建企业应用程序。唯一的区别是你必须使用新项目菜单
  • 的Maven文件夹。
  • 搭建类库
  • 确保类库是企业应用程序中的依赖项。
  • 运行企业应用程序。 NB会部署到GF服务器
  • 使用 Maven 的文件夹创建应用程序客户端。不要在此处使用插入代码 NB 的功能来注入(inject)无状态 EJB,因为它会崩溃(至少在我的版本中:NB 7.2)。相反,只需复制并粘贴教程中显示的代码。您不需要任何部署/ejb 描述符。
  • 修改应用程序客户端的 POM 以使用 maven-assembly-plugin 获取具有依赖项的 jar。如果不执行此步骤,部署将失败,因为 GF 无法加载接口(interface)类。将以下行添加到 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's Buried Treasure: the Application Client Container通过杰森李

    重要提示

    为了将客户端部署到其他 JVM you have to install the appclient on each client machine并设置目标服务器属性。 appclient 似乎有一个非常复杂的结构,你不能简单地通过添加这些行来生成它(加上 EclipseLink 持久性 Artifact ):
    <dependency>
    <groupId>org.glassfish.appclient</groupId>
    <artifactId>gf-client</artifactId>
    <version>3.1.1</version>
    <type>pom</type>
    <scope>compile</scope>
    </dependency>

    将这些 Artifact 添加到客户端可以完美编译,但 jar 不起作用。这是可以理解的,因为缺少 sun-acc.xml 文件(该文件是必需的,因为包含 target-server 属性)。 因此,我认为唯一的方法是使用 package-appclient根据链接文档 编写脚本.

    关于java - 在 Glassfish 上使用 @EJB 注释和 Maven 的应用程序客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15461053/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com