gpt4 book ai didi

java - Spring Boot - REST 和 SOAP 组合

转载 作者:行者123 更新时间:2023-11-30 11:04:15 26 4
gpt4 key购买 nike

我需要编写一个如下所示的应用程序:

  1. 我可以将 soap 文档发布到/a/abc,这是通常的 SOAP 方式。

  2. 我可以获取/a/abc,并返回 200/Ok。这只是一个测试,看看该方法是否存在。

执行此操作的正确方法是什么?我还没有看到在 SOAP 上下文中执行 GET 的方法。我已尝试按如下方式创建 REST 和 SOAP bean:

@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 似乎赢了。如果我注释掉 soap bean,我的 REST Controller 会正确处理 GET 请求,但如果我将 SOAP bean 留在那里,我会收到“405/Method Not Allowed”。

这些可以共存并让 Rest Controller 处理 GET,而 POST 处理 SOAP 方式吗?还是有别的办法?

最佳答案

我没能找到这个问题的答案,但我有一个解决方法:

  1. 将其余 Controller 移动到不同的 url 上下文(例如/b/abc)。
  2. 将nginx放在应用程序前面
  3. 让 nginx 将请求“GET/a/abc”重写为“GET/b/abc”。

到目前为止,这似乎可以满足我的需求。可能有多种方法可以做到这一点,但我无法通过内置的 tomcat 解决这个问题,而 nginx 方法将重定向保持在应用程序外部。

关于java - Spring Boot - REST 和 SOAP 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30092553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com