Sto provando a configurare un semplice webservice per la mia applicazione incorporando Jetty. Mi piacerebbe avere due diversi servizi web disponibili, un semplice server HTTP che serve solo contenuto statico (che alla fine sarà un'app GWT) e un servlet personalizzato che può sputare messaggi di stato JSON per l'applicazione.Come configurare risorse statiche e servizi personalizzati con Jetty incorporato?
mia distribuzione struttura di cartelle simile a questa:
+ dist/
- MyApp.jar
+ lib/
+ html/
- index.html
Ed ecco cosa ho finora per la configurazione del server integrato. Ottengo correttamente l'output di test dal mio servlet personalizzato quando si visita http://localhost/data/
, ma non riesco a ottenere il DefaultServlet per trovare il mio file index.html.
public Webserver(int port) {
server = new Server(port);
ServletContextHandler context = new ServletContextHandler();
context.setResourceBase("./html/");
server.setHandler(context);
JsonDataApiServlet dataServlet = new JsonDataApiServlet();
DefaultServlet staticServlet = new DefaultServlet();
context.addServlet(new ServletHolder(dataServlet), "/data/*");
context.addServlet(new ServletHolder(staticServlet), "/*");
}
Sembra che questo sarebbe un compito comune per le persone incorporano Molo nelle cose .. sto ancora sulla strada giusta?
Modifica
Risulta questo problema era dovuto ad un malinteso del modo in cui i relativi percorsi sono calcolati all'interno Jetty. Stavo eseguendo questo da una cartella sopra la cartella dist, usando java -jar dist\MyApp.jar
, e Jetty cercava dist\..\html
anziché il corretto dist\html
. L'esecuzione del barattolo dall'interno della cartella dist risolve il problema. Risponderò con come ho fatto a farlo funzionare senza dover eseguire da all'interno della directory dist.
_Io non riesco a ottenere il DefaultServlet per trovare il mio file index.html_ Quindi, quale comportamento stai vedendo quando visiti "/index.html". Quale output di registro produce Jetty? – Tim
Grazie Tim, quel commento mi ha portato nella giusta direzione. – Collin