Domanda

Modifica : Penso che dovrei chiarire il mio intento ...

Sto cercando di semplificare il ciclo di iterazione dello sviluppo del codice di scrittura >> Build War >> Distribuzione >> Aggiorna >> Ripeti. Mi piacerebbe essere relativamente indipendente da IDE (cioè, non voglio che Eclipse o Illij Plug-Ins fossero il lavoro). Voglio essere in grado di modificare i file di codice / statici e costruire come necessario nella directory della fonte di guerra e basta avere un'impostazione di esecuzione / debug come una chiamata di riga di comando a un'installazione centralizzata del molo.

Più tardi mi piacerebbe essere in grado di eseguire l'implementazione effettiva usando in generale la stessa configurazione ma con una guerra con confezione. Non voglio avere il mio codice dell'app specifico per il mio IDE o il molo.

Così forse un modo migliore per fare questa domanda è Che cosa hai trovato è il modo più pulito per utilizzare il molo come server Avv / Debug App?


.

Dì che voglio avere un'installazione minima di Jetty 7. Voglio il minimo del minimo della configurazione XML il più possibile, ho solo bisogno dell'API del servlet grezzo, nessun JSP, nessun filtraggio, ecc. Voglio solo essere in grado di avere alcuni servlet personalizzati e avere file statici serviti se esistono. Questa sarà l'unica guerra e sederà come la radice per un dato porto.

Idealmente, per facilitare la distribuzione, vorrei che la directory del molo sia solo il download standard, e la mia configurazione della mia guerra / xml essere separata da questi file di jetty standard. Nella mia invocazione del molo mi piacerebbe passare in questo XML minimale e andare.

Sto cercando che la documentazione sia dappertutto e gran parte è per il molo 6 o specifico per vari altri pacchetti (primavera, ecc.). Immagino se ho questa configurazione minima, aggiungere ulteriori astrazioni aggiuntive sulla parte superiore sarà un lotto più pulito. Inoltre mi consentirà di affrontare più pulito con gli scenari incorporati-molo.

Questa domanda è uno scenario di esempio in cui questo XML sarebbe utile Jetty Run Guerra utilizzando solo la riga di comando

Quale sarebbe il minimo XML necessario per specificare questa posizione di guerra e gli host / porta per servirlo?

Grazie in anticipo per eventuali frammenti o collegamenti.

È stato utile?

Soluzione

Jetty è migrato all'eclissi. Ci sono informazioni molto sottili su questo. Ciò ha anche condotto in cambiamento nel nome del pacchetto, che è un altro livello di sfumatura. Hanno pubblicato un util per convertire il jetty6 impostazione per l'impostazione del Jetty 7, ma di nuovo - non molto popolare. Sono deluso dal forum del molo di Eclipse. Qui è dove dovresti cercare documentazione su Jetty 7 in poi http://wiki.eclipse.org/jetty/staring

Penso che questo sia il minimo jetty.xml preso da 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>
.

Ma, preferirei che voglia iniziare da una copia di $JETTY_HOME/etc/jetty.xml e si modificherebbe da lì.

Se stai bene con la directory $JETTY_HOME/webapps, è possibile impostare la porta modificando questa 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>
.

Else, modificherò context.xml la strada spiegata qui (per molo 7) Come servire WebBapp A da Porta e WebApp B da Portb

