我使用jetty-maven-plugin进行本地开发测试。我想要的是来自一个jetty:run命令,在pom.xml中指定的不同端口上启动一堆jetty容器 - 我不想在战争中指定它。我当前的插件配置块看起来像::
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<contextHandlers>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<war>${basedir}/service-a/target/a.war</war>
<contextPath>/a</contextPath>
<allowNullPathInfo>true</allowNullPathInfo>
</contextHandler>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<war>${basedir}/service-b/target/b.war</war>
<contextPath>/b</contextPath>
<allowNullPathInfo>true</allowNullPathInfo>
</contextHandler>
</contextHandlers>
</configuration>
我知道我可以指定-Djetty.port,但全局设置端口。以上示例在端口8080上运行的同一个jetty容器实例中启动两个war。如果我有整个插件块的多个实例,是否有人知道contextHandler中的开关来设置端口或如何操作?我搜索过的每个例子都可以选择在战争中的jetty.xml文件中设置它,我不想这样做。
答案 0 :(得分:1)
如果您命名连接器和上下文处理程序
,则可以<configuration>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<name>instance_8080</name>
</connector>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8081</port>
<name>instance_8081</name>
</connector>
</connectors>
<contextHandlers>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<war>${basedir}/service-a/target/a.war</war>
<contextPath>/a</contextPath>
<connectorNames>
<item>instance_8080</item>
</connectorNames>
</contextHandler>
<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
<war>${basedir}/service-b/target/b.war</war>
<contextPath>/b</contextPath>
<connectorNames>
<item>instance_8081</item>
</connectorNames>
</contextHandler>
</contextHandlers>
</configuration>
注意,此配置适用于org.mortbay.jetty:jetty-maven-plugin
。
答案 1 :(得分:0)
在您的jetty maven插件中,您可以创建可在不同端口上运行的多个connectors
。这是第一次开始。
我不确定这些connector
块如何以及是否可以运行不同的战争。他们可以引用不同的jetty.xml(虽然我只有jetty.xml的麻烦)