将war文件转换为可执行文件

时间:2011-05-29 12:04:21

标签: java java-ee packaging

我的公司开发了一个Web应用程序(J2EE环境/ Tomcat服务器),并希望将其作为产品销售。客户可以将此产品用作基本版或高级版。在高级版中,客户有一些额外的功能(可能是一些额外的链接)。这种区别是基于序列密钥进行的。

在讨论上述事情时,我只是一个倾听者。

是否可以解决上述问题?我们如何将war文件转换为exe文件并嵌入逻辑以区分高级版或基本版。

2 个答案:

答案 0 :(得分:3)

WAR是 web 应用程序存档。它应该在带有servlet容器的Web服务器上执行。一个可执行的JAR需要一个带有main()方法的类,但是一个Web应用程序通常没有,因为这是servlet容器的责任,而不是Web应用程序。通常,WAR按原样分发,serveradmin负责将其部署到servlet容器。如有必要,您可以包含一些描述如何为各种容器执行此操作的文档。

如果您真的打算出于某种不明显的原因将Web应用程序作为桌面应用程序出售,那么您最好的选择是包含一个像Jetty这样的嵌入式servlet容器,并沿着它运送一个带有main()方法的类。创建嵌入式servlet容器的实例,将WAR文件部署到它并运行servlet容器。这可以反过来包含在可执行的JAR中。

或者,您也可以在互联网上的某个地方托管它并提供特定的登录信息。

答案 1 :(得分:3)

  

我们如何将war文件转换为exe文件并嵌入逻辑以区分高级版或基本版。

这是两个不同的要求,彼此无关。

如果您有一个Web应用程序,您可以使用网页输入序列号(例如Jira就是这样),或者您也许可以在Context.xml中写入密钥(或密钥文件的文件名),让servlet读取该上下文参数。根据密钥,应用程序可以允许或不允许某些功能。

至于转换为可执行文件,对可执行文件有多种解释。我认为“战争”文件足够可执行 - 将其转储到tomcat中并运行。

如果您希望它是独立的,您可以提供预先部署您的应用程序的tomcat分发(再次,像Jira一样),或使用Jetty嵌入式容器。虽然这可能不适合繁重的工作负载。

您甚至可以尝试使用gjc(Gnu Java编译器)将jetty +您的Web应用程序转换为本机exe,但我怀疑它是否会像正常部署的版本一样工作。

我建议您通过上下文参数注入密钥,或者创建一个管理页面n,您可以输入密钥。