2009-09-22 10 views

Respuesta

-2

¿Tal vez más de un truco, pero no son archivos JAR en realidad ZIP? (no estoy seguro) ¿Podrían descomprimirlos en una carpeta temporal y servirlos desde allí?

+1

Podría, pero quiero una aplicación web autónoma dentro de un tarro para fines de simplicidad. :) – LaSombra

+1

En realidad, el embarcadero lo hace internamente si tratas de configurar una carpeta de aplicaciones web, por lo que no estaba tan lejos. – fd8s0

-7

Encontré la respuesta y no es Jetty, es Winstone. http://winstone.sf.net

+0

Pero el OP preguntó acerca de Jetty ... – MTCoster

+1

Esta respuesta es por el OP ... – Asaf

+1

Votando abajo porque a pesar de que usted es el OP, esta solución realmente no es una solución. Y sería una situación extremadamente rara en la que un tipo que tropieza con el problema que enfrentaría iría con esta solución. – alok

37

Un ejemplo aparece en la página de la incrustación de embarcadero en http://docs.codehaus.org/display/JETTY/Embedding+Jetty

El truco es crear una dirección URL del archivo a su ubicación ruta de clase.

String webDir = this.class.getClassLoader().getResource("com/company/project/mywebdir").toExternalForm(); 

ServletContextHandler context = new ServletContextHandler(); 
context.setContextPath("/"); 
context.setResourceBase(webDir); 
+1

¿Qué clase se supone que debe ejecutar este código? – phtrivier

+0

@phtrivier La clase donde instanciar org.mortbay.jetty.Server u org.eclipse.jetty.server.Server. –

+0

alguna idea de qué hacer si 'request.getRequestDispatcher (...). Forward (req, resp)' no está encontrando archivos '.jsp' bajo' WEB-INF' cuando se ejecuta desde un archivo JAR? –

5

Es bastante simple, si se echa a Spring en la ecuación. Y aquí va:

 
... 

WebAppContext webAppContext = new WebAppContext(); 
webAppContext.setServer(server); 
webAppContext.setContextPath("/"); 
webAppContext.setResourceBase(new ClassPathResource("webapp").getURI().toString()); 

server.addHandler(webAppContext); 

.... 

Eso hará que jetty encuentre los recursos web necesarios dentro del archivo jar.

+0

Gracias. Lo hice con el complemento Maven + Assembly :) – LaSombra

+1

¿Qué tipo es 'servidor'? –

+1

@WimDeblauwe org.eclipse.jetty.server.Server – fionbio

Cuestiones relacionadas