我們正嘗試從獨立的Java應用程序與SAP R3進行通信 我們將使用JCo 3.0庫。SAP JCo客戶端vs服務器
從文檔中我瞭解到有兩種方式可以與SAP連接。
- 爲JCO 客戶
- 爲JCO 服務器
起初我確信,我們的應用程序將需要連接的客戶端JCO。但我開始懷疑。
我們的應用發送數據。 (例如訂單狀態的更新) 但是,我們的應用程序也接收數據(例如,SAP推動對主數據的改變 - MATMAS)。
那麼,它是否需要成爲一個客戶端或服務器?
我們正嘗試從獨立的Java應用程序與SAP R3進行通信 我們將使用JCo 3.0庫。SAP JCo客戶端vs服務器
從文檔中我瞭解到有兩種方式可以與SAP連接。
起初我確信,我們的應用程序將需要連接的客戶端JCO。但我開始懷疑。
我們的應用發送數據。 (例如訂單狀態的更新) 但是,我們的應用程序也接收數據(例如,SAP推動對主數據的改變 - MATMAS)。
那麼,它是否需要成爲一個客戶端或服務器?
JCo 3.0 API模型中沒有JCo客戶端,但只有JCoDestinations
而不是從2.1 API模型替換舊的JCO.Client
。
而且2種方式經由RFC協議連接到SAP是:
對於入站RFC,您需要使用JCoDestination
在ABAP端執行遠程功能模塊。對於出站RFC,您需要在SAP網關注冊JCoServer
,SAP網關將接收來自ABAP端的傳入請求,以便在Java端處理遠程功能模塊。 在這兩個通信方向都有一個請求,並且可能還有對這個請求的響應,所以數據流在入站和出站RFC通信中都是雙向的。入站和出站只區分誰啓動RFC調用。
而且關於JCoServer
,通常還需要定義一些JCoDestination
以及對儲存,因爲這是一個默認的JCoServer
用於從ABAP後端查詢所需的RFC元數據需要。如果沒有這樣的JCoRepository
,JCoServer
將無法解釋傳入的RFC請求數據。因此,在典型的JCo服務器場景中,您需要:JCoServer
和JCoDestination
(用於服務器的JCoRepository
)。
對於兩種用例(客戶端調用和存儲庫查詢),您都可以對JCoDestination
使用相同的配置,但SAP建議定義單獨的配置,這些配置在連接池大小的定義方面更加靈活,並且允許單獨的RFC授權用例。
即使該類不再被稱爲客戶端,它的功能仍然充當客戶端。 – vwegert
@vwegert:客戶端和目的地在語義上有區別。舊的'JCO.Client'表示一個具體的RFC連接,而新的'JCoDestination'表示一個抽象的目標系統,就像在ABAP側的事務SM59中定義的目標一樣。 – Trixx
我部分同意@vwegert;在我看來'JCODestination'仍然是一個客戶端。 SAP提供了示例java文件來說明JCODestination的用法,甚至他們稱之爲「分步客戶端」。另一方面,我喜歡你在答案中提出的方式。你清楚地解釋說,使用「客戶端」這個詞可能會引起混淆,因爲它也可能涉及遺留類。 - 從現在開始,我將使用「入站」和「出站」兩個字。 – bvdb