Что плохого в конфигурации моего встроенного веб-приложения Jetty Spring? - PullRequest
1 голос
/ 04 марта 2010

У меня есть приложение Spring, которое использует встроенный экземпляр Jetty. Поскольку я программно определяю свой web.xml, вот как я добавляю диспетчер.

    DispatcherServlet dispatcherServlet = new DispatcherServlet();
    dispatcherServlet.setContextClass(
            AnnotationConfigWebApplicationContext.class);

    ServletHolder holder = new ServletHolder(dispatcherServlet);
    holder.setInitOrder(1);

    ctx.addServlet(holder, "/example/*");

На уровне Причала я определяю свой весенний контекст. Затем initparams применяются к контексту Jetty.

initParams.put("contextConfigLocation",
        "classpath*:resources/spring/*.xml");
...
ctx.setInitParams(initParams);

Я вижу в журнале, что он находит контроллер, который я аннотировал с помощью @Controller, поэтому я уверен, что контексты весенних приложений загружаются правильно.

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - сопоставленный путь URL [/ example / helloWorld] в обработчик [example.controllers.HelloWorldController]

в моем контексте у меня есть следующее для разрешения представления

<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

вот мой HelloWorldController

@Controller
public class HelloWorldController {

    @RequestMapping("/example/helloWorld")
    public ModelAndView helloWorld() {
             ModelAndView mav = new ModelAndView("helloWorld");
             mav.addObject("message", "Hello World!");
            return mav;
    }
}

Когда я указываю на это свой браузер "http://localhost:8080/example/helloWorld, В журнале появляется следующая ошибка.

org.springframework.web.servlet.PageNotFound - Не найдено сопоставление для HTTP-запроса с URI [/ example / helloWorld] в DispatcherServlet с именем org.springframework.web.servlet.DispatcherServlet-1352529649 '

Я не уверен, правильно ли я устанавливаю контейнер с причалом, или я направляю диспетчера соответствующим образом к контейнеру. Что-то выключено У кого-нибудь есть идея?

1 Ответ

1 голос
/ 09 марта 2010

Проблема заключалась в том, что мы настраивали ресурсную базу для Jetty, которая отличалась от местоположения, в котором находились наши JSP. Мы не использовали JSP изначально. После того, как я увидел это, я переместил расположение JSP в каталог ресурсов. Это решило проблему. Хотя это представляет проблему безопасности, но это другая тема.

...