2010-09-02 15 views
38

¿Es posible usar solo la línea de comando para ejecutar jetty con solo un archivo war especificado y una ruta de contexto?Jetty Run War Utilizando solo la línea de comando

Algo así como:

java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp OPTIONS=default,plus,jsp 
+1

Insignia de Tumbleweed y eventualmente la famosa pregunta de este. – gbegley

Respuesta

1

Es posible, si usted tiene la configuración de inicio apropiada (jetty.xml) establecido.

Fuera de la caja, el muelle no incluye un jetty.xml que lo haga, pero podría escribir uno con la suficiente facilidad.

Eso significaría que habría ya sea

  1. tienen una línea de comandos que se parecía más a

    java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp jetty-myapp.xml 
    

    o

    java -jar $jettyHome/start.jar -Dwar.location=myApp.war -DcontextPath=/myApp etc/jetty.xml etc/jetty-plus.xml jetty-deploy-app.xml 
    
  2. Sustituir el etc/jetty.xml mismo y pon la información que quieras allí.

Jetty startup es bastante sencillo, por lo que solo se trata de producir un archivo XML que hace lo que quiere. Ese archivo XML puede leer valores de las propiedades del sistema, por lo que puede usar sus diversas opciones "-D".

+0

Al "poner la información que desea en [ect/jetty.xml]" significa que podría configurar etc/jetty.xml con las propiedades del sistema pasadas en la línea de comando, y luego poder ejecutar * any & war file en mi caja con un solo comando, o la configuración sería para una guerra específica? – gbegley

+0

Sí, debería ser posible hacer eso. Realmente no lo he hecho, por lo que podría haber algún obstáculo que no haya considerado, pero el formato de configuración XML de Jetty te permite hacer prácticamente todo lo que necesites, por lo que no veo ninguna razón por la que no funcione. Si tengo tiempo, trataré de probarlo yo mismo. – Tim

44

Utilice jetty runner.

java -jar jetty-runner.jar my.war 

con Maven, puede instalar mediante la adición a su pom.xml:

<build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals><goal>copy</goal></goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>org.mortbay.jetty</groupId> 
           <artifactId>jetty-runner</artifactId> 
           <version>7.5.4.v20111024</version> 
           <destFileName>jetty-runner.jar</destFileName> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Run:

mvn package 

y utilizar como:

java -jar target/dependency/jetty-runner.jar target/*.war 

http://www.eclipse.org/jetty/documentation/current/runner.html

http://central.maven.org/maven2/org/eclipse/jetty/jetty-runner/

+0

Del mismo modo, para tomcat hay webapp-runner: https://github.com/jsimone/webapp-runner – ryenus

+0

No estoy seguro de por qué, pero esto da el error 'java.lang.NoClassDefFoundError: org/apache/tomcat/util/IntrospectionUtils'. ¿Está relacionado? – zygimantus

6

He escrito una pequeña arquetipo aplicación de línea de comandos/Maven que funciona como la forma en que pensé que todo esto debe tener en el primer lugar. La aplicación de arranque le permite iniciar su contenedor de servlets de elección (Jetty, Tomcat, GlassFish) simplemente pasando la ruta al WAR y su puerto.

El 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 

Entonces se lanza así:

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

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

2

Usando jetty-runner-minimal:

$ git clone https://github.com/kissaten/jetty-runner-minimal 
$ cd jetty-runner-minimal && mvn package 
$ java -jar jetty-runner-minimal/target/dependency/jetty-runner.jar myapp.war 
Cuestiones relacionadas