Могу ли я использовать Spring MVC и Spring WS в одном приложении? - PullRequest
18 голосов
/ 02 ноября 2010

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

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

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

Для 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?

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

Ответы [ 2 ]

17 голосов
/ 02 ноября 2010

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

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

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

1 голос
/ 19 июня 2013
...