2012-06-28 9 views
6

Para propósitos de prueba, quiero usar Jetty 8 para servir solo contenido estático. Yo sé cómo iniciar el servidor web desde la línea de comandos:¿Cómo comienzo Jetty8 para que solo sirva contenido estático?

java-jar jetty.port start.jar = 8082

Me gustaría ser capaz de utilizar un embarcadero vainilla, preferentemente 8 o 7, e iniciarlo usando algo como:

java-jar OPCIONES start.jar = recursos resources.root = ../foo jetty.port = 8082

El fil Es entonces debería ser accesible desde la raíz del servidor. Se debe poder acceder a un archivo llamado ../foo/x.html a través del http://localhost:8082/x.html.

No quiero crear un archivo WAR ni nada sofisticado. Preferiblemente, no debe hacer ningún almacenamiento en caché en el lado del servidor, dejando los archivos desbloqueados en las máquinas con Windows. Además, solo deseo servir archivos, incluso ubicados en subdirectorios, sin un sofisticado navegador de archivos o formas de modificarlos desde un cliente.

¿Esto es posible? De lo contrario, ¿cuál es la configuración mínima necesaria para llevar a cabo dicho comportamiento?

Información adicional

He intentado el siguiente comando. Esperaba que fuera capaz de navegar por el Javadoc se envía con embarcadero 8 utilizando http://localhost:8080/javadoc/, pero siempre me da un java 404

-jar start.jar OPCIONES --ini = server, recursos etc/contextos jetty.xml/javadoc.xml

+0

La razón por http: // localhost: 8080/javadoc/no funciona es porque no hay un directorio llamado 'javadoc' presente en el directorio de inicio de su embarcadero. No entiendo por qué embarcadero envía esto como un ejemplo cuando la distribución del muelle no viene con javadoc. Para hacer que la url mencionada funcione, solo necesita crear el directorio 'javadoc' en la casa de su embarcadero y crear un archivo html llamado 'index.html' en el directorio 'javadoc'. Eche un vistazo a javadoc.html en el directorio 'webapps' para saber por qué son necesarios los pasos anteriores. – Parvez

Respuesta

5

La forma más sencilla de empezar embarcadero y tienen que servir contenido estático está utilizando el siguiente archivo xml:

contenido estático.xml:

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

<Configure id="FileServer" 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="8080"/></Set> 
      </New> 
     </Arg> 
    </Call> 

    <Set name="handler"> 
     <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
     <Set name="resourceBase"><Property name="files.base" default="./"/></Set> 
     </New> 
    </Set> 
</Configure> 

de lo que puede comenzar embarcadero usando:

java -jar start.jar --ini static-content.xml files.base=./foo jetty.port=8082 

Si omite files.base, se utilizará el direcory actual; si omite jetty.port, se usará el puerto 8080.

El --ini deshabilitará la configuración de start.ini, por lo tanto también asegúrese de que no se activen otros controladores, etc.

+0

Supongo que es fácil, es relativo, pero lo haré con un +1 y lo agregaré a la documentación del muelle en algún momento, ¡gracias! –

0

En su distribución en el directorio contextos hay un javadoc.xml que puede usar como ejemplo sobre cómo hacer esto con la suficiente facilidad.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-distribution/src/main/resources/contexts/javadoc.xml

que es lo que realmente se parece a

que busca cambiar la ruta de contexto y la base de recursos

También recomendaría sólo la eliminación de muelle de una webapps.xml desde el inicio en el archivo start.ini y también la eliminación de los archivos de contexto que no desea implementar con

puede ver la configuración de algunas de las otras opciones en el archivo start.ini también si le gusta

http://wiki.eclipse.org/Jetty/Feature/Start.jar

ir allí para obtener información del proceso de inicio

aplausos

+0

Muchas gracias por los comentarios y sugerencias. Por alguna razón, no puedo hacer que funcione. Ahora he usado etc/jetty-fileserver.xml como base para crear mi propia solución genérica. –

1

Un poco de offtopic, pero alguien experto en el uso de esta deseen algo como esto (suponiendo que los recursos estáticos se han copiado a target/web):

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>8.1.9.v20130131</version> 
    <executions> 
     <execution> 
      <id>start-jetty</id> 
      <phase>install</phase> 
      <goals> 
       <goal>start</goal> 
      </goals> 
      <configuration> 
       <webAppConfig> 
        <resourceBases> 
         <contextPath>/</contextPath> 
         <resourceBase>${project.build.directory}/web</resourceBase> 
        </resourceBases> 
       </webAppConfig> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
Cuestiones relacionadas