2015-02-06 3 views
0

Я использую причал в своем весеннем приложении. После перехода от Jetty 8 до 9 Jetty (замена SelectChannelConnector с ServerConnector) Я оставил с 404 кодом ошибки после навигации по основному адресу сайта (весна безопасности перенаправляет меня/Логин) и войти:Причал 9, обслуживающий HTML-файл PWC6117: Файл не найден

ОШИБКА: PWC6117: File "/ Users/Jonny/проекты/mypro/модули/BackOffice/SRC/главная/веб-приложение/логин" не найден

это выглядит как причалу 9 не чтит web.xml файл ?, который находится в моем случае

<servlet> 
    <servlet-name>login</servlet-name> 
    <jsp-file>/login.jsp</jsp-file> 
</servlet> 

<servlet-mapping> 
    <servlet-name>login</servlet-name> 
    <url-pattern>/login</url-pattern> 
</servlet-mapping> 

и моя конфигурация объекта WebApp:

Server server = new Server(); 

WebAppContext webapp = new WebAppContext(); 
webapp.setContextPath(path); 
webapp.setDescriptor("*src/main/webapp*/WEB-INF/web.xml"); 
webapp.setBaseResource(new ResourceCollection("*src/main/webapp*")); 

HandlerList handlers = new HandlerList(); 
ServerConnector connector = new ServerConnector(server); 
connector.setPort(*port*); 
server.setConnectors(new Connector[]{connector}); 
handlers.addHandler(webApp); 
server.setHandler(handlers); 
server.start(); 
server.join(); 

Я желаю, чтобы /login служил login.jsp, как это сделать?

Но тело login.jsp чистый HTML и все, что я хочу, чтобы служить ему из /login контекста

Старый: В поисках намека я ReD:

но все еще не знаете, как правильно настроить причал с web.xml, любые идеи?

+0

частичное решение повторно записи login.jsp войти в сервлет и вместо 'jsp- file' add 'servlet-class', и это будет нормально работать, но это довольно неприятно, и я хочу иметь файл jsp – hanskoff

ответ

0

Если этот фрагмент кода представляет, как вы инициализируете свой webapp, то вам не хватает много шагов инициализации JSP.

Там пример проекта был подготовлен в рамках проекта Jetty, показывающий, как использовать JSP со встроенным Jetty в

https://github.com/jetty-project/embedded-jetty-jsp

Обратите внимание на ...

  • Требуемый тип ClassLoader
  • Декларация scratchDir
  • Настройка ServletContainerInitializer
  • СПЯ Servlet Holder и отображения
  • InstanceManager

(просто назвать несколько крупных)

+0

Привет, я немного изменил свой вопрос, это файл .jsp только для обслуживания html (in jetty8 это было хорошо).Я добавил обработчик ресурсов, но полностью не работает, если я упакую все в fatjar. ResourceHandler resHandler = new ResourceHandler(); resHandler.setResourceBase("/path/to/login.jsp"); ContextHandler ctx = new ContextHandler("/login"); ctx.setHandler(resHandler); hanskoff

+0

[Не смешивать ResourceHandler и ServletContextHandler] (http://stackoverflow.com/a/28419106/775715) (на самом деле, не используйте ResourceHandler, вообще-то нет никакого преимущества использовать его по умолчаниюServlet) –