Spring Boot 集成 WebService
1.向pom.xml中添加集成WebService的相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
<version>2.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
2.创建服务端接口
@WebService(name = "demoService",
targetNamespace = "http://service.webservice.com"
)
public interface DemoService {
public String sayHello(String user);
}
3.创建服务端接口实现类
@WebService(name = "demoService",
targetNamespace = "http://service.webservice.com",
endpointInterface = "com.webservice.service.DemoService"
)
public class DemoServiceImpl implements DemoService {
@Override
public String sayHello(String user) {
return user + ",现在的时间是:" + "(" + new Date() + ")";
}
}
4.创建CXF配置类
@Configuration
public class CxfConfig {
@Bean
public ServletRegistrationBean disServlet() {
return new ServletRegistrationBean(new CXFServlet(),"/demo/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public DemoService demoService() {
return new DemoServiceImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), demoService());
endpoint.publish("/api");
return endpoint;
}
}
5.启动服务后访访问 http://127.0.0.1:8089/demo/api?wsdl 我这边端口号时8089 注意,出现这种xml格式说明成功
6. 调用 如果在另一个服务中调用webService,需要和服务端包名保持一直不然会报错,这是我的理解
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://127.0.0.1:8089/demo/api?wsdl");
Object[] objects = new Object[0];
try {
objects = client.invoke("sayHello", "老王");
System.out.println("返回数据:" + objects[0]);
} catch (java.lang.Exception e) {
e.printStackTrace();
}
}