我有一个同时支持SOAP和REST端点的Spring Boot项目。现在,我有一个业务需求,需要在相同的URI上下文中访问它们:
SOAP端点:app-context / wsdl-location
REST端点:app-context / rest-uri
到目前为止,我尝试的所有操作均导致“ 405方法不允许”错误。另外,希望通过注释来尽可能地做到这一点。
任何帮助将不胜感激
编辑1:
这是用于生成WSDL的SOAP配置(URI是公开了wsdl的SOAP URI):
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext context) {
MessageDispatcherServlet messageDispatcherServlet = new MessageDispatcherServlet();
messageDispatcherServlet.setApplicationContext(context);
messageDispatcherServlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(messageDispatcherServlet, URI + "/*");
}
@Bean
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema awadSchema) {
DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
definition.setPortTypeName(); //cannot state port type name
definition.setTargetNamespace(); //cannot state namespace
definition.setLocationUri(URI);
definition.setSchema(awadSchema);
return definition;
}
@Bean
public XsdSchema awadSchema() {
return new SimpleXsdSchema(new ClassPathResource("/WEB-INF/xsd-file-name"));
}
企业希望保持uri不变,并在其中附加REST端点:URI / report /.....
我尝试过:
1)使soap uri成为application.properties中的servlet上下文路径
2)在REST映射中明确给出完整的uri
3)尝试使用@Order使其首先评估REST端点
4)在web.xml中设置顺序
只要它们具有相同的上下文,应用程序就会尝试通过wsdl发送REST请求,并且会出现405错误