如何创建(部署)多项目?
How can I create (deploy) multiproject?
我有三个池(应用程序),它们按顺序转换数据并通过套接字(或获取,post - 没关系)相互通信。我有 servlet,它接受数据并将数据传输到起始池之一。我怎样才能 运行 将它们全部放在一个容器中(tomcat,wildfly)?制作 3 个罐子、1 个 war 神器或其他东西?
应该写在 pom.xml?
嗯,模块之间的通信很重要:
如果您对他们通过直接 local API 调用感到满意,您必须构建一个 war 包含三个模块(通常每个模块一个 JAR)。
但是如果你想要一个分布式应用程序,通信应该是远程(通过TCP套接字,RMI 、HTTP、ReST 等)。这样,您可以为每个模块构建一个程序集:如果模块包含 servlets/JSPs,它应该是一个 WAR,如果不包含,则应该是一个 JAR。
在 Maven 中,这转换为:
- 创建一个包含所有模块的父项目,每个模块有
packaging=pom
和一个<module>
声明。
- 然后,为每个模块创建一个模块项目(在父级中),
package=jar
或 war
(取决于上述决定)。
- 在它们之间设置适当的依赖关系,以防您需要公开它们的 public API 作为 inter-communicate.
的方式
根据模块的类型部署和启动每个模块也很重要(正如@Carlitos Way 评论的那样):
- WARs 必须部署到 servlet 容器(例如 Tomcat)。
- 可以使用 shell 脚本从 command-line 启动 JAR。
启动监听端口的应用程序
每个 non-web 模块都应该有一个 main class ,它将负责从命令行接收所需的参数(在至少端口号)并开始监听 class - 不管它是什么。
package module.cmd;
public class MyMainClass
{
public static void main(String[] arguments)
{
int port=Integer.parseInt(argument[0]);
new MyListener(port).start();
}
}
到运行它,执行就够了:
mvn exec:java -Dexec.mainClass="module.cmd.MyMainClass" -Dexec.args="8001"
我有三个池(应用程序),它们按顺序转换数据并通过套接字(或获取,post - 没关系)相互通信。我有 servlet,它接受数据并将数据传输到起始池之一。我怎样才能 运行 将它们全部放在一个容器中(tomcat,wildfly)?制作 3 个罐子、1 个 war 神器或其他东西? 应该写在 pom.xml?
嗯,模块之间的通信很重要:
如果您对他们通过直接 local API 调用感到满意,您必须构建一个 war 包含三个模块(通常每个模块一个 JAR)。
但是如果你想要一个分布式应用程序,通信应该是远程(通过TCP套接字,RMI 、HTTP、ReST 等)。这样,您可以为每个模块构建一个程序集:如果模块包含 servlets/JSPs,它应该是一个 WAR,如果不包含,则应该是一个 JAR。
在 Maven 中,这转换为:
- 创建一个包含所有模块的父项目,每个模块有
packaging=pom
和一个<module>
声明。 - 然后,为每个模块创建一个模块项目(在父级中),
package=jar
或war
(取决于上述决定)。 - 在它们之间设置适当的依赖关系,以防您需要公开它们的 public API 作为 inter-communicate. 的方式
根据模块的类型部署和启动每个模块也很重要(正如@Carlitos Way 评论的那样):
- WARs 必须部署到 servlet 容器(例如 Tomcat)。
- 可以使用 shell 脚本从 command-line 启动 JAR。
启动监听端口的应用程序
每个 non-web 模块都应该有一个 main class ,它将负责从命令行接收所需的参数(在至少端口号)并开始监听 class - 不管它是什么。
package module.cmd;
public class MyMainClass
{
public static void main(String[] arguments)
{
int port=Integer.parseInt(argument[0]);
new MyListener(port).start();
}
}
到运行它,执行就够了:
mvn exec:java -Dexec.mainClass="module.cmd.MyMainClass" -Dexec.args="8001"