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