Pregunta

EDITAR:Creo que debo aclarar que mi intención...

Estoy tratando de simplificar el desarrollo de la iteración de ciclo de escritura de código >> construir la GUERRA >> implementar >> actualizar >> repetir.Me gustaría ser relativamente independiente de la IDE (es decir, no quiero Eclipse o IntelliJ plugins haciendo el trabajo).Quiero ser capaz de edición de código/archivos estáticos y construir según sea necesario en mi GUERRA directorio de origen, y sólo se han ejecutado/depuración de configuración como una llamada de línea de comandos para una centralizado Embarcadero de la instalación.

Más adelante me gustaría ser capaz de llevar a cabo la implementación real utilizando generalmente la misma configuración pero con un empaquetado de la GUERRA.No quiero tener mi código de la aplicación específica a mi IDE o Embarcadero.

Así que tal vez una mejor manera de hacer esta pregunta es Lo que han encontrado es la forma más limpia para uso Jetty como tu dev/depuración del servidor de aplicaciones?


Decir quiero tener un mínimo de Jetty 7 de instalación.Quiero como mínimo de configuración XML como sea posible, sólo necesito la cruda Servlet API, no JSP, sin filtros, etc.Yo sólo quiero ser capaz de tener alguna especificación de servlets y tener los archivos estáticos que se sirve en caso de que existan.Esta será la única GUERRA y él se sentará como la raíz de un puerto dado.

Idealmente, para facilitar la implementación me gustaría tener el Embarcadero directorio acaba de ser el estándar de descarga, y mi GUERRA / XML config ser separado de estas estándar Jetty archivos.En mi invocación de Jetty me gustaría pasar en esta mínima XML y se van.

Me estoy encontrando que la documentación está en todas partes y mucho de esto es por Jetty 6 o específicos a varios otros paquetes (Primavera, etc.).Me imagino que si tengo esta configuración mínima hacia abajo, a continuación, la adición de más abstracciones en la parte superior será mucho más limpia.También me permitirá de una manera más limpia lidiar con embedded-Jetty escenarios.

Este ASÍ que la pregunta es un ejemplo del escenario donde este XML sería útil Jetty Ejecutar Guerra Utilizando sólo la línea de comandos

¿Cuál sería el mínimo XML necesarios para especificar esta una GUERRA de ubicación y los anfitriones/puerto de servirlo?

Gracias de antemano por cualquier fragmentos o enlaces.

¿Fue útil?

Solución

Jetty ha migrado a Eclipse.No es muy sutil info sobre esto.Esto también llevó a que en un cambio en el nombre del paquete, que es otro nivel de matiz.Que hizo publicar un util para convertir Jetty6 configuración Embarcadero 7 configuración, pero de nuevo, no es muy popular.Estoy decepcionado de Eclipse Jetty foro.Aquí es donde usted debe buscar documentación sobre el Espigón 7 en adelante http://wiki.eclipse.org/Jetty/Starting

Creo que este es el mínimo jetty.xml tomado de http://wiki.eclipse.org/Jetty/Reference/jetty.xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">\ 
<Configure id="Server" class="org.eclipse.jetty.server.Server">
</Configure>

Pero, creo que sería más bien como para empezar a partir de una copia de $JETTY_HOME/etc/jetty.xml y podría modificar a partir de ahí.

Si usted está de Acuerdo con $JETTY_HOME/webapps directorio, usted puede configurar el puerto por la modificación de esta parte

<Configure id="Server" class="org.eclipse.jetty.server.Server">
    ...
    <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="7777"/></Set>
            <Set name="maxIdleTime">300000</Set>
            <Set name="Acceptors">2</Set>
            <Set name="statsOn">false</Set>
            <Set name="confidentialPort">8443</Set>
        <Set name="lowResourcesConnections">20000</Set>
        <Set name="lowResourcesMaxIdleTime">5000</Set>
          </New>
      </Arg>
    </Call>
    ....
</Configure>

Otra cosa, voy a modificar context.xml la forma en que se explica aquí (para Jetty 7) Cómo servir webbapp Una de portA y webapp B del portB

También se refieren a estas páginas:

....Edit#1:lo siento por mal URL para la webapp por conector.He actualizado el enlace Cómo servir webbapp Una de portA y webapp B del portB a punto para el doc que es para Jetty 7.


Actualización en " cómo lidiar con Embarcadero en diferentes entornos?'

Dev

Usamos Maven, por lo incrustadas Jetty trabaja para nosotros.Acabamos de ejecutar mvn clean install run:jetty y el puerto está configurado en el archivo de configuración de Maven, es decir, pom.xml.Este es no IDE dependiente plus Jetty puede ser fácilmente incorporado el uso de HORMIGA, pero nunca lo he intentado.

Prueba

Hemos independiente Jetty ejecución.He configurado el puerto y los parámetros ajustados, eliminado por defecto las aplicaciones (por ejemplo,de la raíz.guerra, etc) y creó un context.xml con la aplicación específica de los puertos y el directorio de implementación.(Por desgracia, me han hecho esta pregunta en Eclipse del Embarcadero de la lista de correo y nadie se molestó en contestar).Esta es una configuración de la hora.

