Подтвердить что ты не робот

Могу ли я использовать Spring MVC и Spring WS в одном приложении?

В основном существует обратное приложение, которое предоставляет как SOAP, так и службы RESTful.

Я решил использовать Spring WS 1.5.8 для служб SOAP и
Spring MVC 3.0 для служб RESTful, поскольку это новая функция.

при чтении немного о Spring WS (я новичок в этом!) нам нужно объявить "MessageDispatcherServlet", который является фронт-контроллером, в web.xml для Spring WS.

Для Spring MVC мы должны объявить "DispatcherServlet", который также является фронт-контроллером в web.xml.

для обоих сервлетов у нас есть разные объявления сервлетов в web.xml.

то есть. для Spring WS У меня

  <servlet>
  <servlet-name>springsoap</servlet-name>
  <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
  <servlet-name>springsoap</servlet-name>
  <url-pattern>/soapservices/*</url-pattern>
  </servlet-mapping>

для Spring MVC (RESTful) У меня есть

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/restservices/*</url-pattern>
    </servlet-mapping>

Поэтому я должен использовать 2 файла конфигурации? один из названных springmvc-servlet.xml и еще один springsoap-servlet.xml?

Можно ли это сделать?

4b9b3361

Ответ 1

Да, это прекрасно. Вы помещаете материал, связанный с MVC, в один, а материал WS в другой.

Если им нужно обмениваться услугами, то лучше всего объявить общий контекст, используя ContextLoaderListener в web.xml, который определяет третий контекст, который должен содержать общий beans (см. документы, например, как установить это).

Не стоит ничего, что MessageDispatcherServlet является просто удобной сборкой стандартного DispatcherServlet плюс несколько других компонентов. Вы можете просто объявить эти компоненты самостоятельно и использовать DispatcherServlet, но это довольно сложно.