SMP3.0学习笔记之十七 与非SAP后端系统集成之SOAP WebServices篇
来源:互联网 发布:淘宝大兴宠物怎么样 编辑:程序博客网 时间:2024/05/21 21:37
作者:穿行印象
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:
http://tomcat.apache.org/download-70.cgi
apache-tomcat-7.0.47.exe
安装Tomcat,端口号8888。
下载AXIS2:
http://axis.apache.org/axis2/java/core/download.cgi
axis2-1.6.2-war.zip
axis2-1.6.2-bin.zip
将axis2-1.6.2-war.zip解压之后的axis2.war放到tomcat的webapps目录下,之后使用可以使用如下URL测试AXIS2是否部属成功:
http://192.168.174.129:8888/axis2/
查看其WSDL,并且保存成文件,以备后用(截图不全):
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.
3. QUERY的映射
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=0,FlightID=1)
之后定义SOAP服务的返回结果与OData实体的对应关系:
http://localhost:8080/gateway/odata/sap/MyS2O;v=1/FlightSet(AirlineID=1,FlightID=2)
来精确获取AirlineID=1且FlightID=2的Flight信息了:
- SMP3.0学习笔记之十七 与非SAP后端系统集成之SOAP WebServices篇
- SMP3.0学习笔记之十六 与非SAP后端系统集成之数据库篇
- SMP3.0学习笔记之二 第一个SMP Application
- SMP3.0学习笔记之七 使用Kapsel Logon 插件
- SMP3.0学习笔记之十一 与第三方HTML5框架(例如Sencha Touch)集成
- SMP3.0学习笔记之十五 AppBuilder与Kapsel Plugins集成
- php webservices之soap篇
- SMP3.0学习笔记之六 使用Kapsel搭建混合应用准备篇
- SMP3.0学习笔记之一 准备篇
- SMP3.0学习笔记之十三 使用AppBuilder获取数据之二
- SMP3.0学习笔记之三 使用OData SDK或者MAF Login组件进行OnBoarding
- SMP3.0学习笔记之四 使用OData Native SDK获取数据
- SMP3.0学习笔记之五 使用OData Native SDK修改数据
- SMP3.0学习笔记之八 使用Kapsel Update插件实现移动应用的自动更新
- SMP3.0学习笔记之九 使用Kapsel Logger 插件记录日志
- SMP3.0学习笔记之十二 使用AppBuilder读取OData服务的数据
- SMP3.0学习笔记之十四 AppBuilder中使用Chart组件
- SMP3.0学习笔记之十八 实现GCM的消息推送
- 使用eclipse 4.3 经常出现卡死、无响应情况的解决方法
- 不错的linux常用命令
- CALayer使用3
- Python发送GET和POST请求
- vi vim命令
- SMP3.0学习笔记之十七 与非SAP后端系统集成之SOAP WebServices篇
- jQuery Mobile 工具栏
- 配置android开发环境
- SMP3.0学习笔记之十八 实现GCM的消息推送
- ios 面试题
- CSS入门四
- SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务
- C++语言笔记系列之五——引用(&)和this指针详解
- 如何双击就以管理员身份运行批处理