gpt4 book ai didi

java - 使用 Maven/Eclipse 开发时可以同时运行两个 webapps 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:38 24 4
gpt4 key购买 nike

这就是问题所在:我们为客户构建网络应用程序。我们还有一个“admin”webapp 可以修改一些客户端数据结构。由于数据的性质,两个 Web 应用程序必须在同一个 JVM 中运行。

这在生产中是没有问题的;你只需将两个 webapps 放在同一个应用程序服务器中。

不过,我们最近已切换到 Mavenish 布局 Web 应用程序的方式,并且 Maven 希望每个项目一个 Web 应用程序。在 Eclipse 中这是个问题,因为如果您独立运行不同的 Web 应用程序,它们将位于不同的 JVM 中。

我们正在尝试使用 jetty-maven-plugin 进行 webapp 测试,但如果它能解决这个问题,我们可以切换到其他东西。

最佳答案

是的,你可以 :) 它是通过将一个 WAR 模块标识为主模块,将所有其他 WAR 复制到主模块的目标目录,制作一个 jetty.xml 并告诉 Maven Jetty 插件使用 jetty.xml 来完成的。以下是使用 Maven 依赖插件复制其他 WAR 的方法:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.foo</groupId>
<artifactId>bar</artifactId>
<version>${project.version}</version>
<type>war</type>
<overWrite>true</overWrite>
<outputDirectory>target/</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>

您还需要在 POM 中定义 com.foo:bar 依赖项。以下是 jetty.xml 的内容:

<?xml version="1.0"?>

<!-- =========================================================== -->
<!-- Set handler Collection Structure -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New class="org.eclipse.jetty.server.handler.ContextHandlerCollection"
id="Contexts">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New id="FooWebHandler"
class="org.eclipse.jetty.webapp.WebAppContext"/>
</Item>
</Array>
</Set>
</New>
</Item>
</Array>
</Set>
</New>
</Set>

<Ref id="FooWebHandler">
<Set name="contextPath">/foo</Set>
<Set name="war">
target/bar-${project.version}.war
</Set>
</Ref>

这里是告诉 Maven Jetty 插件使用新的 jetty.xml 的方法:

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<jettyConfig>${basedir}/jetty.xml</jettyConfig>
</configuration>

现在从 Eclipse 启动 jetty:run-war 目标,您应该会看到所有 WAR 都部署在一个 Maven Jetty 插件实例中。我从命令行运行它,它在那里工作,YMMV 和 Eclipse。

关于java - 使用 Maven/Eclipse 开发时可以同时运行两个 webapps 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5519066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com