我的應用程序充當SOAP Web服務並處理Web請求。這是我的Web服務配置。我是否需要分離Web服務servlet和mvc servlet?
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/ws/*");
}
我現在面臨的問題是,當我進入瀏覽器的我的web服務URL我可以成功地看到我的Web服務通過查看
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
...
</wsdl:definitions>
運行,但是當我發送的請求SoapUI我找不到錯誤404頁面。我怎樣才能解決這個問題?
編輯:根據Spring Boot Reference Guide Spring WS使用不同的servlet類型來處理SOAP消息:MessageDispatcherServlet。通過命名這個bean messageDispatcherServlet,它不會替代Spring Boot的默認DispatcherServlet bean。在我的情況下,我默認的DispatcherServlet是處理來自SoapUI的POST請求的。當我發送GET請求時,messageDispatcherServlet表明我的WS運行正常。這是我認爲導致問題的原因。當我從瀏覽器向我的Web服務URI發送請求時,我在日誌中檢查了這一點。
Initializing Spring FrameworkServlet 'messageDispatcherServlet'
FrameworkServlet 'messageDispatcherServlet': initialization started
Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
FrameworkServlet 'messageDispatcherServlet': initialization completed in 11 ms
編輯2:我還想補充一點,我使用了Spring Web安全。在與一位新的Spring生產者進行了幾次測試之後,我意識到在從依賴關係中添加Spring Web Security後,它停止了工作。我想知道是否這可能會導致我對DefaultDispatcherServlet處理的請求。
編輯3:我可以證實這是由於網絡安全問題造成的。我仍在努力解決這個問題。
如果(如果你使用的是默認的Tomcat)我沒有記錯的Web服務器已映射服務兩個請求。這就是瀏覽器顯示服務的原因。你看過濾嗎? – efekctive
@efekctive你有什麼好的例子可以檢查過濾嗎? – Zack
現在糾結了。我會回到 – efekctive