马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在前几期中,我们从 Spring 焦点到 Spring Boot 的多个模块,再到 Spring Session,逐步展现了 Spring 生态在分布式系统中的广泛应用。Spring Web Services(Spring WS)是 Spring 提供的一个轻量级 Web 服务框架,专注于 SOAP(简单对象访问协议)服务。本篇将深入 Spring Web Services 的源码,分析其焦点机制与实现原理,并增补图示。
1. Spring Web Services 的焦点概念
Spring WS 是一个基于左券优先(Contract-First)的 SOAP 服务框架,焦点概念包罗:
- MessageDispatcher:分发 SOAP 哀求。
- Endpoint:处理 SOAP 哀求的业务逻辑。
- WebServiceMessage:抽象 SOAP 消息。
- MessageContext:哀求和响应的上下文。
- WSDL:定义服务左券。
Spring WS 集成 Spring MVC,通过拦截器和端点映射实现机动的 SOAP 处理。
2. Spring Web Services 的基本设置
一个典范的 Spring Boot 设置:
- @SpringBootApplication
- @EnableWs
- @Configuration
- public class MyApplication {
-
- public static void main(String[] args) {
-
- SpringApplication.run(MyApplication.class, args);
- }
- @Bean
- public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext context) {
-
- MessageDispatcherServlet servlet = new MessageDispatcherServlet();
- servlet.setApplicationContext(context);
- servlet.setTransformWsdlLocations(true);
- return new ServletRegistrationBean<>(servlet, "/ws/*");
- }
- @Bean(name = "userService")
- public DefaultWsdl11Definition wsdl11Definition(XsdSchema schema) {
-
- DefaultWsdl11Definition wsdl = new DefaultWsdl11Definition();
- wsdl.setPortTypeName("UserServicePort");
- wsdl.setLocationUri("/ws");
- wsdl.setTargetNamespace("http://example.com/userservice");
- wsdl.setSchema(schema);
- return wsdl;
- }
- @Bean
- public XsdSchema userSchema() {
-
- return new SimpleXsdSchema(new ClassPathResource("user.xsd"));
- }
- }
- @Endpoint
- public class UserEndpoint {
-
- @PayloadRoot(namespace = "http://example.com/userservice", localPart = "getUserRequest")
- @ResponsePayload
- public GetUserResponse getUser(@RequestPayload GetUserRequest request) {
-
- GetUserResponse response = new GetUserResponse();
- response.setName("User-" + request.getId());
- return response;
- }
- }
复制代码
- @EnableWs:启用 Web 服务支持。
- MessageDispatcherServlet:处理 SOAP 哀求。
- @Endpoint:定义 SOAP 端点。
user.xsd 示例:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |