介紹
從年以來IBM為Java引入了訪問SAP商業應用程序編程接口(BAPI)和遠程函數調用(RFC)的工具 IBM在服務器端的Java角色的早期實現意味著運行時間組件的服務質量(QoS)和可靠性將成為和工具本身一樣重要 這導致用於Java的VisualAge這個絕好的工具和其高度可靠的運行期被構建在IBM通用連接框架(CCF)上
利用WebSphere Studio開發工具家族IBM接受了JC/JCA標准並把它們作為它的新工具的基礎結構和一個源碼開放平台連合起來 隨著這個新工具的到來一個使用網絡服務描述語言( WSDL)作為描述服務的方法的概念的新結構和企業服務的概念一起被引入 雖然上一代SAP工具是基於CCF但是新一代的工具提供了用於與服務器通訊的後台機制這個服務器使用利用資源適配器檔案( RAR)文件的Java模塊 這就為一個RAR文件提供了一個標准的不依賴工具的方法與訪問所有後台的工具程序相互作用讓前端網絡應用程序和後端應用程序的開發者便於理解支持相互通訊而不必在乎使用的什麼工具或者訪問方案
IBM提供了一個能在WebSphere產品和SAP系統之間交互作用的RAR文件名為WebSphere Adapter for 本文中我將介紹IBM下一代SAP工具的概述以及如何與WebSphere Studio Application Developer配合使用以及一個企業服務的介紹
WebSphere Studio JCA工具
在WebSphere Studio Application Developer整合版(以後簡稱Application Developer)中的可利用的特性是對企業應用程序整合任務很重要的三個關鍵組件
· 企業服務
· JCA工具插件
· 業務處理流程
在新工具中企業服務被用作連接後端數據的一種機制比如連接一個SAP服務器上的數據 這個到後端的連接可以在下列情況發生
· 在設計期間
使用JCA工具插件Application Developer與一個SAP服務器連接查找適當的BAPI構建WSDL文件來描述它們構建代理bean組件等等
· 在運行期間
使用WebSphere Adapter for (下文稱為WebSphere SAP適配器)一旦你有描述它們的WSDL文件將有兩種方法訪問後端
構建不使用企業服務的代理bean組件
構建代理的 bean組件使用企業服務使其能使用自動管理連接數據流等等
在詳細地討論這些方法之前讓我們仔細看看這些組件方法即企業服務JCA工具插件和業務處理流程
企業服務
想一下一個企業服務作為存在於你的企業應用程序中的一類操作程序被完全的使用WSDL描述 與一般使用HTTP上的SOAP訪問數據源的網絡服務不同一個企業服務可以被綁定到任何協議上的任何數據源 就SAP而言一個企業服務將使用WebSphere SAP適配器在SAP服務器上到達要求的BAPI/RFC 圖顯示出企業服務WSDL文檔結構
圖WSDL文檔
在WSDL文檔的上部你能看到Abstract Service Interface Definition(抽象服務接口定義)在 WSDL中被稱為PortType PortType由一個或多個輸入和輸出操作組成被消息描述 消息使用XML Schema報告用來描述流入和流出服務的業務數據
WSDL文檔的下部讓你描述服務接口如何實現而在哪裡可以查找到它
在WSDL中是通過擴展元素完成的
舉例來說
· 被一個服務提供者特定端口擴展元素描述的服務位置
· 由綁定部分的服務提供者特定擴展元素描述的服務實現
能夠擴展WSDL是一個非常有效的特點
因為它意味著你可以描述任何類型的服務
它不局限於網絡服務
圖
顯示在WebSphere Studio Application Developer中有效的另一個服務
圖
WebSphere Studio服務
JCA工具插件 JCA
能使企業信息系統(EIS)通過供應商提供的資源適配器插入到應用程序服務器環境
IBM提供JCA工具插件作為JCA
的一個擴展
讓EIS提供者為WebSphere Studio編寫自己的插入式組件
提供給開發者團體對他們的組件的工具支持
JCA工具插件定義了如何提供到WSDL的EIS特定綁定擴展
以及定義了一個工具環境如何與一個EIS系統相互作用
取得它提供的函數的元信息
JCA工具插件還定義了一個EIS系統如何提供代碼生成作用
並且覆蓋了使用解釋EIS系統服務調用方法的元數據支持的JCA通用客戶端接口CCI擴展
業務處理流程
業務處理流程(下文簡稱流程)技術是一個中間件的一個重要的組成部分 IBM很久前就提供流程技術作為許多產品的一部分(最著名的有用於基於人的工作流程的MQSeries Workflow用於消息流的MQSeries Integrator用於基於MQ適配器的MQSeries Adapter Offering和用於基於Java適配器的Enterprise Access Builder)這個新的純Java流程引擎被編寫成一個WebSphere企業服務使流程技術和其它JEE提供的服務能夠緊密整合
一個流程由一系列的服務節點組成每個節點表示一個服務操作的調用服務節點由指明執行順序的控制連接捆綁在一起在相應的情況下將發生相應的執行操作服務節點之間的數據流使用數據連接構造這些數據連接可以包含數據映射節點用於當服務節點之間的消息不相配的情況流程組成使用流程定義標注語言(FDML)描述
Application Developer提供了基於可視化流程的工具定義了應用程序衍生物如後端適配器Java bean組件EJB服務或者其它流程之間的信息順序和流程(在WebSphere Studio Application Developer x版中只有無中斷短期運轉和同步流程被支持這類流程被認為是一個微流程或服務流程可中斷的長期運行和異步流程將在以後的版本中發布)
WebSphere Adapter for
WebSphere SAP適配器提供了一個用於SAP的通道在SAP R/系統和基於Java應用程序之間通信WebSphere SAP Adapter由三部分組成(圖)
· 基本連接器
· JCA資源適配器
· JCA工具插件
圖: WebSphere SAP適配器
基本連接器
基本連接器包含用於訪問SAP R/系統的運行時間類它實現SAP RFC協議的客戶端接口SAP RFC協議是依據用於Java的通用RFC接口這是一個用於RFC訪問的不依賴中間件的層這樣使用基本連接器構建的應用程序可以在運行期使用不同的SAP R/存取方法而不用重新編碼用於Java的通用RFC接口的一個Java本地實現(JNI)包含了基本連接器
JCA資源適配器
JCA提供提供了一個用於資源適配器的通用基礎結構程序設計模型這個通用基礎結構程序設計模型定義了一個兼容JCA的應用程序服務器和一個JCA資源適配器之間的結合它能使應用程序服務器控制資源適配器的狀態雖然資源適配器可以以一種容易的方法利用應用程序服務器提供的服務質量(比如安全事務連接池等等)WebSphere SAP適配器中的JCA資源適配器組件實現JCA 規范
JCA工具插件
WebSphere SAP適配器中的JCA工具插件組件使適配器可插入WebSphere Studio Application Developer
圖JCA工具插件
JCA工具插件包含下面的組件
· 一套WSDL擴展元素實現定義了一個到WebSphere SAP適配器的指定的連接器綁定
· 一套運行時間組件使WebSphere SAP適配器能被作為一個服務被調用
· 一個工具描述符文件被工具環境用來使用WebSphere SAP適配器
WebSphere應用程序服務器的服務質量(QoS)
SAP連接器在用於Java的VisualAge下和在WebSphere Application Server 以後的版本下運行時享有刀槍不入的名聲運行時間和服務器組件的可靠性更是和新的兼容JC的適配器和上面討論到的新出現的工具標准有聯系WebSphere應用程序服務器中整體的服務質量由三個服務提供
· 連接池
· 事務管理
· 安全管理
連接池
當從一個SAP服務器檢索數據的時候總事務處理時間(從連接來接收數據到關閉連接)的大部分時間花費在連接本身連接池可以緩和這個瓶頸當你要求一個連接的時候傳送一個處理到下一個已經在准備狀態的有效連接通過消除連接時間性能被極大地改善並且可以伸縮操作根據你的需要預先確定連接池中的連接數
WebSphere應用程序服務器中的EJB容器支持管理連接意味著在這個版本中企業bean組件可以使用管理環境然而這個支持沒有擴展到網絡容器所以servlets不能直接地使用管理環境它們必須調用一個企業bean組件來利用管理環境
你可以通過指定SAP連接工廠的Maximum Connections字段的值限制任一時間存在的最大連接數在這個連接數到達以後不會創建新的連接並且拋出 javaxresourcespiResourceAllocationException 意外 你也可以指定新的連接請求等待一段時間讓一個連接成為有效連接這段時間可以在連接工廠的Connection Timeout字段中設定你還可以通過指定連接工廠的Minimum Connections字段的值限制任一時間存在的最小連接數
在設置最大連接和最小連接字段時沒有推薦的設定值最大連接數的理想值取決於從WebSphere 應用程序服務器到SAP的網絡流通量設置了超過網絡可以處理的連接數值將導致效率下降最小連接數取決於你可以承受(指成本)的保持連接的連接數如果這個值被設置與最大連接數相等那麼會很理想
為了取得WebSphere應用程序服務器中的管理連接(圖)
JEE應用程序調用查找一個SAP連接工廠
WebSphere應用程序服務器把一個SAP連接工廠從JNDI服務器返回到JEE應用程序
JEE應用程序向SAP連接工廠請求一個到SAP服務器的連接SAP連接工廠發送一個管理連接的請求到WebSphere應用程序服務器
WebSphere應用程序服務器從它的連接池返回一個管理連接到JEE應用程序
JEE應用程序使用管理連接發送並從一個資源適配器接收數據
資源適配器使用管理連接從SAP發送並接收數據
圖連接池
事務管理
基本上有三種事務
· 沒有事務
· 本地事務
這些事務被資源管理程序(即SAP資源適配器)內部管理並且當只有一個資源管理程序被調用的時候使用本地事務只支持單階段委托(PC)因為它們只參考一個SAP系統
· 全局事務
全局事務(亦稱JTA或者XA事務)被一個事務管理程序管理控制並協調跨多個資源管理程序的事務這個事務管理程序按如下方式協調跨多個資源管理程序的二階段委托(PC)
階段
§ 事務管理程序要求所有的資源管理程序准備委托它們的工作
§ 如果一個資源管理程序可以委托它的工作它肯定地答復並把它的可回收的數據保存到永久存儲器中
§ 一個否定的答復報告因某原因不能提交委托
階段
§ 以階段的答復為根據事務管理程序命令所有的資源管理程序要麼委托要麼重新運行為全局事務做的工作
如果資源適配器支持全局事務那麼它還必須實現對於PC的支持這將允許事務管理程序使PC最優化
有兩種類型的最優化(目前在WebSphere應用程序服務器v中不支持)
· 本地事務最優化
在一個全局事務不需要PC的情況下強制使用PC 例如當只有一個資源管理程序被引用的時候使用PC將造成不必要的額外消這時候應該只使用PC這個結果是事務管理程序跳過准備階段直接委托或者返回
· 上一個資源的最優化
亦稱最後服務最優化這種類型的最優化允許使用在一個全局事務中的單一PC資源連同許多PC資源在事務提交委托時PC資源將首先被准備如果成功PC資源將被調用來委托緊接著是一個PC資源的委托調用
WebSphere SAP適配器的CSD版還提供了一個事務屬性被設置為NoTransaction的RAR文件 如果你在一個有上一資源最優化和一個額外的PC資源的PC方案中正在使用WebSphere SAP適配器這個文件將非常有用 因為上一資源最優化僅僅使用單一PC資源工作這個方案將不會使用支持本地事務的WebSphere SAP適配器工作 然而因為WebSphere SAP適配器的默認情況不支持事務自動委托每個BAPI/RFC調用所以你必須知道處理與這種行為相關聯的問題 比如有可能在全局事務期間一些BAPI調用將被成功的執行意味著它們被自動委托 如果當訪問參與事務的一個資源的時候發生一個錯誤事務可能失敗並被退回這可能導致SAP中改變的一個狀態保持不變的狀態而其它改變的資源被丟棄
安全管理
為了創建到SAP服務器的一個連接一定有一個SAP的某種形式開始鑒別這個連接請求者是誰有兩種驗證機制
· 應用程序管理驗證
這需要應用程序通過ConnectionSpec向SAP傳送用戶名和口令證書如果ConnectionSpec中的證書沒有設置那麼SAP連接工廠的用戶名和口令字段證書將被使用
· 容器管理驗證
應用程序依賴應用程序服務器提供安全證書而不是應用程序自己指定證書
在WebSphere應用程序服務器V中只支持應用程序管理驗證(JCA規范中的選項C)用於判斷應用程序或者容器管理安全是否應使用的配置描述符的<resauth>元素被忽略
結論
WebSphere SAP適配器連同WebSphere Studio Application Developer和WebSphere應用程序服務器一起提供一種在使用企業服務和普通的WSDL描述符文件的網絡應用程序中整合SAP系統的方法這個新的連接性基於SAP適配器在前一版本中享有重要的服務質量把它擴展為一個開放式體系結構
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26590.html