Java Jetty:设置通用主机

Java Jetty:设置通用主机,java,jetty,virtualhost,host,karaf,Java,Jetty,Virtualhost,Host,Karaf,如何强制Jetty从特定虚拟主机(如test.localhost:8080/myapp)而不是localhost:8181/myapp)开始打开所有部署的webapp 下面是jetty.xml中的代码片段: <Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">

如何强制Jetty从特定虚拟主机(如
test.localhost:8080/myapp
)而不是
localhost:8181/myapp
)开始打开所有部署的webapp

下面是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的
value,但还是没有成功:(


如何?

要侦听特定网络接口,可以通过其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发行版,通过命令行为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\(主机|端口)”/path/to/my.base/start.ini
jetty.host=127.0.1.0
码头。港口=8080
一旦jetty启动,您就可以看到它正在监听的接口

$netstat-tlnp | grep8080
(并非所有流程都可以识别,非自有流程信息
将不会显示,您必须是root才能看到所有内容。)
tcp4 0 127.0.1.0:8080::*侦听14480/java

是有关virtualhost配置的问题?还是强制重定向到
http://test.localhost
?或关于只听
测试。localhost:8080
?@JoakimErdfelt,是关于听
测试。localhost:8080
。这对我不起作用,当我这样做时,我仍然可以看到:
tcp6 0 127.0.0.1:554:*听30813/java
,我希望jetty 9.1.5只使用IPv4。有什么想法吗?