我们正尝试从独立的Java应用程序与SAP R3进行通信 我们将使用JCo 3.0库。
从文档中我了解到有两种方法可以与SAP连接。
起初我确信我们的应用程序需要作为JCo客户端连接。但我开始怀疑。
我们的应用发送数据。 (例如更新订单状态) 但我们的应用程序也会收到数据(例如,SAP推动对主数据的更改 - MATMAS)。
那么,它需要是客户端还是服务器?
答案 0 :(得分:3)
JCo 3.0 API模型中没有JCo Client,而只有JCoDestinations
代替了2.1 API模型中的旧JCO.Client
。
通过RFC协议连接SAP的两种方法是:
对于入站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两种用例的授权。
答案 1 :(得分:0)
两者。实际上,您需要一个客户端连接来启动服务器连接,因此当您设置服务器连接时,您也将自动获得客户端连接。