2009-09-22 13 views

Répondre

-2

Peut-être plus d'un hack, mais ne sont pas des fichiers JAR en fait ZIPs? (pas sûr) Pourriez-vous les décompresser dans un dossier temporaire et les servir à partir de là?

+1

Je pourrais, mais je veux une application web autonome dans un pot à des fins de simplicité. :) – LaSombra

+1

En fait jetty fait cela en interne si vous essayez de définir un dossier webapp, il n'était pas si loin. – fd8s0

-7

J'ai trouvé la réponse et ce n'est pas Jetty, c'est Winstone. http://winstone.sf.net

+0

Mais l'OP a posé des questions sur Jetty ... – MTCoster

+1

Cette réponse est par l'OP ... – Asaf

+1

Down-vote parce que même si vous êtes le PO, cette solution n'est vraiment pas une solution. Et ce serait une situation extrêmement rare où un gars qui trébucherait sur le problème que vous avez rencontré irait avec cette solution. – alok

37

Un exemple est indiqué sur la page jetée à l'intégration http://docs.codehaus.org/display/JETTY/Embedding+Jetty

L'astuce est de créer une URL de fichier à l'emplacement de votre classpath.

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

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

quelle classe est supposée exécuter ce code? – phtrivier

+0

@phtrivier Classe dans laquelle vous instanciez org.mortbay.jetty.Server ou org.eclipse.jetty.server.Server. –

+0

une idée de ce qu'il faut faire si 'request.getRequestDispatcher (...). Forward (req, resp)' ne trouve pas les fichiers '.jsp' sous' WEB-INF' lorsqu'il est exécuté à partir d'un fichier JAR? –

5

C'est assez simple, si vous mettez Spring dans l'équation. Et voilà:

 
... 

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

server.addHandler(webAppContext); 

.... 

Cela fera jetty trouver les ressources web nécessaires dans le fichier jar.

+0

Merci. Je l'ai fait avec le plugin Maven + Assembly :) – LaSombra

+1

Quel type est 'server'? –

+1

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