Jakarta ee 带有main()的EJB-这是怎么回事?

Jakarta ee 带有main()的EJB-这是怎么回事?,jakarta-ee,ejb,maven,application-client,Jakarta Ee,Ejb,Maven,Application Client,在对Sun的EJB进行最初的培训时,我遇到了一个相当奇怪的概念,即企业应用程序客户端,它具有依赖注入的概念和一个主类: @javax.ejb.EJB private static auctionsystem.ejb.AuctionManagerRemote auctionManager; public static void main (String[] args) { TestClient.logger.entering (TestClient.TAG, "main");

在对Sun的EJB进行最初的培训时,我遇到了一个相当奇怪的概念,即企业应用程序客户端,它具有依赖注入的概念和一个主类:

@javax.ejb.EJB
private static auctionsystem.ejb.AuctionManagerRemote auctionManager;

public static void main (String[] args)
   {
   TestClient.logger.entering (TestClient.TAG, "main");

   final String message = "hello";
   TestClient.logger.log (Level.INFO, "Sending {0}", message);
   final String reply = auctionManager.communicationTest (message);
   TestClient.logger.log (Level.INFO, "Received {0}", reply);

   TestClient.logger.exiting (TestClient.TAG, "main");
   return;
   }
我就是找不到这方面的背景资料。比如:

  • 这是怎么回事
  • 如果没有NetBeans,如何启动这样的应用程序
  • 如何在没有NetBeans(即使用Maven)的情况下构建此构造
  • 是的,我确实使用NetBeans,但如果我不能在命令行和/或Maven上执行相同的操作,我会感到不满意

    这是怎么回事

    这必须是Java EE应用程序客户端(另一种类型的Java EE模块,允许包装Java SE应用程序,将其部署到应用程序服务器,并利用部署的EJB、平台服务和资源)Java EE应用程序客户机主类在
    静态
    注释字段或方法中提供支持

    如果没有NetBeans,如何启动这样的应用程序

    假设应用程序客户端已打包并部署到应用程序服务器,则需要启动应用程序客户端容器(ACC)。该命令特定于应用程序服务器

    例如,对于GlassFish,您必须使用命令。对于JBoss,请参见(巨大的)命令。有关其他应用程序服务器,请参阅其各自的文档:)

    如何在没有NetBeans(即使用Maven)的情况下构建此构造

    应用程序客户端是一个普通的JAR,包含:

    • 访问bean的Java类
    • 一个
      META-INF/application client.xml
      -(可选)JavaEE应用程序客户端部署描述符
    • 引用主类的
      META-INF/MANIFEST.MF
      文件,该文件说明Java客户端的完整包前缀和类名
    • 特定于应用服务器的部署描述符-(可选)
    资源
    • JavaEE教程
    • NetBeans教程
    • 使用WebLogic Server开发应用程序
    • 玻璃鱼发展指南
      • 回答我自己的问题(再次)

      • 这是怎么回事

        main()类部署到应用程序服务器,该服务器注入依赖项并调用main()。在glassfish上,使用特殊命令(
        appclient
        )完成部署

      • 如果没有NetBeans,您如何启动这样的应用程序

        如glassfish上所述,您可以使用
        appclient
        启动客户端。例如:

        appclient-enableassertions-mainclass auctionapp.TestClient-jar目标/auctionapp-ejb.jar

      • 如何在没有NetBeans的情况下(即使用Maven)构建此构造

        您可以创建一个普通的可执行jar。只有当您的远程接口也在库中(这是一个很好的实践)并且该库包含在您的可执行库中时,它才会起作用。您可以使用
        maven汇编插件
        创建可执行文件。与创建普通可执行jar的方法相同


      • 谢谢你的帮助。如果没有它,我就不会知道细节。

        对于与Sun的工具无关的基本介绍(是否有人讨厌他关于J2EE教程的介绍):@Tom Yeah,这有点烦人。实际上,除了Java EE教程之外,我根本找不到Java EE 5+(即使用DI)的好的在线资源。似乎没有办法用JBoss 4运行客户端,但下面是如何用JBoss 5实现的:如果将应用程序客户端和web模块打包到
        ear
        package中,如何将应用程序客户端注入web模块以访问它?你们知道我们是如何使用web模块中的
        @EJB
        注入EJB的,我该如何使用应用程序客户机呢?