2009-09-22 2 views
21

Я успешно вложил Jetty в тестовое приложение. Он может обслуживать файлы без проблем. Теперь я хочу знать, возможно ли Jetty обслуживать файлы, которые находятся внутри собственного файла Jar.Embedded Jetty ищет файлы в своем файле Jar

Кто-нибудь знает, если это возможно?

ответ

-2

Может быть, больше взлома, но не файлы JAR на самом деле ZIP? (не уверен) Не могли бы вы разархивировать их во временную папку и обслуживать их оттуда?

+1

Я мог бы, но для простоты я хочу использовать автономное веб-приложение внутри Jar. :) – LaSombra

+1

Собственно причал делает это внутренне, если вы пытаетесь установить папку webapp, поэтому он не был так далеко. – fd8s0

-7

Нашел ответ, и это не причал, это Уинстон. http://winstone.sf.net

+0

Но ОП задал вопрос о Jetty ... – MTCoster

+1

Этот ответ от OP ... – Asaf

+1

Даун-голосом, потому что, хотя вы OP, это решение действительно не является решением. И это была бы чрезвычайно редкая ситуация, когда парень, спотыкаясь о проблеме, с которой вы столкнулись, пойдет с этим решением. – alok

37

Пример перечислен на странице вложения Jetty в http://docs.codehaus.org/display/JETTY/Embedding+Jetty

Хитрость заключается в том, чтобы создать URL файла для вашего местоположения CLASSPATH.

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

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

Какой класс должен выполнять этот код? – phtrivier

+0

@phtrivier Класс, в котором вы создаете экземпляр org.mortbay.jetty.Server или org.eclipse.jetty.server.Server. –

+0

любая идея, что делать, если 'request.getRequestDispatcher (...). Forward (req, resp)' не находит файлы .jsp' под 'WEB-INF' при запуске из JAR-файла? –

5

Это довольно просто, если вы выбросите весну в уравнение. И здесь он идет:

 
... 

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

server.addHandler(webAppContext); 

.... 

Это сделает причал найдет необходимые веб-ресурсы внутри файла jar.

+0

Спасибо. Я сделал это с плагином Maven + Assembly :) – LaSombra

+1

Какой тип «сервер»? –

+1

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

Смежные вопросы