我是一个程序员springboot soap axws-api wsdl如何使用?请构建两个demo 一个 server 一个client。 一个发消息一个收消息
首先,您需要添加Spring Boot和Apache CXF的依赖项到您的项目中。在pom.xml文件中添加以下依赖项:
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Apache CXF -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.4.4</version>
</dependency>
接下来,您可以创建一个SOAP服务端(server)和一个SOAP客户端(client)。
1. SOAP服务端(Server)
创建一个HelloWorldService类,该类包含一个简单的方法来处理SOAP请求:
import org.springframework.stereotype.Service;
@Service
public class HelloWorldService {
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
然后,创建一个HelloWorldEndpoint类,该类用于将SOAP请求映射到HelloWorldService中的方法:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@Component
@WebService(serviceName = "HelloWorldService")
public class HelloWorldEndpoint {
private final HelloWorldService helloWorldService;
@Autowired
public HelloWorldEndpoint(HelloWorldService helloWorldService) {
this.helloWorldService = helloWorldService;
}
@WebMethod
public String sayHello(@WebParam(name = "name") String name) {
return helloWorldService.sayHello(name);
}
}
最后,在application.properties文件中添加以下配置:
# CXF
cxf.path=/soap-api
现在,您可以运行Spring Boot应用程序,并使用/soap-api/HelloWorldService?wsdl访问生成的WSDL文件。
2. SOAP客户端(Client)
首先,创建一个HelloWorldClient类,该类用于创建一个SOAP客户端并调用服务端的方法:
import org.springframework.stereotype.Component;
import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import org.springframework.ws.soap.client.core.SoapActionCallback;
@Component
public class HelloWorldClient extends WebServiceGatewaySupport {
public String sayHello(String name) {
String request = "<ns1:sayHello xmlns:ns1=\"http://endpoint.server.demo/\"><name>" + name + "</name></ns1:sayHello>";
String soapAction = "http://endpoint.server.demo/HelloWorldEndpoint/sayHello";
HelloWorldResponse response = (HelloWorldResponse) getWebServiceTemplate()
.marshalSendAndReceive("http://localhost:8080/soap-api/HelloWorldService", request,
new SoapActionCallback(soapAction));
return response.getReturn();
}
}
然后,您可以在您的应用程序中使用HelloWorldClient类:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SoapDemoApplication implements CommandLineRunner {
private final HelloWorldClient helloWorldClient;
@Autowired
public SoapDemoApplication(HelloWorldClient helloWorldClient) {
this.helloWorldClient = helloWorldClient;
}
public static void main(String[] args) {
SpringApplication.run(SoapDemoApplication.class, args);
}
@Override
public void run(String... args) {
String response = helloWorldClient.sayHello("John");
System.out.println(response);
}
}
现在,当您运行应用程序时,它将向SOAP服务端发送一个请求并打印响应消息。
希望这个例子能帮到您
原文地址: https://www.cveoy.top/t/topic/iagI 著作权归作者所有。请勿转载和采集!