如何强制Jetty从test.localhost:8080/myapp
而不是localhost:8181/myapp
等特定虚拟主机开始打开所有已部署的网络应用程序?
这是jetty.xml的片段:
<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="8181"/>
</Set>
...
...我尝试使用jetty.host
值,但仍然没有成功。 :(
如何?
答案 0 :(得分:3)
要在特定网络接口上进行侦听,请通过其IP地址(IPv4或IPv6)或其主机名指定该接口。
由于这是localhost / loopback的变体,因此使用IP地址将是最好的。
例如:
$ grep localhost /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.0 test.localhost
是的,这些主机故意在不同的IP上(并且对于环回接口有效)。
然后,您可以使用命令行使用jetty-distribution为test.localhost:8080
设置连接器(这是jetty 9语法)
$ java -jar /path/to/start.jar jetty.host=127.0.1.0 jetty.port=8080
您也可以将这些命令行选项作为单独的行放入${jetty.base}/start.ini
。
$ grep -E "jetty\.(host|port)" /path/to/my.base/start.ini
jetty.host=127.0.1.0
jetty.port=8080
启动jetty后,您可以看到它正在侦听的界面
$ netstat -tlnp | grep 8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp4 0 0 127.0.1.0:8080 :::* LISTEN 14480/java