gpt4 book ai didi

java - 我可以同时使用 SOAP Web 服务和 Spring MVC 吗

转载 作者:行者123 更新时间:2023-11-30 06:24:12 25 4
gpt4 key购买 nike

我有一个 Spring MVC 项目。我写了一段类似的代码

@Controller
@RequestMapping("CallBack")
@WebService(name = "NotificationToCP", targetNamespace = "http://SubscriptionEngine.ibm.com")
public class CallbackController {

@RequestMapping("")
@ResponseBody
@WebMethod(action = "notificationToCP")
@RequestWrapper(localName = "notificationToCP", targetNamespace = "http://SubscriptionEngine.ibm.com", className = "in.co.mobiz.airtelVAS.model.NotificationToCP_Type")
@ResponseWrapper(localName = "notificationToCPResponse", targetNamespace = "http://SubscriptionEngine.ibm.com", className = "in.co.mobiz.airtelVAS.model.NotificationToCPResponse")
public NotificationToCPResponse index(
@WebParam(name = "notificationRespDTO", targetNamespace = "") CPNotificationRespDTO notificationRespDTO) {
return new NotificationToCPResponse();
}
}

我可以同时使用 Spring MVC + Web 服务吗?我想要的只是一个接受 SOAP 请求并处理它的 Controller 。 url 需要是/CallBack。作为新手,我仍然有点困惑。像上面这样的东西会起作用吗?否则我该如何进行。

最佳答案

我不会将 Spring MVC 和 SOAP 网络服务 (JAX-WS) 混合在一起,因为它们有不同的用途。

更好的做法是将您的业务操作封装在一个服务类中,并使用 MVC Controller 和 JAX-WS 公开它。例如:

你好服务

@Service
public class HelloService {
public String sayHello() {
return "hello world";
}
}

HelloController 通过 Autowiring 注入(inject)了 HelloService 引用。这是标准的 Spring MVC Controller ,它调用服务并将结果作为模型传递给 View (例如:hello.jsp View )

@Controller
@RequestMapping("/hello")
public class HelloController {
@Autowired private HelloService helloService;

@RequestMapping(method = RequestMethod.GET)
public String get(Model model) {
model.addAttribute("message", helloService.sayHello());
return "hello";
}
}

JAX-WS 端点也调用相同的服务。不同之处在于该服务作为 SOAP Web 服务公开

@WebService(serviceName="HelloService")
public class HelloServiceEndpoint {
@Autowired private HelloService helloService;

@WebMethod
public String sayHello() {
return helloService.sayHello();
}
}

请注意,上面的 JAX-WS 样式 Web 服务不能保证在所有 Spring 部署中自动运行,尤其是在非 Java EE 环境 (tomcat) 上部署时。可能需要额外的设置。

关于java - 我可以同时使用 SOAP Web 服务和 Spring MVC 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139533/

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