基础整合记录,方便下次梭哈。
近期公司某项目需要同步合作厂家的部分数据,其中有个功能需要我方提供接口供对方调用,通知我方数据有更新等。
1.前提
在已有的SpringBoot项目中,引入CXF依赖,编写配置代码及服务代码,最后进行发布。
本篇文章基于以下SDK、插件及版本。
Java - 1.8.0
Maven - 4.0.0
SpringBoot - 2.6.2
2.引入依赖
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.5.0</version>
</dependency>
3.编写服务代码
新建一个服务接口,并实现它,用作提供接口对外发布的方法。
其中,接口名称(此处命名为NeuInform)、代码中的name及targetNamespace字段都可以根据实际情况自定义更改。
NeuInform.java:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService(
name = "NeuInform",
targetNamespace = "http://com.ste.eams"
)
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface NeuInform {
@WebMethod
@WebResult(name = "String", targetNamespace = "http://com.ste.eams")
String inform(@WebParam(name = "param", targetNamespace = "http://com.ste.eams") String param);
}
NeuInformImpl.java:
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.jws.WebService;
@WebService(
name = "NeuInform",
targetNamespace = "http://com.ste.eams"
)
@Service
@Component
public class NeuInformImpl implements NeuInform {
@Override
public String inform(String param) {
String result = "处理完成";
// 此处编写业务处理代码
return result;
}
}
4.编写配置代码
新建一个配置类,用于配置对外发布的接口方法及接口地址。
其中,endpoint方法中endpoint.publish方法传入的即为接口地址,可自定义。
CxfConfig.java:
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
public class CxfConfig {
private final Bus bus;
private final NeuInformImpl neuInform;
public CxfConfig(Bus bus, NeuInformImpl neuInform) {
this.bus = bus;
this.neuInform = neuInform;
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(bus, neuInform);
endpoint.publish("/neuInform");
return endpoint;
}
}
5.发布及测试
启动SpringBoot项目,会发现多了两行log:
Creating Service {http://com.ste.eams}NeuInformImplService from class com.ste.eams.service.NeuInform
Setting the server's publish address to be /neuInform
由浏览器访问发布的路径,(IP/端口/services/定义的路径?wsdl):
http://localhost:8080/services/neuInform?wsdl
可正常看到一个wsdl的XML即为启动成功,接口已发布完成。接下来可用SoapUI工具或编写代码进行测试,若无问题即可通知对方进行测试。