在从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 - 但是如果我不能在命令行和/或Maven上执行相同的操作,我也不满意。
答案 0 :(得分:5)
这应该如何运作。
这必须是Java EE 应用程序客户端(另一种类型的Java EE模块,它允许包装Java SE应用程序,将其部署到应用程序服务器并使用已部署的EJB,平台服务和资源)和Java EE 应用程序客户端 Main-Class支持static
带注释的字段或方法中的injection of resources。
如何在没有NetBeans的情况下启动此类应用程序。
假设应用程序客户端打包并部署到应用程序服务器,您需要启动应用程序客户端容器(ACC)。该命令是特定于应用程序服务器
例如使用GlassFish,您必须使用appclient
命令。对于JBoss,请参阅此wiki page以获取(huge)命令。对于其他应用服务器,请参阅各自的文档:)
如何在没有NetBeans(i.E. with Maven)的情况下构建此构造。
应用程序客户端是包含以下内容的常规JAR:
META-INF/application-client.xml
- (可选)Java EE应用程序客户端部署描述符。META-INF/MANIFEST.MF
文件,它指出Java客户端的完整包前缀和类名。答案 1 :(得分:2)
回答我自己的问题(再次)
这应该如何运作?
main()类部署到应用程序服务器,该服务器注入依赖项并调用main()。使用特殊命令(appclient
)完成glassfish部署。
如何在没有NetBeans的情况下启动此类应用程序?
正如在glassfish上所说,你使用appclient
启动客户端。例如:
appclient -enableassertions -mainclass auctionapp.TestClient -jar target / AuctionApp-ejb.jar
如何在没有NetBeans(i.E. with Maven)的情况下构建此构造?
您创建一个普通的可执行jar。它只有在您的远程接口也在库内时才能工作(无论如何都是很好的实践)并且这个库包含在您的可执行库中。您可以使用maven-assembly-plugin
创建可执行文件。就像创建普通的可执行jar一样。
感谢所有帮助。如果没有,我就不会发现细节。