Para la prueba se basa/implementaciones, tenemos un script que genera la GUERRA como por la prueba de env especificaciones y, a continuación, sube a un entorno de prueba.Después, que nos invocar un script de shell que (1)deja de Jetty, (2) copias de la guerra de archivo myApp la webapp direactory y (3) se reinicia Jetty.

Sin embargo, la manera más fácil de hacer esto es mediante el uso de Maven de la Carga del plugin.La mala suerte fue que yo estaba usando Jetty 7.1.6 que era incompatible con la Carga.Más tarde se fija, pero yo tenía mi trabajo hecho por el script personalizado.

Prod

Prod tiene casi el mismo procedimiento de la prueba, excepto.Los ajustes se hacen para una mayor seguridad y equilibrio de carga.Pero a partir de la implementación de los puntos de VISTA, no hay nada diferente de caso de Prueba para Prod.

Aviso que no me he molestado acerca de lo que los archivos XML son y cuántos debe estar allí.Sólo he usado los que son mis preocupaciones, jetty.xml y context.xml.Además, me pareció mucho más limpio para el uso jetty.conf y jetty.sh para pasar de la JVM params, personalizada XMLs y para iniciar y detener.

Espero que esto ayude.


En el despliegue en caliente:

Ahora, si usted utiliza Maven y el uso incrustado Jetty.Sólo se sabe que cuando el código se cambia, como en "bala sniffer".En dev envt, ejecutar Jetty, hacer cambios, la actualización de la página, y ver los cambios -- el despliegue en caliente.Encontrar más aquí http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin buscar scanIntervalSeconds

Otros consejos

Esto no responde completamente a su pregunta, pero en caso de que ayude, aquí es un código bastante mínimo utilizando el embarcadero incrustado 7 para activar un servidor con un servlet raíz:

    HandlerCollection handlers = new HandlerCollection();
    ServletContextHandler root = new ServletContextHandler(handlers, "/", ServletContextHandler.NO_SESSIONS|ServletContextHandler.NO_SECURITY);
    root.addServlet(new ServletHolder(new MyServlet()), "/*");

    Server server = new Server(8080);
    server.setHandler(handlers);
    server.start();

Ver, por supuesto, http://wiki.eclipse.org/jetty/tutorial/embedding_jetty.

Si está construyendo con Maven (que es IDE INDEPENDIENTE), debe depurar con el complemento de embarcadero de Maven. Básicamente, ejecuta la aplicación como "MVN Jetty: Ejecutar" en la línea de comandos, todo funciona sin tener que hacer ninguna redistribución. La mayoría de los buenos Ínes ¿Cómo se han incorporado el soporte de Maven y le permite ejecutar / depurar la aplicación como un Maven; Lo que significa que se ejecuta Maven, que inicia el complemento de embarcadero que inicia la aplicación y puedes depurarlo. Dado que todo se está quedando sin las carpetas IDE Fuente y Bin, ni siquiera necesita una instalación de embarcadero.

Aquí hay un proyecto de demostración que se ejecuta de esa manera https : //github.com/simbo1905/zktodo2/blob/master/commandline.build.and.run.txt y aquí es cómo ejecutarlo bajo eclipse https://github.com/simbo1905/zktodo2/blob/master/eclipse.indigo.build.y. Debug.txt Pero cualquier IDE que entiende que Maven debería funcionar. Eche un vistazo al Pom.xml donde configura el complemento de embarcadero de Maven.

Yo usaría Grandle y escanearía la carpeta de salida de compilación cada pocos segundos para los cambios en la construcción.

en un archivo build.gradle:

apply plugin: 'jetty'

...

jettyRun.doFirst {
    // set system properties, etc here for bootstrapping
}

jettyRun {
    httpPort = 8989
    reload = 'automatic'
    scanIntervalSeconds = 3
    daemon = false
}

Eso es todo.Puede elegir tener la construcción automática IDE para usted, y señale en ese directorio.Pero también puedes elegir no.Esta solución no está atada en absoluto a un IDE.

Pensé que me actualizaría con lo que ahora hago.He escrito una pequeña aplicación de línea de comandos / Maven Archetype que funciona como cómo pensé que todo esto debería tener en primer lugar.La aplicación Bootstrap le permite iniciar su contenedor de servillas de elección (Jetty, Tomcat, Glassfish) simplemente pasándolo por la ruta a la guerra y su puerto.

Uso de Maven, puede crear y empaquetar su propia instancia de esta aplicación simple:

mvn archetype:generate \
    -DarchetypeGroupId=org.duelengine \
    -DarchetypeArtifactId=war-bootstrap-archetype \
    -DarchetypeVersion=0.2.1

Luego lo inicias así:

java -jar bootstrap.jar -war myapp.war -p 8080 --jetty

Aquí está la fuente de la utilidad y el arquetipo: https://bitbucket.org/mckamey/war-bootstrap

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top