我们正在尝试从独立的Java应用程序与SAP R/3通信我们将为此使用JCO 3.0库。
我知道,我知道有两种与SAP连接的方法。
- 作为JCO 客户端
- 作为JCO 服务器
首先,我坚信我们的申请需要作为JCO客户端连接。但是我开始怀疑。
我们的应用程序发送数据。(例如,订单状态更新)但是我们的应用程序也接收数据(例如,SAP将更改推向主数据-Matmas)。
那么,它需要是客户端还是服务器?
JCO 3.0 API模型中没有JCO客户端,但仅JCoDestinations
代替了2.1 API模型替换旧的JCO.Client
。
和通过RFC协议连接到SAP的两种方法是:
- 入站RFC通信(作为RFC客户端/Java调用ABAP)
- 出站RFC通信(作为RFC服务器/ABAP调用Java)
对于入站RFC,您需要使用JCoDestination
在ABAP侧执行远程功能模块。对于出站RFC,您需要在SAP网关上注册JCoServer
,然后从ABAP侧接收传入的请求,以便处理Java侧的远程功能模块。在两个通信方向上都有一个请求,也可能对此请求产生响应,因此数据流在入站和出站RFC通信的两个方向上。入站和出站只是区分谁启动RFC调用。
以及关于JCoServer
的,通常还需要定义一些JCoDestination
作为存储库,因为默认的JCoServer
需要从ABAP后端查询需要RFC元数据。没有这样的JCoRepository
,JCoServer
将无法解释传入的RFC请求数据。因此,在典型的JCO服务器方案中,您需要同时使用:JCoServer
和JCoDestination
(对于服务器的JCoRepository
)。
您可以针对两个用例(客户端呼叫和存储库查询)对JCoDestination
使用相同的配置,但是SAP建议定义单独的配置,这些配置在连接池尺寸的定义方面更灵活,并允许单独的RFC授权供两者使用案例。
两者。实际上,您需要客户连接来启动服务器连接,因此,当您设置服务器连接时,您也会自动获得客户端连接。