diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/pom.xml b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/pom.xml new file mode 100644 index 00000000..5aa73d5b --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/pom.xml @@ -0,0 +1,75 @@ + + + + lab4-64-spring-ws-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + lab-65-spring-ws-demo-application + + + + 2.2.4.RELEASE + + 1.8 + 1.8 + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-starter-web-services + + + + + wsdl4j + wsdl4j + + + + + + + + org.jvnet.jaxb2.maven2 + maven-jaxb2-plugin + 0.14.0 + + + + generate + + + + + WSDL + + + http://localhost:8080/ws/users.wsdl + + + cn.iocoder.springboot.lab65.demo.wsdl + + + + + + diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/DemoApplication.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/DemoApplication.java new file mode 100644 index 00000000..1a3adfe7 --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/DemoApplication.java @@ -0,0 +1,14 @@ +package cn.iocoder.springboot.lab65.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + // 启动 Spring Boot 应用 + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/client/UserClient.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/client/UserClient.java new file mode 100644 index 00000000..159dba5b --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/client/UserClient.java @@ -0,0 +1,21 @@ +package cn.iocoder.springboot.lab65.demo.client; + +import cn.iocoder.springboot.lab65.demo.wsdl.UserGetRequest; +import cn.iocoder.springboot.lab65.demo.wsdl.UserGetResponse; +import org.springframework.ws.client.core.support.WebServiceGatewaySupport; +import org.springframework.ws.soap.client.core.SoapActionCallback; + +public class UserClient extends WebServiceGatewaySupport { + + public static final String WEB_SERVICES_URI = "http://127.0.0.1:8080/ws"; + + private static final String WE_SERVICES_NAMESPACE = "https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65/lab-65-spring-ws-demo"; + + public UserGetResponse getUser(Integer id) { + UserGetRequest request = new UserGetRequest(); + request.setId(id); + return (UserGetResponse) getWebServiceTemplate().marshalSendAndReceive( + request, new SoapActionCallback(WE_SERVICES_NAMESPACE + "/UserCreateRequest")); + } + +} diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/WebServicesConfig.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/WebServicesConfig.java new file mode 100644 index 00000000..ee446461 --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/WebServicesConfig.java @@ -0,0 +1,27 @@ +package cn.iocoder.springboot.lab65.demo.config; + +import cn.iocoder.springboot.lab65.demo.client.UserClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; + +@Configuration +public class WebServicesConfig { + + @Bean + public Jaxb2Marshaller marshaller() { + Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); + marshaller.setContextPath("cn.iocoder.springboot.lab65.demo.wsdl"); + return marshaller; + } + + @Bean + public UserClient countryClient(Jaxb2Marshaller marshaller) { + UserClient client = new UserClient(); + client.setDefaultUri(UserClient.WEB_SERVICES_URI); + client.setMarshaller(marshaller); + client.setUnmarshaller(marshaller); + return client; + } + +} diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java new file mode 100644 index 00000000..e98159b8 --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java @@ -0,0 +1,38 @@ +package cn.iocoder.springboot.lab65.demo.controller; + +import cn.iocoder.springboot.lab65.demo.client.UserClient; +import cn.iocoder.springboot.lab65.demo.wsdl.UserGetResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + @Autowired + private UserClient userClient; + + @GetMapping("/get") + public String get(@RequestParam("id") Integer id) { + // 执行 Web Services 请求 + UserGetResponse response = userClient.getUser(id); + // 响应 + return response.getName(); + } + +// @GetMapping("/create") // 为了方便测试,实际使用 @PostMapping +// public Integer create(@RequestParam("name") String name, +// @RequestParam("gender") Integer gender) { +// // 创建请求 +// UserCreateRequest request = UserCreateRequest.newBuilder() +// .setName(name).setGender(gender).build(); +// // 执行 gRPC 请求 +// UserCreateResponse response = userServiceGrpc.create(request); +// // 响应 +// return response.getId(); +// } + +} diff --git a/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/resources/application.yml b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/resources/application.yml new file mode 100644 index 00000000..f9e9468c --- /dev/null +++ b/lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-application/src/main/resources/application.yml @@ -0,0 +1,2 @@ +server: + port: 9090 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/WebServicesConfig.java similarity index 98% rename from 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 rename to lab-65/lab-65-spring-ws-demo/lab-65-spring-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/WebServicesConfig.java index d57c8d7c..85ea7afd 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/WebServicesConfig.java @@ -13,7 +13,7 @@ import org.springframework.xml.xsd.XsdSchema; @Configuration @EnableWs // 开启 Web Services 服务 -public class WebServiceConfig { +public class WebServicesConfig { public static final String NAMESPACE_URI = "https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65/lab-65-spring-ws-demo"; 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 6dee32ce..e5542d2b 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,6 @@ package cn.iocoder.springboot.lab65.userservice.endpoint; -import cn.iocoder.springboot.lab65.userservice.config.WebServiceConfig; +import cn.iocoder.springboot.lab65.userservice.config.WebServicesConfig; import cn.iocoder.springboot.lab65.userservice.model.UserCreateRequest; import cn.iocoder.springboot.lab65.userservice.model.UserCreateResponse; import cn.iocoder.springboot.lab65.userservice.model.UserGetRequest; @@ -13,7 +13,7 @@ import org.springframework.ws.server.endpoint.annotation.ResponsePayload; @Endpoint public class UserEndpoint { - @PayloadRoot(namespace = WebServiceConfig.NAMESPACE_URI, localPart = "UserGetRequest") + @PayloadRoot(namespace = WebServicesConfig.NAMESPACE_URI, localPart = "UserGetRequest") @ResponsePayload public UserGetResponse get(@RequestPayload UserGetRequest request) { UserGetResponse response = new UserGetResponse(); @@ -23,7 +23,7 @@ public class UserEndpoint { return response; } - @PayloadRoot(namespace = WebServiceConfig.NAMESPACE_URI, localPart = "UserCreateRequest") + @PayloadRoot(namespace = WebServicesConfig.NAMESPACE_URI, localPart = "UserCreateRequest") @ResponsePayload public UserCreateResponse create(@RequestPayload UserCreateRequest request) { UserCreateResponse response = new UserCreateResponse(); diff --git a/lab-65/lab-65-spring-ws-demo/pom.xml b/lab-65/lab-65-spring-ws-demo/pom.xml index a4a80714..d7499d80 100644 --- a/lab-65/lab-65-spring-ws-demo/pom.xml +++ b/lab-65/lab-65-spring-ws-demo/pom.xml @@ -13,6 +13,7 @@ pom lab-65-spring-ws-demo-user-service + lab-65-spring-ws-demo-application