我有一个 servlet,它有一些逻辑,并且像每个 servlet 一样通过浏览器使用。现在我正在寻找方法来完成与 servlet 相同的操作,但它应该像 CLI 一样工作。 CLI 将请求发送到部署在 JBoss 上的逻辑(war 文件中的类)并在终端(命令行)上打印响应。它应该触发相同的逻辑,并且所有内容都应该放在这一个 war 文件中。
假设我将编写提供此功能的 java 代码。它应该被编译成jar并放入war中,然后这个jar应该从war中启动。它不必是 servlet。唯一的要求是所有内容都应该在这个 war 文件中。 CLI 应通过一行调用,例如 java -cp jarfileinwar com.blah.Main。
逻辑应该在部署了所有内容的 JBoss JVM 上工作,它应该像 servlet 一样工作,但调用方法应该是 CLI。
问候
最佳答案
可执行 jar 文件的结构与 war 文件的结构不同,因此我认为您尝试创建可执行 war 文件不会成功。
但是,您可以将所需的类和 jar 依赖项中的类重新打包到一个大的“uber jar”中,然后通过属性 list 条目使该可执行文件成为可执行文件。
手动执行此操作并不简单,因此我建议使用构建工具来完成此操作。 Maven 有两个插件 - Shade 插件和较新的(我认为)Maven Assembly 插件,可以很容易地做到这一点。
使用 Maven 的一个好处是,您可以在同一个项目中拥有两个不同的目标 - 一个用于构建 war 文件,另一个用于构建可执行 jar 文件。
关于java - 使 WAR 像 JAR 一样可执行,以在应用程序之外提供命令行界面 (JBoss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14126550/