我正在开发一个 IDOC 服务器,它可以连接到同一 SAP 系统上的多个目标(网关主机将相同)并接收 IDoc。我不确定我是否需要运行多个 JCoServer 实例或具有多个目标的单个 JCoServer。
jco.server.repository_destination
如果是后者,为什么在提供服务器数据时会有一个参数来使用属性指定目标名称?
该属性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.gwhost
并且jco.server.gwserv
. 如果你尝试,那么 JCo 会抛出一些异常。每个 progid/gwhost/gwserv 组合集都需要一个 JCoServer 实例。