SMP3.0学习笔记之十七 与非SAP后端系统集成之SOAP WebServices篇
作者:穿行印象 http://blog.sina.com.cn/s/blog_7a9486880101qr6k.html 上篇尝试使用SMP Integration Gateway将后端的数据库table映射为SMP3.0可以消费的OData服务。这次我使用SMP Integration Gateway将SOAP Webservice服务映射为SMP3.0可以消费的OData服务。 ? 下载Tomcat7: 下载AXIS2: 将axis2-1.6.2-war.zip解压之后的axis2.war放到tomcat的webapps目录下,之后使用可以使用如下URL测试AXIS2是否部属成功: ? ? http://localhost:8888/axis2/services/MyAirlineService/getFlights?airlineID=1 精确获取airlineID=1,flightID=1的航班信息的SOAP结果如下: http://localhost:8888/axis2/services/MyAirlineService/getFlight?airlineID=1&flightID=1 下面的例子以上面的两个SOAP方法为例,将getFlights和getFlight两个SOAP服务映射为OData服务。 1. Ecplipse中创建一个OData Service Implementation Project ? 2. 这个Project中新建一个OData Model,名字为S2O. ?
? ? Endpoint: http://localhost:8888/axis2/services/MyAirlineService.MyAirlineServiceHttpSoap Namespace: http://axis2test.sap.com Operation: getFlights PortType: MyAirlineServicePortType 这些信息在SOAP的WSDL中可以找到。 ? ? 返回结果集映射好之后,需要使用java将OData的过滤条件转变为SOAP的过滤条件,比如下面的OData请求: http://localhost:8080/gateway/odata/sap/MyS2O;v=1/FlightSet?$filter=AirlineID?eq 1 需要将后面的过滤条件(AirlineID eq 1)提取出来,然后发送给后端的SOAP服务。这就需要使用Java代码来实现。要实现这个功能首先点击QUERY操作的“Define Custom Logic for Request”:
此时会生成一个java 类: 需要我们自己完成对过滤条件的提取与转换。我的代码是这样的: ? 之后测试一下如下URI: http://localhost:8080/gateway/odata/sap/MyS2O;v=1/FlightSet?$filter=AirlineID?eq 1 测试结果: 4. READ的映射 ? ? ? ? http://localhost:8080/gateway/odata/sap/MyS2O;v=1/FlightSet(AirlineID=1,FlightID=2) 来精确获取AirlineID=1且FlightID=2的Flight信息了: ? ?????使用Integration Gateway将SOAP服务映射成OData之后,就可以使用前面讨论的SMP Native OData SDK或者SMP Kapsel开发所需要的移动应用并且通过SMP消费这些OData服务了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |