2010-11-02 18 views
17

Temel olarak, hem SOAP hem de RESTful hizmetlerini açığa çıkaran bir arka uç uygulaması vardır. Bu yeni bir özelliktir olarakSpring MVC ve Spring WS'yi tek bir uygulamada kullanabilir miyim?

Ben RESTful servisler için SABUN hizmetleri için Bahar WS 1.5.8 kullanmaya karar ve
Bahar MVC 3.0 var.

Spring WS hakkında biraz bilgi okuduktan sonra (Ben yeniyim!) Spring WS için web.xml dosyasında bir ön denetleyici olan bir "MessageDispatcherServlet" bildirmeliyiz.

Spring MVC için web.xml dosyasında bir ön denetleyici olan "DispatcherServlet" i bildirmeliyiz. Her iki sunucu için de web.xml dosyasında farklı sunucu bildirimleri var.

. Yay WS

yani

I

<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> 

nedenle i 2 yapılandırma dosyaları kullanmak gerekir adres (dinlendirici) Yay MVC

<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> 

sahip ?? Bir tane springmvc-servlet.xml ve başka bir springsoap-servlet.xml?

Bu yapılabilir mi?

cevap

17

Evet, bu iyi. MVC ile ilgili şeyleri bire, WS'yi bir diğerine yerleştirdiniz.

onlar hizmetlerini paylaşmanız gerekiyorsa

, o zaman paylaşımlı fasulye ( see docs for example of how to set this up) içermelidir üçüncü bağlamını tanımlayan web.xml yılında ContextLoaderListener kullanarak paylaşılan içerik, ilan etmek en iyisidir.

MessageDispatcherServlet ürününün standart bir DispatcherServlet ve diğer birkaç bileşenin uygun bir montajı olduğu hiçbir şeye değmez. , ürününü yalnızca bu bileşenleri kendiniz bildirin ve bir DispatcherServlet kullanın, ancak bu oldukça beceriksiz olur.

+1

Teşekkür ederiz! :) ContextLoaderListener kullanarak bir applicationContext.xml ayarlamayı biliyorum .. –