4

在对 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;
   }

我只是找不到任何关于此的背景信息。像:

  1. 这应该如何工作。
  2. 在没有 NetBeans 的情况下如何启动这样的应用程序。
  3. 你如何在没有 NetBeans 的情况下构建这个结构(iE with Maven)。

是的,我确实使用 NetBeans - 但如果我不能在命令行和/或 Maven 上执行相同的操作,我会感到不满意。

4

2 回答 2

6

这应该如何工作。

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

在没有 NetBeans 的情况下如何启动这样的应用程序。

假设Application Client已经打包部署到了应用服务器上,需要启动Application Client Container(ACC)。该命令是特定于应用程序服务器的。

例如对于 GlassFish,您必须使用该appclient命令。对于 JBoss,请参阅此wiki 页面以了解(巨大的)命令。对于其他应用服务器,请参阅其各自的文档 :)

你如何在没有 NetBeans 的情况下构建这个结构(iE with Maven)。

应用程序客户端是一个常规 JAR,其中包含:

  • 访问 bean 的 Java 类。
  • A META-INF/application-client.xml-(可选)Java EE 应用程序客户端部署描述符。
  • 一个META-INF/MANIFEST.MF引用主类的文件,它声明了 Java 客户端的完整包前缀和类名。
  • 应用服务器特定的部署描述符 -(可选)

资源

于 2010-11-02T15:08:09.607 回答
2

回答我自己的问题(再次)

  1. 这应该如何工作?

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

  2. 在没有 NetBeans 的情况下如何启动这样的应用程序?

    正如 glassfish 上所说,您可以使用appclient. 例如:

    appclient -enableassertions -mainclassuctionapp.TestClient -jar 目标/AuctionApp-ejb.jar

  3. 如果没有 NetBeans(iE 和 Maven),你如何构建这个结构?

    您创建一个普通的可执行 jar。仅当您的远程接口也在库中(无论如何这都是很好的实践)并且该库包含在您的可执行库中时,它才会起作用。您可以使用它maven-assembly-plugin来创建可执行文件。就像你创建一个普通的可执行 jar 一样。

感谢所有的帮助。如果没有 SO,我就不会发现细节。

于 2010-11-02T21:08:11.763 回答