Segnala anche queste pagine:

    .
  • http://wiki.eclipse.org/jetty/reference/jetty.xml
  • http://wiki.eclipse.org/jetty/reference/jetty.xml_syntax
  • http://communitymapbuilder.org/display/jetty/jndi

    .... Modifica n. 1: Scusa per l'URL sbagliato per WebApp per connettore. Ho aggiornato il collegamento a come servire Webbapp A da Porta e WebApp B da Portb per puntare al Doc che è destinato a Jetty 7.


    .

    Aggiornamento On 'Come si occupa di Jetty su vari ambienti?'

    dev

    Usiamo Maven, il molo così incorporato funziona per noi. Eseguiamo solo mvn clean install run:jetty e la porta è configurata nel file di configurazione di Maven, vale a dire pom.xml. Questo è non IDE dipendente PLS PLUS può essere facilmente incorporato usando la formica, ma non ho mai provato.

    test

    Abbiamo un molo stand-alone in esecuzione. Ho configurato i parametri di porta e sintonizzati, rimossi le app predefinite (ad esempio root.war ecc.) E creato un context.xml con porte specifiche dell'app e directory di distribuzione. (Sfortunatamente, ho posto questa domanda sulla mailing list di Eclipse Jetty e nessuno ha infastidito a rispondere). Questa è un'unità di tempo.

    Per le build / distribuzioni di test, disponiamo di uno script di build che crea la guerra secondo le specifiche di prova ENV e quindi lo carica per testare l'ambiente. Dopo, che invochiamo uno script di shell che (1) interrompe il molo, (2) copia il file di guerra a MyApp's WebApp direatortory e (3) riavvia il molo.

    Tuttavia, un modo più semplice per farlo è usando il plugin cargo di Maven. La sfortuna è stata che stavo usando il molo 7.1.6 che era incompatibile con il carico. Più tardi lo hanno riparato, ma avevo fatto il mio lavoro da script personalizzato.

    Prod

    Prod ha quasi la stessa procedura del test, tranne. Le sintonizzate sono fatte per una maggiore sicurezza e bilanciamento del carico. Ma dalla distribuzione POV, non c'è nulla di diverso dal caso di prova a Prod.

    Avviso che non mi sono preoccupato di quali file XML sono e quanti devono essere lì. Ho appena usato quelli che sono le mie preoccupazioni - jetty.xml e context.xml. Inoltre, ho trovato che è molto più pulito usare jetty.conf e jetty.sh per passare parametri JVM, XML personalizzati e per iniziare e fermare.

    Spero che questo aiuti.


    .

    On Hot Distribuzione:

    Ora, se usi Maven e utilizza il molo incorporato. Sappia solo quando il codice è cambiato - come "Sniffer di arma da fuoco". In Evt Envt, si esegue il molo, apporta modifiche, pagina di aggiornamento e vedere le modifiche - hot implementazione . Trova più lui

re http://docs.codehaus.org/discsplay/jetty/maven+jetty+Plugin Cerca scanIntervalSeconds

Altri suggerimenti

Questo non risponde completamente alla tua domanda, ma nel caso in cui ti aiuta, ecco un codice piuttosto minimo utilizzando il molo incorporato 7 per attivare un server con un servlet root:

    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();
.

Vedi ovviamente http://wiki.eclipse.org/jetty/tutorial/embedding_jettyjetry/A>.

Se stai costruendo con Maven (che è IDE indipendentemente), dovresti eseguire il debug con il plugin del molo di Maven. Fondamentalmente si esegue l'app come "MVN Jetty: Esegui" sulla Commandline Tutto funziona solo senza dover fare alcuna ridistribuzione. La maggior parte dei buoni IDES Come ha il supporto MAVEN integrato e ti consente di eseguire / debug dell'app come un Maven; Significa che Maven è eseguito il quale inizia il plugin del molo che avvia l'app e puoi eseguire il debug. Poiché tutto è esaurito dalle cartelle di origine IDE e BIN, non è nemmeno bisogno di un'installazione del server di jetty.

Ecco un progetto demo che corre in quel modo https : //github.com/simbo1905/zktodo2/blob/master/commandline.build.and.Run.txt ed ecco come eseguirlo in Eclipse https://github.com/simbo1905/zktodo2/blob/master/eclipse.indigo.build.e. debug.txt ma qualsiasi IDE che capisce Maven dovrebbe funzionare. Dai un'occhiata al Pom.XML dove imposta il plugin del molo di Maven.

Userei Gradle e scansiona la cartella di uscita Build ogni pochi secondi per le modifiche nella build.

in un file build.gradle:

apply plugin: 'jetty'

...

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

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

È così.Puoi scegliere di avere l'auto-build di IDE per te e puntare in quella directory.Ma puoi anche scegliere di non farlo.Questa soluzione non è legata affatto a un IDE.

Ho pensato che avrei aggiornato con quello che faccio ora.Ho scritto una piccola linea di comando app / maven archetipo che funziona come come ho pensato che tutto ciò dovesse avere in primo luogo.L'app Bootstrap ti consente di lanciare il contenitore del servlet di scelta (molo, Tomcat, Glassfish) semplicemente passandolo il percorso verso la guerra e il tuo porto.

Utilizzando Maven, puoi creare e confezionare la tua istanza di questa semplice app:

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

Allora lo lanci come questo:

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

Ecco la fonte per l'utilità e l'archetipo: https://bibucket.org/mckamey/war-Bootstrap

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top