我的应用程序充当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