2015-02-11 65 views
0

我跟着這個職位的答案暴露出XSD在我的應用 - Is there a way to expose a static XSD in Spring WS 2?春WS暴露XSD不工作

我的web.xml

<servlet> 
     <servlet-name>ws</servlet-name> 
     <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring/springws-servlet.xml</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>ws</servlet-name> 
     <url-pattern>/services</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>ws</servlet-name> 
     <url-pattern>*.wsdl</url-pattern> 
    </servlet-mapping> 
    <servlet> 
     <servlet-name>mvc</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring/airlinemvc-servlet.xml</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc</servlet-name> 
     <url-pattern>*.do</url-pattern> 

    </servlet-mapping> 

springws-servlet.xml中

<sws:annotation-driven /> 


    <sws:static-wsdl id="airline" location="/WEB-INF/wsdl/airlineservice.wsdl"/> 

    <sws:dynamic-wsdl id="airlineWS" 
         portTypeName="AirlineServicePortType" 
         locationUri="http://localhost:8080/airline/services/" 
         createSoap11Binding="true" 
         createSoap12Binding="true" > 
     <sws:xsd location="/WEB-INF/schemas/AirlineService.xsd"/> 

    </sws:dynamic-wsdl> 

    <bean id="AirlineTypes" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
     <property name="xsd" value="/WEB-INF/schemas/AirlineTypes.xsd"/> 
    </bean> 

    <bean id="AirlineService" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
     <property name="xsd" value="/WEB-INF/schemas/AirlineService.xsd"/> 
    </bean> 

現在我想從瀏覽器訪問AirlineService.xsd。我試圖去http://localhost:8080/airline/AirlineService.xsdhttp://localhost:8080/airline/services/AirlineService.xsd - 他們兩個都回來了404.我犯了什麼錯誤?提前致謝。

+0

你不把它們放在WEB-INF文件夾之外,並通過http:// localhost:8080/airline/schemas/AirlineService.xsd – Koitoer 2015-02-11 06:04:31

+0

@Koitoer到達它們,這很可能會起作用,但它確實在擾亂我爲什麼我的代碼不工作。我只是複製了樣本,但仍然沒有運氣。 – RKodakandla 2015-02-11 06:12:30

回答

0

我終於想通了。 MessageDispatcherServlet無法處理.xsd的請求,因爲web.xml中沒有servlet映射聲明。

兩種方法來解決它..

方法1:更新URL模式包括在/服務的一切/

<servlet-mapping> 
     <servlet-name>ws</servlet-name> 
     <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

方法2:

添加另一個映射

<servlet-mapping> 
     <servlet-name>ws</servlet-name> 
     <url-pattern>.xsd</url-pattern> 
    </servlet-mapping>