Así es como lo hice, y también se configuraron diferentes certificados SSL para cada sitio (no se muestra). No pretendo entender todo lo que sé, pero esto funciona para mí en varias instalaciones. Necesita un archivo "jetty.xml" y un archivo "contexts.xml" para cada instancia.
Supongamos embarcadero está instalado en/opt/embarcadero ...
Lanzamiento dos instancias del servidor de referencia a dos versiones de jetty.xml (esto se puede hacer en una única secuencia de comandos, como se muestra, o en dos separados guiones de lanzamiento)
start.sh ...
cd /opt/Jetty
java -jar start.jar etc/jetty.xml etc/jetty2.xml
Si tiene un servidor con múltiples de IP que puede utilizar los archivos context.xml para especificar de diferentes IP o nombres de host en la sección conector de cada muelle. archivo xml Si solo tiene una ip, entonces usará la configuración de la ruta de contexto en el contexto xml para diferenciar entre las dos instancias.
en jetty.xml, consulte la ip o host, y el directorio para contener el context.xml para la primera instancia:
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host">HOST OR IP FOR FIRST INSTANCE</Set>
<Set name="port"><SystemProperty name="jetty.port" default="80"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts/directory_for_FIRST_instance</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
en jetty.xml, consulte la IP o, y el directorio para contener el context.xml para la segunda instancia:
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host">HOST OR IP FOR SECOND INSTANCE</Set>
<Set name="port"><SystemProperty name="jetty.port" default="80"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts/directory_for_SECOND_instance</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
Si se define como se muestra arriba, puede volver a cargar el archivo war y reiniciar la aplicación tocando el archivo xml de contexto.
Coloque archivos de contexto separados en subdirectorios separados del directorio de contexto, cada uno apuntando al mismo archivo war, pero con diferentes rutas de contexto y diferentes hosts virtuales.
/opt/Jetty/contexts/subdirectory_for_first_instance/context_first.xml
/opt/Jetty/contexts/subdirectory_for_second_instance/context_second.xml
en context_first.xml - puede especificar un nodo (firstapp) que siempre enlace a su primera aplicación
<Set name="contextPath">/firstapp</Set>
en context_second.xml - puede especificar un nodo (firstapp) que siempre va a vincular a su segunda aplicación
<Set name="contextPath">/secondapp</Set>
(Lo anterior es necesario (dos caminos contexto diferente) si desea ejecutar desde la misma IP, creo)
a continuación, definir los dos anfitriones virtuales (debe asignar la dirección URL que está siendo utilizado por el navegador) en los archivos de contexto separados:
en context_first.xml:
<Set name="virtualHosts">
<Array type="String">
<Item>www.my_first_app.com</Item>
</Array>
</Set>
Y en context_second.xml
<Set name="virtualHosts">
<Array type="String">
<Item>www.my_second_app.com</Item>
</Array>
</Set>
Nota: si tiene dos IP o nombres de host, se puede establecer la ruta de contexto de ambas aplicaciones a "/"
si sólo tiene una dirección IP, la ruta de contexto determinará qué aplicación se accede
Además, y lo que es más importante, puede enviar parámetros de contexto a su aplicación para que pueda determinar qué instancia es, si es necesario.
Ejemplo de parámetros de contexto para enviar valores únicos para cada instancia:
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Custom context configuration -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="initParams">
<New class="java.util.HashMap">
<Put name="customer">Joes Fish Store</Put>
<Put name="ShowPanelNames">N</Put>
<Put name="FiscalYearStartMonth">10</Put>
<Put name="LiveEmail">Y</Put>
</New>
</Set>
Suponiendo puede implementar un único archivo de guerra en contextos múltiples, ¿cómo vas a cargar diferentes configuraciones? ¿Basado en el camino? ¿Qué ocurre si el usuario ingresa una URL como http: // myhost/magazines /../ books/...? – mrk
Parece que es mejor que intentes manejar las diferencias a través de una interfaz de Apache, usando los conectores tomcat para dirigir el tráfico a Jetty. – Griff