我有一个 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 + Webservices 吗?我想要的只是一个接受 SOAP 请求并处理它的控制器。 url 必须是 /CallBack。作为一个新手,我仍然感到困惑。像上面这样的东西会起作用吗?否则我该如何让它继续下去。
我不会将 Spring MVC 和 SOAP Webservice (JAX-WS) 混合在一起,因为它们有不同的用途。
更好的做法是将业务操作封装在服务类中,并使用 MVC 控制器和 JAX-WS 公开它。例如:
你好服务
@Service
public class HelloService {
public String sayHello() {
return "hello world";
}
}
HelloController 通过自动装配注入了 HelloService 引用。这是标准 Spring MVC 控制器,它调用服务并将结果作为模型传递给视图(例如:hello.jsp 视图)
@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) 上时。可能需要额外的设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)