苍穹平台支持通过WebService暴露接口,包括定义接口、编写实现类、配置并发布,可使用SOAP方式交互。步骤包括@WebService等注解使用、MC配置发布、验证和调试。WebService是跨语言和平台的远程调用技术,用于应用集成、软件重用和跨防火墙通信。
众所周知,苍穹支持对外支持REST风格的openAPI接口,但如果项目中第三方系统需要调用SOAP方式的WebService接口进行交互,那苍穹能支持暴露这种接口吗?答案肯定是能的。
1、苍穹平台如何使用WebService
总结:
1. 苍穹对外开放WebService接口的总体步骤:定义接口&编写实现类&配置文件
2. MC添加配置并发布——验证。
1.1定义接口&编写实现类
(1)@WebService 作用在具体类上。而不是接口。一个类只有添加了此注解才可以通过Endpoint发布为一个web服务。一个添加了此注解的类,必须要至少包含一个实例方法。静态方法和final方法不能被发布为服务方法。
(2)@WebMethod此注解用在方法上,用于修改对外暴露的方法。
(3)@WebParam用于定义WSDL中的参数映射
(4)@XmlElement用于定义实体类的属性到WSDL中的映射(get/set方法上)
(5)以上述方法为例,在innerOrderReq方法中调用自己的业务逻辑。
1.2MC添加配置
MC上配置文件路径指定(本地启动也可通过启动类配置):
配置路径:/root/config/common/prop
配置参数为kws.config
这里规定暴露的webService名称为sapService,指向地址为方法的全路径; <?xml version="1.0" encoding="utf-8"?> <root> <service name="sapService" class="org.tempuri.WebserviceInterfaceImpl"></service> </root>
然后在MC中点击发布按钮。
验证:发布后可以输入http://localhost:8080/ierp/kws/
这样就可以看到我们所发布的webService服务啦。
输入的ip地址中注意kws/ ,不要少了最后这个/,如果少了可能会出现如果报错;
完成以上配置后,接下来可以通过soapui或者是Postman测试工具来测试服务的可用性。
1.3本地调试
如果是本地调试这个配置与调试阶段效果是相同的,注意在mc配置中是kws.config ,但是在调试阶段debugService下是kws.config.path;调试阶段优先级更高。
System.setProperty("kws.config.path","kwsconfig.xml") 在java包下或者静态资源下添加一个kwsconfig.xml(可以自己命名)文件,该文件记录着队列配置信息的示例
1.4常见问题
1、输入的ip地址中注意kws/ ,不要少了最后这个/,如果少了可能会出现如果报错;
2、如果苍穹存在多个数据中心时,在编写实现类时注意要指定上下文的参数,如下参考:
/* 重要的上下文设置 */ private static void setRequestContext() { /* 获取mc中的配置 */ String configs = System.getProperty(WS_CONFIG); if (StringUtils.isNotBlank(configs)) { // 设置 公司、账套、用户 RequestContextCreator.createForTripSI(configs.split(",")[0], configs.split(",")[1], configs.split(",")[2]); } }
拓展:
2、什么是WebService
一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
3、为什么要用WebService
Web Service 可以适用于应用程序集成、软件重用、跨防火墙通信等需求。不同的 业务要求不同。
具体如下:
(1) 跨防火墙通信
(2) 应用系统集成
(3) 软件和数据重用 简单来说,如果一个功能,需要被多个系统使用可以使用webservice开发一个服务端接口,供不同的客户端应用。主要应用在企业内部系统之间的接口调用、面向公网的 webservice服务。