Java 弹簧靴-休息和肥皂组合
我需要编写一个如下工作的应用程序:Java 弹簧靴-休息和肥皂组合,java,spring,rest,soap,spring-boot,Java,Spring,Rest,Soap,Spring Boot,我需要编写一个如下工作的应用程序: @Bean public ServletRegistrationBean WsRegistrationBean(ApplicationContext applicationContext) { MessageDispatcherServlet servlet = new MessageDispatcherServlet(); servlet.setApplicationContext(applicationContext); servl
@Bean
public ServletRegistrationBean WsRegistrationBean(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/a/*");
}
@Bean
public ServletRegistrationBean RsRegistrationBean(ApplicationContext applicationContext) {
DispatcherServlet servlet = new DispatcherServlet();
servlet.setApplicationContext(applicationContext);
return new ServletRegistrationBean(servlet, "/a/*");
}
@Bean
public ServletRegistrationBean WsRegistrationBean(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/a/*");
}
@Bean
public ServletRegistrationBean RsRegistrationBean(ApplicationContext applicationContext) {
DispatcherServlet servlet = new DispatcherServlet();
servlet.setApplicationContext(applicationContext);
return new ServletRegistrationBean(servlet, "/a/*");
}
然而这不起作用,SOAP bean似乎赢了。如果我注释掉soapbean,我的REST控制器将正确处理GET请求,但是如果我将soapbean留在那里,我将得到一个“405/methodnotallowed”
这些可以共存并让Rest控制器处理GET,而POST可以用SOAP方式处理吗?或者还有其他方法吗?我没有找到答案,但我有一个解决办法:
到目前为止,这似乎适合我的需要。可能有多种方法可以做到这一点,但我无法用内置的tomcat解决这个问题,nginx方法将重定向保持在应用程序外部。您正在将两个servlet映射到/a的相同url上下文。我建议你为它们使用不同的路径,因为你迟早会在发布时遇到问题。不幸的是,我的要求是获取并发布到相同的url上下文。我必须使用get来测试Iuri上下文是否存在,如果它存在,那么我可以使用soap来测试该上下文。嗯,听起来是一个非常奇怪的要求?Get只是为了检查端点是否存在吗?然后可能实现一个虚拟操作,也称为Soap服务。不幸的是,这是Windows 8.1和Windows 10使用的Microsoft MDM discovery server规范中的一个设计。这是一个有点丑陋的设计,它混淆了REST和SOAP的概念。是的,这意味着在开始交易之前检查服务器是否有正确的API。我现在对下面的答案中的url重写解决方案还可以,不过我希望我知道如何在应用程序中实现它。至于你的建议,我不知道如何进行SOAP GET(无论这意味着什么),它似乎被405拒绝了。