如何创建(部署)多项目?

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 中,这转换为:

  1. 创建一个包含所有模块的父项目,每个模块有packaging=pom和一个<module>声明。
  2. 然后,为每个模块创建一个模块项目(在父级中),package=jarwar(取决于上述决定)。
  3. 在它们之间设置适当的依赖关系,以防您需要公开它们的 public API 作为 inter-communicate.
  4. 的方式

根据模块的类型部署和启动每个模块也很重要(正如@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"