SAP JCo 客户端与服务器
SAP JCo client vs server
我们正在尝试从独立的 java 应用程序与 SAP R/3 通信
为此,我们将使用 JCo 3.0 库。
从文档中我了解到有 2 种方法可以连接 SAP。
- 作为 JCo 客户
- 作为 JCo 服务器
起初我确信我们的应用程序需要作为 JCo 客户端进行连接。但是我开始怀疑了。
我们的应用程序发送数据。 (例如更新订单状态)
但是我们的应用程序 也接收数据 (例如 SAP 将更改推送到主数据 - MATMAS)。
那么,它需要是客户端还是服务器?
两者都有。实际上,您需要一个客户端连接来启动服务器连接,因此当您设置服务器连接时,您也会自动获得客户端连接。
JCo 3.0 API 模型中没有 JCo 客户端,只有 JCoDestinations
替代了 2.1 API 模型中的旧 JCO.Client
。
通过RFC协议连接到SAP的2种方式是:
- 入站 RFC 通信(作为 RFC 客户端/Java 调用 ABAP)
- 出站 RFC 通信(作为 RFC 服务器/ABAP 调用 Java)
对于入站 RFC,您需要使用 JCoDestination
在 ABAP 端执行远程功能模块。对于出站 RFC,您需要在 SAP 网关上注册一个 JCoServer
,然后它将接收来自 ABAP 端的传入请求,以便在 Java 端处理远程功能模块。
在两个通信方向上都有一个请求,也可能对该请求有一个响应,因此数据流是双向的,用于入站和出站 RFC 通信。 Inbound和outbound只是区分谁发起了RFC调用。
关于 JCoServer
,您通常还需要为存储库定义一些 JCoDestination
,因为默认情况下需要 JCoServer
从中查询所需的 RFC 元数据ABAP 后端。没有这样的 JCoRepository
,JCoServer
将无法解释传入的 RFC 请求数据。因此,在典型的 JCo 服务器场景中,您需要:JCoServer
和 JCoDestination
(对于服务器的 JCoRepository
)。
对于两个用例(客户端调用和存储库查询),您可以对 JCoDestination
使用相同的配置,但 SAP 建议定义单独的配置,这样在连接池大小的定义方面更加灵活,并且允许两种用例的单独 RFC 授权。
我们正在尝试从独立的 java 应用程序与 SAP R/3 通信 为此,我们将使用 JCo 3.0 库。
从文档中我了解到有 2 种方法可以连接 SAP。
- 作为 JCo 客户
- 作为 JCo 服务器
起初我确信我们的应用程序需要作为 JCo 客户端进行连接。但是我开始怀疑了。
我们的应用程序发送数据。 (例如更新订单状态) 但是我们的应用程序 也接收数据 (例如 SAP 将更改推送到主数据 - MATMAS)。
那么,它需要是客户端还是服务器?
两者都有。实际上,您需要一个客户端连接来启动服务器连接,因此当您设置服务器连接时,您也会自动获得客户端连接。
JCo 3.0 API 模型中没有 JCo 客户端,只有 JCoDestinations
替代了 2.1 API 模型中的旧 JCO.Client
。
通过RFC协议连接到SAP的2种方式是:
- 入站 RFC 通信(作为 RFC 客户端/Java 调用 ABAP)
- 出站 RFC 通信(作为 RFC 服务器/ABAP 调用 Java)
对于入站 RFC,您需要使用 JCoDestination
在 ABAP 端执行远程功能模块。对于出站 RFC,您需要在 SAP 网关上注册一个 JCoServer
,然后它将接收来自 ABAP 端的传入请求,以便在 Java 端处理远程功能模块。
在两个通信方向上都有一个请求,也可能对该请求有一个响应,因此数据流是双向的,用于入站和出站 RFC 通信。 Inbound和outbound只是区分谁发起了RFC调用。
关于 JCoServer
,您通常还需要为存储库定义一些 JCoDestination
,因为默认情况下需要 JCoServer
从中查询所需的 RFC 元数据ABAP 后端。没有这样的 JCoRepository
,JCoServer
将无法解释传入的 RFC 请求数据。因此,在典型的 JCo 服务器场景中,您需要:JCoServer
和 JCoDestination
(对于服务器的 JCoRepository
)。
对于两个用例(客户端调用和存储库查询),您可以对 JCoDestination
使用相同的配置,但 SAP 建议定义单独的配置,这样在连接池大小的定义方面更加灵活,并且允许两种用例的单独 RFC 授权。