Jetty:设置普通主机

时间:2014-10-12 14:55:40

标签: java jetty virtualhost host karaf

如何强制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值,但仍然没有成功。 :(

如何?

1 个答案:

答案 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