如何配置Jetty监听多个端口

8

我希望配置Jetty监听多个端口,但我不想要多个实例或多个Web应用程序,只需要一个Jetty、一个Web应用程序,但要监听2个或更多端口。

默认方式不支持多个条目:

<Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>

谢谢您的帮助!

1
这怎么是离题的? - sandris
2个回答

11
在你的jetty.xml文件中,添加一个新的连接器:。
<!-- original connector on port 8080 -->
<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">2</Set>
        <Set name="statsOn">false</Set>
        <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
      </New>
  </Arg>
</Call>

<!-- new connector on port 8081 --> 
<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="8081"/></Set>
        <Set name="maxIdleTime">300000</Set>
        <Set name="Acceptors">2</Set>
        <Set name="statsOn">false</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
      </New>
  </Arg>
</Call>

然后启动Jetty

java -jar start.jar etc\jetty.xml

应该可以满足你的需求。


出于谷歌风格的考虑,我为Solr Bundle做了这个。我认为Solr必须默认设置为读取jetty.xml,因此您甚至不需要传递它。谢谢! - Jason Dunkelberger
我之前做了类似的添加端口操作,但是能否在其中插入一个标签来监视第二个端口的不同路径? - mautrok
如何在Jetty 10中实现 - 拥有一个Web应用程序和一个jetty-base目录,但监听多个端口? - Akshay Shah

5

如果在嵌入式模式下使用Jetty,您可以在Java代码中打开多个端口:

Server server = new Server();
Connector c1 = new SelectChannelConnector();
c1.setPort(8080);
Connector c2 = new SelectChannelConnector();
c2.setPort(8081);
/* ... even more ports ... */
Connector[] ports = {c1, c2 /* ... */};
server.setConnectors(ports);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接