Встроенная Jetty ищет файлы внутри своего файла Jar - PullRequest
21 голосов
/ 23 сентября 2009

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

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

Ответы [ 4 ]

38 голосов
/ 23 октября 2009

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

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

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

ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
context.setResourceBase(webDir);
5 голосов
/ 08 июня 2010

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

 ...

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

 server.addHandler(webAppContext); 

 ....

Это заставит Jetty найти необходимые веб-ресурсы внутри файла JAR.

0 голосов
/ 23 сентября 2009

Нашел ответ, и это не Jetty, а Winstone http://winstone.sf.net

0 голосов
/ 23 сентября 2009

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

...