当您想要使用优化本地适配器本机 API 将外部地址空间连接到 CICS® Application Server for z/OS 并调用该应用程序服务器上部署的 Enterprise JavaBeans (EJB) 应用程序时,请执行本任务。
开始之前
在注册请求所源于的 z/OS 映像上,
WebSphere® Application Server 守护程序组必须处于活动状态。
在客户信息控制系统 (CICS) 下运行时,必须先激活优化本地适配器“任务相关用户出口”(TRUE) 程序,然后才能在 CICS 与
WebSphere Application Server 之间建立连接。要阅读有关事务如何激活 TRUE 程序的信息,请参阅“在客户机环境中安装
BBOC、BBO$ 和 BBO# 事务”主题和“WebSphere Application Server 事务 BBOC、BBO$ 和
BBO#”主题。对于在 z/OS Batch 和 UNIX 系统服务 (USS) 中运行的程序而言,不需要激活
TRUE 程序。确保当前地址空间已通过调用 BBOA1REG 注册 API 进行注册并与目标
WebSphere Application Server 守护程序组绑定。
关于此任务
适配器 API 将调用来自外部本机语言程序的无状态会话 Bean 并检索响应。这是为希望更为灵活并且响应区域最大长度事先未知的使用者设计的。
过程
- 客户机地址空间本机语言应用程序(例如 Cobol、PL/I、C/C++ 和汇编程序)将调用 BBOA1CNG 连接获取 API 并传递它用于注册调用的注册名称。 将返回一个连接句柄,此句柄必须用于所有将来的 API 调用。
- 客户机应用程序将收集其参数并指定目标服务名称作为它要调用的企业 Bean 的 Java 命名和目录接口 (JNDI) Home 接口路径名,并且将调用 BBOA1SRQ 发送请求 API。 这将导致连接到 WebSphere Application Server 控制区域,然后连接到工作负载管理器 (WLM)
派生的服务方区域,传递的 JNDI Home 接口将在该服务方区域中执行其
create 方法。将查找预先设置的方法 execute 并使用字节数组参数来调用此方法。如果指定了异步参数并将其设置为
1,那么控制权将立即返回给调用者。如果异步参数设置为 0(零),那么此 API 将在
ResponseLength 参数中返回响应长度以及返回值。
- 在 WebSphere Application Server 服务方中,目标 Bean 的 execute 方法将调用业务逻辑。 现在,目标 Bean 的 execute 方法可以调用它所需的业务逻辑,然后将响应数据作为序列化字节数组返回给本机语言调用者。
- 0(零)返回码和原因码表明已成功地对客户机 API Send_Request 进行排队。如果异步参数设置为
0(零),那么将在 ResponseLength 参数中提供响应长度以及返回值。如果异步参数设置为
1,那么响应可能尚未就绪,因此需要调用 BBOA1RCL Receive_RespLen API 以确定响应是否已到达以及响应长度。
- 对于异步 Send_Request 调用,客户机应用程序将通过异步 0|1 调用来调用 BBOA1RCL Receive_RespLen API。 异步 0(零)调用表明适配器 API 必须阻塞线程,直到接收到响应为止。异步 1 调用表明适配器 API
将立即返回,而无论响应是否已到达。
- 0(零)返回码和原因码表明 Receive_RespLen 客户机 API 调用已成功完成。 如果异步参数设置为 1,那么 ResponseLength 和返回值全为 0xFF
表示尚未在传递的连接上接收到任何响应。这使客户机应用程序不仅能够控制发送请求和接收响应的方式,还能进行其他控制。客户机可以对发送请求进行分组并通过一组连接按顺序发送这些请求,然后定期轮询这些连接以获取响应。对于通过异步 1
调用来处理 Send_Request 的连接而言,在相关的 Receive_RespLen 和 Get_Data API
调用处理完毕之前,无法将用于同一连接的另一个 Send_Request 传递给该连接。
要点: 仅对于已配置的非事务性连接,才能在异步参数设置为 1 的情况下以异步方式使用这些 API、对发送请求进行分组以及同步地处理这些请求。例如,使用
CICS 时,您想使工作单元与 RRS 恢复单元相对应,并且必须将 CICS 下的同步点传播到
WebSphere Application Server,因此当前 CICS 任务中只能存在与特定 WebSphere
服务器的单一连接。该请求将接收到警告返回码,这表明适配器不会在同一个 CICS 任务中跨多个连接将落实传播到同一服务器。
- 客户机应用程序使用 Receive_RespLen API 返回的响应长度来确保它有足够大的区域来存放响应数据,并使用
BBOA1GET 获取数据 API 调用将响应数据复制到它的缓冲区。
- 客户机应用程序将使用同一个连接句柄来重复此过程,直到准备好释放该连接为止。释放连接时,将调用 BBOA1CNR Connection_Release。 必须先释放连接句柄,然后才能通过连接获取 API 调用来保留这些句柄并再次使用。
结果
客户机已使用优化本地适配器 API 从
WebSphere Application Server 中调用无状态会话 Bean。