我正在开发一个可连接到同一SAP系统上的多个目的地的IDOC服务器(网关主机将相同)并接收IDoc.我不确定我需要多个JCoServer实例运行或单个JCoServer有多个目的地.
如果是后者,为什么在提供服务器数据时,有没有参数使用jco.server.repository_destination属性来指定目的地名称?
解决方法
jco.server.repository_destination属性用于告知JCoServer哪个JCoDestination用于从SAP系统查询所需的RFC元数据.始终需要RFC元数据来正确解释传入的RFC请求数据.
因此,如果您的JCoServer仅用于提供源自同一SAP系统的RFC请求(相同的SID),则指定jco.server.repository_destination就足够了.无论从该ABAP系统使用哪个RFC目的地(在SM59中定义),RFC元数据将不会改变.
但是,如果JCoServer还应该提供从其他SAP系统(从其他SID)发起的RFC请求,则所需的RFC元数据可能不同,您应该另外指定一个jco.server.repository_map.一般来说,RFC元数据应始终从RFC请求产生的同一SAP系统查询.
顺便说一句,您不能使用相同的jco.server.progid启动多个JCoServer实例,以便在同一个jco.server.gwhost和jco.server.gwserv注册.如果你尝试JCo会抛出一些异常.每个progid / gwhost / gwserv组合集都需要一个JCoServer实例.