- 相關(guān)推薦
SAP與JAVA接口技術(shù)研究與應(yīng)用
導(dǎo)語:SAP系統(tǒng)架構(gòu)之下的組件數(shù)量龐大,各個(gè)組件間需要無縫地銜接,而且開放性的SAP系統(tǒng)還要實(shí)現(xiàn)與其他系統(tǒng)平臺隨時(shí)通信,讓用戶感覺只是在一個(gè)系統(tǒng)中進(jìn)行工作。下面就由小編為大家介紹一下SAP與JAVA接口技術(shù)研究與應(yīng)用,歡迎大家閱讀!
一、SAP系統(tǒng)接口技術(shù)
(一)SAP RFC接口技術(shù)
RFC是遠(yuǎn)程函數(shù)調(diào)用的縮寫,是SAP系統(tǒng)之間以及SAP與外部系統(tǒng)之間程序通信的基本接口技術(shù),諸多其他更高層的SAP接口和通信技術(shù),如BAPI,ALE等,都是基于RFC實(shí)現(xiàn)的。是SAP公司最早提供的與其他系統(tǒng)的接口解決方案。
在系統(tǒng)間通信過程中,需區(qū)分發(fā)送系統(tǒng)和接受系統(tǒng)。RFC調(diào)用請求從發(fā)送系統(tǒng)中傳至接受系統(tǒng),其中發(fā)送請求的系統(tǒng)在通信過程中又稱為RFC客戶端,通信的另一方則稱為RFC服務(wù)器。RFC客戶端發(fā)起遠(yuǎn)程功能調(diào)用以執(zhí)行RFC服務(wù)器提供的功能。其中調(diào)用系統(tǒng)和被調(diào)用系統(tǒng)可以是SAP系統(tǒng)或非SAP系統(tǒng),此外還可以在SAP系統(tǒng)內(nèi)部將特定的應(yīng)用服務(wù)器指定為目標(biāo)系統(tǒng)。
RFC方式簡單易行,它只需要通過Java將所需參數(shù)傳遞給RFC,SAP會自動(dòng)將結(jié)果集返還給Java的List、Vector等可以用于存儲數(shù)據(jù)的方法。
(二)BAPI(Business AppIication Programming Interface)接口技術(shù)
BAPl是指SAP中經(jīng)過精確定義的業(yè)務(wù)應(yīng)用的數(shù)據(jù)和處理接口。SAP采用了Object―Oriented技術(shù),邏輯定義了系統(tǒng)的所有功能目標(biāo),并且將所有的目標(biāo)和BAPIs存儲于企業(yè)目標(biāo)庫BOR,借助于BOR和BAPI,整個(gè)SAP系統(tǒng)中的業(yè)務(wù)對象均可以通過面向?qū)ο蟮囊晥D進(jìn)行組織,并使用BAPI進(jìn)行訪問操作。在SAP內(nèi)部組件及SAP與非SAP組件之間的技術(shù)整合和業(yè)務(wù)數(shù)據(jù)交換過程中起著非常重要的作用。SAP通過BAPI實(shí)現(xiàn)組件間的信息和數(shù)據(jù)交換,并通過該標(biāo)準(zhǔn)接口把整個(gè)系統(tǒng)鏈接為一個(gè)整體。
BOR能提供的目標(biāo)類相當(dāng)于程序設(shè)計(jì)語言中的Class概念,其定義的接口主要包括基本數(shù)據(jù)和接口界面;緮(shù)據(jù)包含了所有目標(biāo)類的通用屬性,接口界面包括主字段、方法、特征、事件等功能。
(三)ALE-IDoc接口技術(shù)
ALE(Application Link and Enabling)應(yīng)用連接授權(quán),是專門為SAP與SAP之間所設(shè)計(jì)的整合中間件,它采用分布――集成式的SAP系統(tǒng)實(shí)現(xiàn)基礎(chǔ),包括經(jīng)系統(tǒng)控制的業(yè)務(wù)消息交換以及松散連接的SAP系統(tǒng)間的數(shù)據(jù)一致性管理。在ALE中,系統(tǒng)間的數(shù)據(jù)集成過程并不是通過共享一個(gè)中心數(shù)據(jù)庫,而是通過異步或同步傳輸從而實(shí)現(xiàn)了業(yè)務(wù)分布化,管理集中化,即使接受方網(wǎng)絡(luò)中斷,在下一個(gè)連通時(shí)刻,數(shù)據(jù)仍可發(fā)送到目的系統(tǒng)。從技術(shù)角度來說,ALE主要應(yīng)用于兩個(gè)有業(yè)務(wù)聯(lián)系的SAP系統(tǒng)之間的數(shù)據(jù)同步,但也支持在SAP和非SAP系統(tǒng)間的數(shù)據(jù)同步的實(shí)現(xiàn)。
二、SAP與Java程序的接口分析應(yīng)用
(一)JCO與JAVA連接
1.建立連接池。連接池的創(chuàng)建通過調(diào)用JCO方法addClientPool()來實(shí)現(xiàn)。
2.創(chuàng)建原數(shù)據(jù)。原數(shù)據(jù)對象通過調(diào)用方法createRepository()來創(chuàng)建。原數(shù)據(jù)對象包含了所有在運(yùn)行期間函數(shù)組的其中的數(shù)據(jù)。
3.創(chuàng)建函數(shù)模版。函數(shù)模版對象通過調(diào)用方法getFunctionTempIate()獲得。
4.創(chuàng)建函數(shù)。通過調(diào)用方法getFunction()創(chuàng)建函數(shù)對象。
5.獲取連接。通過調(diào)用getClient()從連接池中獲取連接對象。
6.提供輸入?yún)?shù)。通過調(diào)用getImportParameterList()給函數(shù)賦輸人參數(shù)值。
7.執(zhí)行函數(shù)。通過調(diào)用方法execute()來執(zhí)行函數(shù)。
8.獲取結(jié)果集。通過調(diào)用方法getExportParameterList()獲取RFC的結(jié)果集。
9.斷開連接池。通過調(diào)用方法removeClientPool()來斷開連接。
(二)接口性能優(yōu)化
1.因?yàn)檫B接池中的連接是可重用和可保持的,所以可以降低系統(tǒng)開銷,最大并發(fā)連接數(shù)量的限制避免過多地占用SAP系統(tǒng)的資源,盡管如此,也不要使用過小的最大并發(fā)連接數(shù)從而造成應(yīng)用系統(tǒng)的性能瓶頸,為了容納由應(yīng)用系統(tǒng)造成的額外負(fù)載,SAP系統(tǒng)要經(jīng)過一些配置。
2.使用一個(gè)新的function對象時(shí),為了提高性能而重用已有的function對象,不僅是多于的,而且還很危險(xiǎn),因?yàn)镴Co的Repository為每個(gè)function模塊緩存了元數(shù)據(jù),如果重用一個(gè)含有表參數(shù)的function,而這個(gè)function中的表中的行數(shù)據(jù)沒有被清除,那么更多的行數(shù)據(jù)會添加到這個(gè)表上,從而會造成錯(cuò)誤的結(jié)果,這是使用一個(gè)新的function對象時(shí)要注意的。
3.只需使用一個(gè)Repository對象,因?yàn)镽epository對象可以動(dòng)態(tài)重新得到SAP function模塊中的元數(shù)據(jù)并重新緩存,所以使用一個(gè)就夠了,如果使用過多的Repository對象,會降低應(yīng)用系統(tǒng)和SAP系統(tǒng)的性能
4.應(yīng)用系統(tǒng)只使用了function中的一小部分參數(shù),為了提高性能,可以使用setActive()方法將那些應(yīng)用程序不使用的參數(shù)設(shè)置為非活動(dòng)狀態(tài),包括Table Parameter、ParameterList以及JCO.Request對象
5.添加多行數(shù)據(jù)到JCO的Table對象中時(shí),使用appendRows方法代替appendRow()方法,這樣可以提高性能
6.為了提高性能,JCO只在訪問連接池和Repository對象時(shí)采取同步,其他的操作都是異步的,在多線程的環(huán)境下,不同線程之間共享對象(比如Table對象)是值得警惕的,并且一個(gè)連接對象是不能共享訪問的,這樣導(dǎo)致發(fā)生異常Exception
三、結(jié)論
JCO是一個(gè)高性能的,基于JNI的中間件,它實(shí)現(xiàn)了SAP的RFC協(xié)議。當(dāng)用戶面臨流程或者數(shù)據(jù)整合方面的需求的時(shí)候,就迫切需要一種高效的方式,在SAP系統(tǒng)和Java平臺之間實(shí)時(shí)地交換數(shù)據(jù)。本文主要通過對SAP接口和JCO組件的重點(diǎn)介紹,讓大家對此類接口有一個(gè)直觀的認(rèn)識,為日常接口開發(fā)工作提供參考。
【SAP與JAVA接口技術(shù)研究與應(yīng)用】相關(guān)文章:
Java接口介紹09-07
java面向接口編程08-01
Java接口是什么07-21
Java圖形用戶接口09-04
介紹Java array接口10-06
Java中接口的知識匯總07-29
Java語言接口與繼承的本質(zhì)06-28
關(guān)于Java各種接口的介紹09-07
深入了解Java中的接口09-10
Java中Executor接口用法大全08-06