diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/pom.xml b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/pom.xml index 75acf8f0..08e63b83 100644 --- a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/pom.xml +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/pom.xml @@ -32,29 +32,22 @@ - - - - - - org.springframework.boot spring-boot-starter-web-services - + wsdl4j wsdl4j - - + org.codehaus.mojo jaxb2-maven-plugin @@ -68,13 +61,14 @@ + ${project.basedir}/src/main/resources/users.xsd + cn.iocoder.springboot.lab65.userservice.model - diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/WebServiceConfig.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/WebServiceConfig.java index 40fed776..d57c8d7c 100644 --- a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/WebServiceConfig.java +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/WebServiceConfig.java @@ -1,31 +1,43 @@ package cn.iocoder.springboot.lab65.userservice.config; -import org.springframework.boot.autoconfigure.webservices.WebServicesProperties; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; +import org.springframework.ws.config.annotation.EnableWs; +import org.springframework.ws.transport.http.MessageDispatcherServlet; import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition; import org.springframework.xml.xsd.SimpleXsdSchema; import org.springframework.xml.xsd.XsdSchema; @Configuration +@EnableWs // 开启 Web Services 服务 public class WebServiceConfig { public static final String NAMESPACE_URI = "https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65/lab-65-spring-ws-demo"; + @Bean + public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) { + MessageDispatcherServlet servlet = new MessageDispatcherServlet(); + servlet.setApplicationContext(applicationContext); + servlet.setTransformWsdlLocations(true); + return new ServletRegistrationBean<>(servlet, "/ws/*"); + } + @Bean public XsdSchema usersSchema() { return new SimpleXsdSchema(new ClassPathResource("users.xsd")); } - @Bean(name = "users") - public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema usersSchema, WebServicesProperties properties) { - DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); - wsdl11Definition.setLocationUri(properties.getPath()); - wsdl11Definition.setTargetNamespace(NAMESPACE_URI); - wsdl11Definition.setSchema(usersSchema); + @Bean(name = "users") + public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema usersSchema) { + DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); + wsdl11Definition.setLocationUri("/ws"); + wsdl11Definition.setTargetNamespace(NAMESPACE_URI); + wsdl11Definition.setSchema(usersSchema); wsdl11Definition.setPortTypeName("UsersPort"); return wsdl11Definition; - } + } } diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/endpoint/UserEndpoint.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/endpoint/UserEndpoint.java index b6c6cba3..6dee32ce 100644 --- a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/endpoint/UserEndpoint.java +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/endpoint/UserEndpoint.java @@ -1,6 +1,8 @@ package cn.iocoder.springboot.lab65.userservice.endpoint; import cn.iocoder.springboot.lab65.userservice.config.WebServiceConfig; +import cn.iocoder.springboot.lab65.userservice.model.UserCreateRequest; +import cn.iocoder.springboot.lab65.userservice.model.UserCreateResponse; import cn.iocoder.springboot.lab65.userservice.model.UserGetRequest; import cn.iocoder.springboot.lab65.userservice.model.UserGetResponse; import org.springframework.ws.server.endpoint.annotation.Endpoint; @@ -21,4 +23,12 @@ public class UserEndpoint { return response; } + @PayloadRoot(namespace = WebServiceConfig.NAMESPACE_URI, localPart = "UserCreateRequest") + @ResponsePayload + public UserCreateResponse create(@RequestPayload UserCreateRequest request) { + UserCreateResponse response = new UserCreateResponse(); + response.setId((int) (System.currentTimeMillis() / 1000)); + return response; + } + } diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/resources/application.yml b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/resources/application.yml deleted file mode 100644 index b49781bb..00000000 --- a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/resources/application.yml +++ /dev/null @@ -1,3 +0,0 @@ -spring: - webservices: - path: /ws