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