數據交換平臺規范_第1頁
數據交換平臺規范_第2頁
數據交換平臺規范_第3頁
數據交換平臺規范_第4頁
數據交換平臺規范_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1章 數據交換平臺規范§1.1 基本技術規范u 數據交換平臺服務器采用滿足J2EE規范的應用服務器實現u 數據交換平臺包含的數據交換服務使用純Java接口作為統一的抽象接口描述u 數據交換平臺包含的數據交換服務可以發布為多種形式,包括:EJB、Servlet、WebService等u 數據交換平臺的數據,使用XML格式進行表示u 數據交換平臺要求提供安全認證和授權訪問機制,確保數據交換的安全§1.2 數據交換接口規范數據交換平臺中的數據交換接口,統一通過純Java接口來進行表述,對這類Java接口,要求滿足如下規范:u 接口方法的參數和返回值要求實現序列化接口u 接口方法

2、的參數和返回值,如果是數據集合,統一通過Rowset結構來實現,每個數據集合參數,需要標明RowSet結構的名字下面是一個數據交換接口的例子:/* * * 接口: 客戶基本信息查詢 * 說明: 本接口提供對營銷用點客戶的基本信息查詢功能 */public interface bo_cust_info /* * 查詢客戶基本信息 * param custId : 客戶號 * return : 包含客戶信息的結果集,如果沒有該客戶數據,返回空的結果集 * 返回結果集名: epm/ar_cust_info */public DSRowSet queryByCustId (String custId)

3、;§1.3 RowSet數據集合結構說明數據交換過程中,由于數據格式的混亂,常常帶來很多附加的工作,這些工作往往導致系統出現錯誤,或降低了系統的效率,所以,應當采用盡量簡單、統一的數據格式。數據集是數據交換過程中經常會遇到的數據結構,例如,查詢結果往往包含多行數據。結果集可以有很多種實現方式,數據交換平臺中,統一使用稱為RowSet的數據集結構。通過如下的例子來說明RowSet的結構:<rowset label="客戶基本信息" name="epm/AR_CUST_INFO"><row ><CUST_ID>0

4、000669375</CUST_ID><CUST_SC_ID>11000082</CUST_SC_ID><CUST_SNAME></CUST_SNAME><CUST_NAME>某客戶名</CUST_NAME><CUST_ADDR>客戶地址</CUST_ADDR><CONTACT></CONTACT><CONT_TEL></CONT_TEL><CUST_TYPE>22</CUST_TYPE><AREA_SECT_

5、ID>0100009</AREA_SECT_ID><SUPPLY_DATE></SUPPLY_DATE><CUST_STATUS>9</CUST_STATUS><STATUS_CHG_DATE></STATUS_CHG_DATE><ELEC_KIND>1</ELEC_KIND><CONTACT_CAPA>4</CONTACT_CAPA><INSTALL_CAPA>0</INSTALL_CAPA><BALANCE_ID>00

6、00669375</BALANCE_ID><AREA_NO>01</AREA_NO><POWER_CUT_TAG>0</POWER_CUT_TAG></row></rowset>如上是RowSet的結構XML表示,可見,這個結構很容易理解,每個rowset節點描述一個數據集,每個row節點描述一個數據行,row節點下,每個子節點,描述一個數據列的值。這里,需要注意rowset節點的名字屬性,每個名字唯一定義一個數據集的元數據結構,這個結構稱為RowSetDef,數據交換平臺統一提供對這個名字的結構解釋,下面是如

7、上數據集的結構描述:<rowsetdef name="epm/train/AR_CUST_INFO" label="客戶基本信息"><column index="0" name="CUST_ID" label="客戶編號" datatype="CHAR"></column><column index="1" name="CUST_SC_ID" label="客戶快捷碼" da

8、tatype="VARCHAR"></column><column index="2" name="CUST_SNAME" label="戶名拼音碼" datatype="VARCHAR"></column><column index="3" name="CUST_NAME" label="客戶名稱" datatype="VARCHAR"></column&

