java - 使 WAR 像 JAR 一样可执行,以在应用程序之外提供命令行界面 (JBoss)

标签 java jakarta-ee command-line command-line-interface war

我有一个 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/

相关文章:

java - 如何根据访问页面的设备生成不同的HTML?

Java Runtime.exec 在 Linux 中因空间而失败

java - 您将 JPopupMenu 的逻辑存储在哪里?

java - 解析 Gif 图像正在降低质量和堆叠帧

java - JCheckBox 的 CheckboxGroup

java - Spring boot @Qualifier 不适用于数据源

eclipse - 无法从eclipse运行tomcat服务器

jakarta-ee - JPA 混淆(托管与非托管实体)

git - 如何在终端中退出 'git status' 列表?

powershell - 如何使用 PowerShell 创建快捷方式