2012-06-28 12 views
6

Per scopi di test, voglio utilizzare Jetty 8 per pubblicare solo contenuto statico. So come avviare il server web dalla riga comandi:Come posso avviare Jetty8 per pubblicare solo contenuto statico?

java -jar jetty.port start.jar = 8082

desidero poter utilizzare una vaniglia Molo, preferibilmente da 8 o 7, e avviarlo utilizzando qualcosa di simile:

java-jar OPZIONI start.jar = risorse resources.root = ../foo = jetty.port 8082

Il fil dovrebbe quindi essere accessibile dalla radice del server. Un file chiamato ../foo/x.html dovrebbe essere accessibile tramite http://localhost:8082/x.html.

Non voglio creare un file WAR o qualcosa di elaborato. Preferibilmente non dovrebbe fare alcuna memorizzazione nella cache sul lato server, lasciando i file sbloccati su macchine Windows. Inoltre, voglio solo servire file, anche localizzati in sottodirectory, nessun browser di file di fantasia o modi per modificarli da un client.

È possibile? In caso contrario, qual è la configurazione minima necessaria per realizzare tale comportamento?

Ulteriori informazioni

Ho provato il seguente comando. Mi aspettavo di essere in grado di navigare in Javadoc fornito con Jetty 8 utilizzando http://localhost:8080/javadoc/, ma mi dà sempre una 404

java-jar start.jar OPZIONI --ini = Server, risorse etc/contesti jetty.xml/javadoc.xml

+0

Il motivo per cui http: // localhost: 8080/javadoc/non funziona perché non esiste una directory denominata "javadoc" presente nella directory home del molo. Non capisco perché il jetty spedisca questo come esempio quando la distribuzione del jetty non viene fornita con javadoc. Per far funzionare l'url menzionato devi solo creare la directory 'javadoc' nella tua home page e creare un file html chiamato 'index.html' nella directory 'javadoc'. Dai un'occhiata a javadoc.html nella directory "webapps" per sapere perché sono necessari i passaggi precedenti. – Parvez

risposta

5

Il modo più semplice per iniziare Jetty e farlo servire contenuti statici è quello di utilizzare il seguente file xml:

static-content.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> 

di quanto si può iniziare a utilizzare Jetty:

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

Se si omette files.base, verrà utilizzata la direcory corrente; se si omette jetty.port, verrà utilizzata la porta 8080.

Il --ini disabiliterà le impostazioni da start.ini, pertanto si assicurerà anche che non vengano attivati ​​altri gestori ecc.

+0

indovina facile è relativo ma lo farò +1, e aggiungilo alla documentazione del molo ad un certo punto, grazie! –

0

Nella tua distribuzione nella directory dei contesti è un javadoc.xml che puoi usare come esempio su come farlo abbastanza facilmente.

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

che è quello che si presenta come

si sta cercando di modificare il percorso del contesto e la base di risorse

consigliamo anche solo la rimozione molo-webapps.xml da l'avvio a il file start.ini e anche la rimozione dei file di contesto che non si desidera distribuire con

si può osservare l'impostazione di alcune delle altre opzioni nel file start.ini se si desidera

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

andare lì per informazioni il processo di avvio

applausi

+0

Grazie mille per il feedback e i suggerimenti. Per qualche motivo non riesco a farlo funzionare. Ora ho usato etc/jetty-fileserver.xml come base per creare la mia soluzione generica. –

1

Un po 'di offtopic, ma qualcuno usando Maven potrebbe desiderare di questo qualcosa di simile (supponendo che le risorse statiche sono stati copiati 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> 
Problemi correlati