Игра с виртуальными хостами
Чтобы сделать это по конфигурации, вы можете использовать виртуальные хосты. С документация :
Предположим, у нас есть еще одно веб-приложение,
zzz.war. Мы хотим, чтобы xxx.war был
развернут, как указано выше, и zzz.war будет
развернуто только с 777.888.888.111,
www.other.com, www.other.net и
www.other.org:
<!-- webapp xxx.war -->
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/xxx</Set>
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>333.444.555.666</Item>
<Item>127.0.0.1</Item>
<Item>www.blah.com</Item>
<Item>www.blah.net</Item>
<Item>www.blah.org</Item>
</Array>
</Set>
</Configure>
<!-- webapp zzz.war -->
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/zzz</Set>
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>777.888.888.111</Item>
<Item>www.other.com</Item>
<Item>www.other.net</Item>
<Item>www.other.org</Item>
</Array>
</Set>
</Configure>
Таким образом, можно представить, что одно веб-приложение «развернуто» на локальном IP-адресе 127.0.0.1, а другое - на именах, соответствующих сетевому IP-адресу.
Игра с разъемами
Другим вариантом будет определение двух соединителей и привязка Jetty к только для localhost для одного из них. В вашем jetty.xml
<Configure class="org.mortbay.jetty.Server">
<!-- set up both connectors -->
<Set name="connectors">
<Array type="org.mortbay.jetty.Connector">
<Item>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host" default="localhost"/></Set>
<Set name="port">8080</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">connA</Set>
</New>
</Item>
<Item>
<New id="connB" class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host" default="0.0.0.0"/></Set>
<Set name="port">9090</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">connB</Set>
</New>
</Item>
</Array>
</Set>
</Configure>
А затем «назначьте» ваше веб-приложение выбранному соединителю. Например, в contextA.xml
:
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/A</Set>
<Set name="contextPath">/webappA</Set>
<Set name="connectorNames">
<Array type="String">
<Item>connA</Item>
</Array>
</Set>
...
</Configure>
Но, как вы можете видеть, наличие разных разъемов подразумевает прослушивание на разных портах (если у вас несколько сетевых адаптеров).
См. Также