2009-12-08 10 views
26

İlkbahar web.xml uygulamasında iki sunucu uygulaması tanımlamak istiyorum - uygulama html/jsp sayfaları için bir tane ve biri tarafından çağrılacak bir web hizmeti için harici uygulama. Ben MyServlet kendisi tarafından dosyasında DispatcherServlet kullanmak varsaBir yay uygulamasında web.xml dosyasında birden fazla sunucuya nasıl kayıt yapılır

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

<servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>WEB-INF/user-service-servlet.xml</param-value> 
</context-param> 

<servlet> 
    <servlet-name>user-webservice</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>user-webservice</servlet-name> 
    <url-pattern>/UserService/*</url-pattern> 
</servlet-mapping> 

, iyi çalışıyor: İşte web.xml olduğunu. Eğer config dosyası (user-service-servlet.xml) için context-param ile kullanıcı-web servisi varsa, bu iyi çalışıyor. Ancak, dosyada her ikisi de varsa, myservlet-servlet.xml dosyası otomatik olarak yüklenmediğinden myservlet çalışmıyor. İçerik-paramını kaldırırsam, myservlet çalışır, ancak yapılandırma dosyası (user-service-servlet.xml) yüklenmediğinden kullanıcı-web servisi çalışmaz.

Her iki sunucu tanımını nasıl tanımlayabilirim ve her ikisi de yapılandırma dosyalarını yükleyebilir? Böyle

cevap

16

olarak yerine CXFServlet user-webservice-servlet.xml itibaren kendi yay bağlamını yüklemek olmasındansa cxf kullanıcı posta listesinde this thread açıklandığı, sadece kök bağlamında içine sürü yükleyebilirsiniz. diğer bazı isme user-webservice-servlet.xml mevcut (örn user-webservice-beans.xml) daha sonra böyle bir şey için contextConfigLocation parametreyi değiştirmek senin yeniden adlandırın: Bu biraz eski olduğunu biliyoruz

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

<servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
    /WEB-INF/applicationContext.xml 
    /WEB-INF/user-webservice-beans.xml 
    </param-value> 
</context-param> 

<servlet> 
    <servlet-name>user-webservice</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>user-webservice</servlet-name> 
    <url-pattern>/UserService/*</url-pattern> 
</servlet-mapping> 
+1

Ayrı veritabanları ve diğer ayarlar kullanılıyorsa, her iki sunucu için içerik kök bağlamında nasıl olabilir? Bir dosyada nasıl ayırt edilirler? –

6

Kullanım yapılandırma şey:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

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

<servlet> 
    <servlet-name>user-webservice</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

ve sonra üç dosya gerekir:

  • applicationContext.xml;
  • myservlet-servlet.xml; ve
  • user-webservice-servlet.xml.

*-servlet.xml dosyaları otomatik olarak kullanılır ve her biri bu sunucu için bir uygulama içeriği oluşturur. Bahar belgeleri

, 13.2. The DispatcherServlet:

çerçeve, bir DispatcherServlet başlatılması üzerine, [servlet-name] adlı bir dosya için göz WEB-INF dizinde -servlet.xml olacak web sayfanızın uygulaması ve orada tanımlanan çekirdeklerini oluşturun ( ile tanımlanan tüm çekirdeklerin tanımları, ile global kapsamda aynı adrestir).

+0

Bu yardımcı olmuyor - Uygulamamdaki dosyalarım var, ancak http: // localhost: 8080/MyApp/index.jsp dosyasına gittiğimde, sayfayı gösterir, ancak http: // localhost: 8080/MyApp (hiçbir eğik çizgi olmadan), kullanıcı-web servisini getirir, ancak WSDL bağlantısına tıklamak, "Servis bulunamadı" mesajını gösterir. Belki de benim sorunum, yapılandırma dosyalarının yüklenmemesi değil, web servisinin haritalandırılması doğru değil. –

1

ama kısaca cevap olacağını < yük-on-başlatma > hem oluşumlar, iki kez 1 olan aynı kimliği verdiler. Bu yükleme sırasını karıştırır.

İlgili konular