9、gt;<column index="4" name="CUST_ADDR" label="客戶地址" datatype="VARCHAR"></column><column index="5" name="CONTACT" label="聯系人" datatype="VARCHAR"></column><column index="6" name="CO

10、NT_TEL" label="聯系電話" datatype="VARCHAR"></column><column index="7" name="CUST_TYPE" label="客戶類別" datatype="VARCHAR"></column><column index="8" name="AREA_SECT_ID" label="區段編號" datat

11、ype="VARCHAR"></column><column index="9" name="SUPPLY_DATE" label="新裝時間" datatype="TIMESTAMP"></column><column index="10" name="CUST_STATUS" label="客戶狀態" datatype="VARCHAR"></colum

12、n><columnindex="11" name="STATUS_CHG_DATE" label="狀態時間" datatype="TIMESTAMP"></column><column index="17" name="BALANCE_ID" label="收費號" datatype="CHAR"></column><column index="19" n

13、ame="AREA_NO" label="區域編號" datatype="CHAR"></column><column index="20" name="POWER_CUT_TAG" label="截水狀態" datatype="VARCHAR"></column></rowsetdef>數據交換平臺提供對RowSet數據集的解析API。§1.4 對MsgInfo數據結構的說明MsgInfo是

14、基于XML的描述接口參數和返回結果的數據結構如下是一個MsgInfo的結構:<msginfo><parameters><parameter name="returnCode">0</parameter><parameter name="returnMessage"></parameter><parameter name="param1">value1</parameter></parameters><rowsets>

15、<rowset label="客戶基本信息" name="epm/AR_CUST_INFO"><row ><CUST_ID>0000669375</CUST_ID><CUST_SC_ID>11000082</CUST_SC_ID><CUST_SNAME></CUST_SNAME><CUST_NAME>某客戶名</CUST_NAME><CUST_ADDR>客戶地址</CUST_ADDR><CONTACT>

16、;</CONTACT><CONT_TEL></CONT_TEL><CUST_TYPE>22</CUST_TYPE><AREA_SECT_ID>0100009</AREA_SECT_ID><SUPPLY_DATE></SUPPLY_DATE><CUST_STATUS>9</CUST_STATUS><STATUS_CHG_DATE></STATUS_CHG_DATE><ELEC_KIND>1</ELEC_KIND><

17、;CONTACT_CAPA>4</CONTACT_CAPA><INSTALL_CAPA>0</INSTALL_CAPA><BALANCE_ID>0000669375</BALANCE_ID><AREA_NO>01</AREA_NO><POWER_CUT_TAG>0</POWER_CUT_TAG></row></rowset></rowsets></msginfo>此結構中,根節點是msginfo,包含一個parameters節點和一個

18、rowsets節點,parameters節點包含簡單的變量參數,而rowsets包含多個RowSet數據集。如下是一個請求參數的例子:<msginfo><parameters><parameter name="custId">00001234</parameter></parameters></msginfo>如下是相應的成功返回值:<msginfo><parameters><parameter name="returnCode">0</pa

19、rameter><parameter name="returnMessage"></parameter></parameters><rowsets><rowset label="客戶基本信息" name="epm/AR_CUST_INFO"><row ><CUST_ID>0000669375</CUST_ID><CUST_SC_ID>11000082</CUST_SC_ID><CUST_SNAME>

20、</CUST_SNAME><CUST_NAME>某客戶名</CUST_NAME><CUST_ADDR>客戶地址</CUST_ADDR><CONTACT></CONTACT><CONT_TEL></CONT_TEL><CUST_TYPE>22</CUST_TYPE><AREA_SECT_ID>0100009</AREA_SECT_ID><SUPPLY_DATE></SUPPLY_DATE><CUST_STATUS

21、>9</CUST_STATUS><STATUS_CHG_DATE></STATUS_CHG_DATE><ELEC_KIND>1</ELEC_KIND><CONTACT_CAPA>4</CONTACT_CAPA><INSTALL_CAPA>0</INSTALL_CAPA><BALANCE_ID>0000669375</BALANCE_ID><AREA_NO>01</AREA_NO><POWER_CUT_TAG>0</P

