3

我们正在尝试从独立的 Java 应用程序与 SAP R/3 进行通信,为此我们将使用 JCo 3.0 库。

从文档中我了解到有两种方式可以连接 SAP。

  1. 作为 JCo客户
  2. 作为 JCo服务器

起初我确信我们的应用程序需要作为 JCo 客户端进行连接。但我开始怀疑了。

我们的应用程序发送数据。(例如更新订单状态)但我们的应用程序也接收数据(例如 SAP 将更改推送到主数据 - MATMAS)。

那么,它需要是客户端还是服务器?

4

2 回答 2

4

JCo 3.0 API 模型中没有 JCo 客户端,JCoDestinations而是替换了旧JCO.Client的 2.1 API 模型。

通过 RFC 协议连接到 SAP 的两种方式是:

  1. 入站 RFC 通信(作为 RFC 客户端/Java 调用 ABAP)
  2. 出站 RFC 通信(作为 RFC 服务器/ABAP 调用 Java)

对于入站 RFC,您需要使用 aJCoDestination在 ABAP 端执行远程功能模块。对于出站 RFC,您需要JCoServer在 SAP 网关上注册一个,然后它将接收来自 ABAP 端的传入请求,以便在 Java 端处理远程功能模块。在两个通信方向上都有一个请求,并且可能还有对此请求的响应,因此数据流在入站和出站 RFC 通信的两个方向上。入站和出站只是区分发起 RFC 调用的人。

关于JCoServer,您通常还需要JCoDestination为存储库定义一些,因为默认情况下JCoServer需要从 ABAP 后端查询所需的 RFC 元数据。如果没有这样的 a JCoRepository, aJCoServer将无法解释传入的 RFC 请求数据。因此,在典型的 JCo 服务器场景中,您同时需要: aJCoServer和 a JCoDestination(用于服务器的JCoRepository)。

您可以JCoDestination为这两个用例(客户端调用和存储库查询)使用相同的配置,但 SAP 建议定义单独的配置,这在连接池大小的定义方面更加灵活,并允许对两个用例进行单独的 RFC 授权。

于 2017-02-27T16:48:42.753 回答
0

两个都。实际上,您需要一个客户端连接来启动服务器连接,因此当您设置服务器连接时,您也会自动获得客户端连接。

于 2017-02-27T15:41:15.383 回答