springboot集成webService开发详解
springboot集成webService开发
webService优缺点
webService优点
WebService是⼀种跨编程语⾔和跨操作系统平台的远程调⽤技术
远程调⽤技术:不⽤担⼼防⽕墙的问题
webService缺点
服务端接⼝⽅为webservice则客户端也必须使⽤webservice,双⽅保持⼀致
因为webservice使⽤xml传输数据,因此性能上不能满⾜⾼并发
写法,使⽤上不够优化,使⽤也很少
springboot集成webService
环境准备
springboot2.x
maven 3.6
idea开发⼯具
jdk8
mysql
集成开发
搭建springboot项⽬引⼊依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
-新建webservice接⼝
@Component
调用webservice服务@WebService(name ="InvoiceWebService", targetNamespace = WsConst.INVOICE_NAMESPACE_URI)
public interface InvoiceWebService {
/**
* @param invData 参数
* @return 返回处理数据
*/
@WebMethod(action = WsConst.INVOICE_NAMESPACE_URI +"/PaperOutputInvoice", operationName ="PaperOutputInvoice")
@WebResult(name ="PaperOutputInvoiceResult", targetNamespace = WsConst.INVOICE_NAMESPACE_URI)
public String PaperOutputInvoice(@WebParam(name ="invData", targetNamespace = WsConst.INVOICE_NAMESPACE_URI) String invData)throws Se rviceException, MalformedURLException, RemoteException;
}
接⼝实现
@Configuration
@WebService(
// 与接⼝中指定的name⼀致
serviceName ="InvoiceWebService",
// 与接⼝中的命名空间⼀致,⼀般是接⼝的包名倒
targetNamespace = WsConst.INVOICE_NAMESPACE_URI ,
// 接⼝地址
endpointInterface ="com.juneyaoair.soapserver.service.InvoiceWebService"
)
public class InvoiceWebServiceImpl implements InvoiceWebService {
private static final Logger logger = Logger(InvoiceWebServiceImpl.class);
@Value("${sop.invoice.dpoint}")
private String endpoint;
@Override
public String PaperOutputInvoice(@WebParam(name ="invData", targetNamespace = WsConst.INVOICE_NAMESPACE_URI) String invData)throws Se rviceException, MalformedURLException, RemoteException {
logger.info("⼊参参数invData==========>:"+ invData);
}
}
编写配置类发布接⼝
@Configuration
public class WebConfig {
@Autowired
private Bus bus;
@Autowired
InvoiceWebService invoiceWebService;
/**
* 接⼝发布
* @return 返回
*/
@Bean
public Endpoint invoiceEndpoint(){
EndpointImpl endpoint =new EndpointImpl(bus, invoiceWebService);
System.out.println("---------------------------接⼝发布开始---------------------------------------");
endpoint.publish("/InvoiceWebService");
System.out.println("---------------------------接⼝发布成功---------------------------------------");
return endpoint;
}
}
启动项⽬接⼝发布成功,可以访问接⼝
点击上图蓝⾊部分查看wsdl服务描述⽂档
可以使⽤SoapUI进⾏测试
测试(java代码测试)
// 调⽤过程
Service service =new Service();
Call call =(Call) ateCall();
// 设置接⼝地址
call.setTargetEndpointAddress(new URL(endpoint));
// 设置⽅法名称
call.setOperationName(new QName("/","PaperOutputInvoice"));
// 操作的参数
call.addParameter(new QName("/","invData"), XMLType.XSD_STRING, ParameterMode.IN); // 设置返回类型
call.setReturnType(XMLType.XSD_STRING);
call.setUseSOAPAction(true);
// 给⽅法传递参数,并且调⽤⽅法
Object[] obj =new Object[]{"{\"InvInfoList\":"+json2 +"}"};
String result =(String) call.invoke(obj);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论