RFC 服务器模块的工作方式

RFC 服务器模块实现 init()terminate()pollForEvents()process() 方法。

本节描述:

初始化和终止

init() 方法创建一个主线程,该线程衍生许多侦听器线程(该数目是可配置的),这些线程打开指向 SAP 网关的句柄。如果连接器未能初始化,则它使用 terminate() 方法来终止。连接器通过断开与 SAP 网关的连接来终止。

在初始化过程期间,RFC 服务器模块使用指定的程序标识向 SAP 网关注册。必须使用 RfcProgramID 连接器配置属性来设置此程序标识,且必须在 SAP 应用程序中将它设置为 TCP/IP 端口。有关设置 TCP/IP 端口的更多信息,请参阅"向 SAP 网关注册 RFC 服务器模块"

业务对象处理

RFC 服务器模块的 WebSphere 业务对象的所有处理由 SAP 应用程序中 RFC 支持功能启动。在 RFC 服务器模块中,特定于 RFC 服务器的业务对象处理程序仅支持一个 RFC 支持功能;因此,对于 SAP 应用程序中每个受支持的功能,您必须具有一个特定于 RFC 服务器的相关业务对象处理程序。另外,对于每个特定于 RFC 服务器的业务对象处理程序,您还必须具有一个相关业务对象。

图 56 举例说明了 RFC 服务器模块的业务对象处理。

图 56. 业务对象处理


RFC 服务器模块的业务对象处理以下列方式执行:

  1. 侦听器线程从 SAP 网关选取预订的事件,并使相应 RFC 支持功能的名称与特定于 RFC 服务器的业务对象处理程序匹配。
  2. 侦听器线程基于来自 SAP 网关上 RFC 事件的数据来实例化特定于 RFC 服务器的适当业务对象处理程序,然后创建相应业务对象的实例。
  3. 特定于 RFC 服务器的业务对象处理程序从 SAP 网关检索 RFC 接口数据,并填充 SAP 的 WebSphere 业务对象。
  4. 特定于 RFC 服务器的业务对象处理程序将业务对象传递至集成代理程序。在 RFC 服务器模块中,由于 SAP 执行同步调用,因此,当 WebSphere Message Broker 是集成代理程序时,RFC 服务器模块使用 SynchronousRequestQueue 和 SynchronousResponseQueue 来与 WebSphere Message Broker 进行通信。
  5. 业务对象处理程序接收来自集成代理程序的返回业务对象,将它重新转换为 RFC 接口,然后将它返回至 SAP 网关。

RFC 服务器模块使用 SAP 网关来维护事件的处理顺序并维护事件的状态。因为侦听器线程执行同步调用,所以必须将事件返回至 SAP 网关后才能认为已成功处理该事件。

注:
如果 RFC 支持模块具有返回结构或返回表,则连接器检查消息类型 A(异常终止)和 E(错误)来确定是否成功处理了事件。消息类型 AE 指示未能处理事件。如果 RFC 支持功能模块不具有返回结构或返回表,则您必须实现您自己的错误处理。在返回状态描述符中返回了结构或表中的一条或多条错误消息。

支持 RFC 支持功能

开发环境包括一个实用程序,即 SAPODA,它基于 RFC 支持功能来生成业务对象定义。SAPODA 解释 RFC 支持功能的接口,将其接口参数映射至业务对象属性,并添加每个属性的特定于应用程序的信息。

对于每个业务对象定义,您必须生成一个特定于 RFC 服务器的相关业务对象处理程序,该处理程序调用相应的业务对象。有关开发业务对象和特定于 RFC 服务器的业务对象处理程序的更多信息,请参阅"为 RFC 服务器模块开发业务对象"

注:
某些 RFC 支持功能不具有与 WebSphere 业务对象中简单属性对应的单一字段参数。连接器要求每个顶级业务对象都具有一个充当键属性的简单属性。因此,当从 RFC 支持功能生成业务对象和业务对象处理程序而没有单一字段参数时,SAPODA 在顶级业务对象中创建一个名为 Dummy_key 的键属性,将它标记为键属性,并添加 dummy_key 作为此属性的特定于应用程序的信息。Dummy_key 为连接器提供一个键属性,以便它可以处理该业务对象。但是,连接器在修改应用程序数据时会忽略 Dummy_key 属性的值。

触发事件

要对 RFC 服务器模块触发事件,必须为远程功能调用指定 RFC 目标位置。可以采用两种方式来执行远程功能调用:使用程序和使用事务 SE37。使用程序,这种方式是 CALL FUNCTION 命令的变化形式,该命令指定必须使用目标位置。要为目标位置指定的值就是为了注册 RFC 服务器模块而创建的值。有关更多信息,请参阅“向 SAP 网关注册 RFC 服务器模块”这一节。当使用事务 SE37 时,RFC 目标系统必须与 RFC 目标位置相匹配。有关为 RFC 服务器模块创建和注册 RFC 目标位置的更多信息,请参阅“向 SAP 网关注册 RFC 服务器模块”这一节。

Copyright IBM Corp. 1997, 2004