22、OWER_CUT_TAG></row></rowset></rowsets></msginfo>數據交換平臺提供對MsgInfo結構的解釋API§1.5 WebService接口規范WebService是不同技術平臺下應用系統進行數據交換的最好的方案,尤其是.NET平臺和J2EE平臺環境間的數據交換。在數據交換平臺上通過webservice部署的接口服務,要求滿足如下規范:u 接口的方法只包含一個字符串類型的輸入參數,這個參數是一個MsgInfo結構,具體的參數打包在MsgInfo中進行傳遞u 接口的返回值也是一個字符串類型的參數

23、,這個參數是一個MsgInfo結構,具體的返回數據打包在MsgInfo中,這個MsgInfo中,要求至少包含一個參數returnCode,當returnCode = 0時,表示調用成功,否則,表示調用失敗,如果具體的錯誤代碼代表不同的含義,由接口自己設定;另外,MsgInfo中可以包含一個可選的returnMessage參數,描述錯誤的信息。按照如上規范,前面bo_cust_info接口(在webservice中轉換成BOCustInfo)的wsdl描述是:<?xml version="1.0" encoding="UTF-8"?><w

24、sdl:definitions targetNamespace="urn:custinfo.ws.epm" xmlns:impl="urn:custinfo.ws.epm" xmlns:apachesoap="/xml-soap" xmlns:wsdlsoap="/wsdl/soap/" xmlns:soapenc="/soap/encoding/" xml

25、ns:xsd="/2001/XMLSchema" xmlns:wsdl="/wsdl/"> <wsdl:types> </wsdl:types> <wsdl:message name="methodRequest"> <wsdl:part name="msgParam" type="soapenc:string"/> </wsdl:message>

26、<wsdl:message name="methodResponse"> <wsdl:part name="methodReturn" type="soapenc:string"/> </wsdl:message> <wsdl:portType name="BOCustInfo"> <wsdl:operation name="queryByCustId" parameterOrder="msgParam"> <

27、wsdl:input name="methodRequest" message="impl:methodRequest"/> <wsdl:output name="methodResponse" message="impl:methodResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="BOCustInfoSoapBinding" type="impl:BO

28、CustInfo"> <wsdlsoap:binding style="rpc" transport="/soap/http"/> <wsdl:operation name="queryByCustId"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="methodRequest"> <wsdlsoap:body u

29、se="encoded" encodingStyle="/soap/encoding/" namespace="urn:custinfo.ws.epm"/> </wsdl:input> <wsdl:output name="methodResponse"> <wsdlsoap:body use="encoded" encodingStyle="/soa

30、p/encoding/" namespace="urn:custinfo.ws.epm"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="BOCustInfoService"> <wsdl:port name="BOCustInfo" binding="impl:BOCustInfoSoapBinding"> <wsdlsoap:addres

31、s location="http:/localhost:8080/epm/services/BOCustInfo"/> </wsdl:port> </wsdl:service></wsdl:definitions>數據交換平臺對每個接口提供客戶端API,便于客戶端進行訪問。第2章 數據交換客戶端規范§2.1 WebService客戶端§2.1.1 Java環境如果客戶端是Java環境,可以使用數據交換平臺提供的數據交換服務接口客戶端API來進行訪問。以BOCustInfo接口為例,客戶端訪問代碼如下:/BOCus

32、tInfoSoapBindingStub 是服務接口客戶端API中的代理類epm.ws.custinfo.BOCustInfoSoapBindingStub binding;/設定訪問地址String address = "http:/localhost:8080/epm/services/BOCustInfo"/構造連接try binding = (epm.ws.custinfo.BOCustInfoSoapBindingStub) new epm.ws.custinfo.BOCustInfoServiceLocator().getBOCustInfo(new .URL(

33、address);catch (javax.xml.rpc.ServiceException jre) if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new Exception("JAX-RPC ServiceException caught: " + jre);/創建參數MsgInfo msg = new MsgInfo();msg.setParameter("custId","0000669375" );/遠程調用接口服務String value = binding.queryByCustId(msg.getXMLString();S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論