Встроенное приложение причала, не работающее от банки - PullRequest
1 голос
/ 16 марта 2011

У меня есть следующий код:

    Server server = new Server(9090);

    final URL warUrl = Main.class.getClassLoader().getResource("com/domain/webapps/app");
    final String warUrlString = warUrl.toExternalForm();
    WebAppContext wac = new WebAppContext(warUrlString, "/app");

    server.setHandler(wac);

У меня есть класс Main в пакете com.domain.

jsp и html находятся в пакете com.domain.webapps.app.

При запуске внутри Netbeans (или java -cp <classpath> com.domain.Main на разобранном банке) приложение работает отлично.

Если я запускаю флягу (java -jar app.jar), содержимое com.domain.webapps.app извлекается в /tmp/Jetty_something/webapp/, поэтому полный путь равен /tmp/Jetty_something/webapp/com/domain/webapps/app/

Но когда я делаю запрос на http://localhost:9090/app/file.jsp, Jetty пытается получить файл с /tmp/Jetty_something/webapp/file.jsp (неправильное место :-()

Что я могу сделать где?

Версия Jetty 6.1.26

1 Ответ

0 голосов
/ 05 мая 2011

Взгляните на эту статью. URL обнаружен

ProtectionDomain protectionDomain = Start.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();

Это работает для меня в war проекте и, возможно, также для вашего jar варианта использования.

...