如何使用jetty.port覆盖jetty.xml

时间:2012-07-25 14:29:04

标签: java maven jetty embedded-jetty maven-jetty-plugin

我正在使用maven-jetty-plugin并尝试使用-Djetty.port = 8090覆盖我的jetty.xml设置,但它无效。只有当我从jetty.xml文件中删除连接器部分时,我才能将端口设置为8090。

所以:

 mvn jetty:run -Djetty.port=8090

连接器从端口8080开始

没有连接器在端口8090中启动

问题是我需要配置接受器,统计数据和其他东西。我尝试仅从连接器中删除端口,但它不起作用。

我正在使用:

JAVA 1.7_05
MAVEN 3.0.4
Jetty 8.1.4
Linux Ubuntu 12.04 64bits

这是我的pom.xml插件配置:

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.4.v20120524</version>
            <configuration>
                <stopKey>foo</stopKey>
                <stopPort>9990</stopPort>
                <jettyXml>src/main/webapp/WEB-INF/jetty.xml</jettyXml>
            </configuration>
            <executions>
                <execution>
                    <id>start-jetty</id>
                    <!-- <phase>pre-integration-test</phase> -->
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <scanIntervalSeconds>0</scanIntervalSeconds>
                    </configuration>
                </execution>
                <execution>
                    <id>stop-jetty</id>
                    <!-- <phase>post-integration-test</phase> -->
                    <goals>
                        <goal>stop</goal>
                    </goals>
                </execution>
            </executions>
</plugin>

Jetty.xml连接器conf:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host"><Property name="jetty.host" /></Set>
        <Set name="port"><Property name="jetty.port" default="8080"/></Set>
        <Set name="maxIdleTime">300000</Set>
        <Set name="Acceptors">4</Set>
        <Set name="statsOn">false</Set>
        <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
      </New>
  </Arg>
</Call>

提前致谢!

更新1:还尝试在jetty.xml中使用SystemProperty而不是Property。没工作

4 个答案:

答案 0 :(得分:7)

更新1:确实有效。不知道为什么,但我尝试使用主机也作为SystemProperty,它工作。然后我删除了主机并且也工作了。

所以最终修复工作jetty.xml连接器conf:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <Set name="host"><SystemProperty name="jetty.host" /></Set>
        <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
        <Set name="maxIdleTime">300000</Set>
        <Set name="Acceptors">4</Set>
        <Set name="statsOn">false</Set>
        <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
      </New>
  </Arg>
</Call>

答案 1 :(得分:5)

我遇到了同样的问题。修正:

在pom的属性部分中,定义jetty.port:

<properties>
    <jetty.port>8888</jetty.port>
            ....
</properties>

在插件配置中:

<connectors>
    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
        <maxIdleTime>3600000</maxIdleTime>
        <port>${jetty.port}</port>
    </connector>

这样可以使用

覆盖命令行上的端口
mvn -D jetty.port=9999 jetty:run

答案 2 :(得分:0)

如果你使用./jetty.sh启动命令来启动服务器,它会从start.ini或start.d读取基本文件夹中的configure,请尝试更改端口(jetty.port)并重新启动服务器

答案 3 :(得分:0)

只需删除“port”中的SystemProperty标记,并将新端口值放在“port”标记内:

enter image description here