适用于多个目的地的JCO IDOC服务器

时间:2016-12-13 09:48:57

标签: java sap jco idoc sapjco3

我正在开发一个IDOC服务器,它可以连接到同一SAP系统上的多个目标(网关主机将是相同的)并接收IDoc。我不确定我需要运行多个JCoServer实例还是需要多个目的地的单个JCoServer。

如果是后一种情况,为什么在提供服务器数据时会有一个参数来使用jco.server.repository_destination属性指定目标名称?

1 个答案:

答案 0 :(得分:2)

属性jco.server.repository_destination用于告诉JCoServer哪个JCoDestination用于从SAP系统查询所需的RFC元数据。始终需要RFC元数据来正确解释传入的RFC请求数据。

因此,如果您的JCoServer仅用于提供源自同一SAP系统(相同SID)的RFC请求,则指定jco.server.repository_destination就足够了。无论从该ABAP系统使用哪个RFC目的地(在SM59中定义),RFC元数据都不会改变。

但是如果JCoServer也应该服务于从其他SAP系统(来自其他SID)发起的RFC请求,那么所需的RFC元数据可能会有所不同,您还应该指定jco.server.repository_map。通常,应始终从RFC请求源自的同一SAP系统中查询RFC元数据。

顺便说一句,您无法使用相同的jco.server.progid启动多个JCoServer实例,以便在同一jco.server.gwhostjco.server.gwserv进行注册。如果你尝试那么JCo会抛出一些异常。每个progid / gwhost / gwserv组合集都需要一个JCoServer实例。