在 Liberty WebApp 中使用 WOLA 访问 CICS

Using WOLA in Liberty WebApp to access CICS

尝试直接从 Liberty 中的 Web 应用程序使用 WOLA 到 CICS。通过 z/OS Connect V2 (zCEE) 成功使用相同的 CICS 区域。对于 Liberty,我配置了:

 <featureManager>
     <feature>servlet-3.1</feature>
     <feature>jndi-1.0</feature>
     <feature>jaxrs-1.1</feature>
     <feature>zosLocalAdapters-1.0</feature>
 </featureManager>

 <!-- WOLA group to which others register -->
 <zosLocalAdapters wolaGroup="GROUP" wolaName2="LIBRTOLA" wolaName3="WOLA3" />
 <connectionFactory id="wolaCF" jndiName="eis/ola">
     <properties.ola RegisterName=CICSMLAW/>
 </connectionFactory>
 <resourceAdapter location="/usr/lpp/IBM/zosconnect/v2r0/wlp/lib/ola.rar"/>

在 messages.log 中,我看到了好东西和坏东西:

CWWKB0103I:授权服务组 WOLA 可用使用以下名称向 Liberty 配置文件服务器注册的 WebSphere 优化本地适配器通道:GROUP LIBRTOLA WOLA3

坏处:

com.ibm.ws.app.manager.AppMessageHelper E CWWKZ0013E: 无法启动两个名为 ola 的应用程序。

所以注册失败:Requestlgth: 97 Requestparms 数据 1: BBOC START_SRVR RGN=CICSMLA DGN=GROUP NDN=LIBRTOLA Requestparms数据2:SVN=WOLA3 SVC=MNC=1 MXC=10 TXN=N SEC=N REU=N 请求参数数据3: 处理 START SERVER 请求。 启动 WAS 适配器服务器任务... 服务器事务 ID 将为:BBO$ Link交易默认为:BBO# 服务名称将是: 跟踪 TDQ:BBOQ 处理 REGISTER API 请求。 注册名称:CICSMLA 字符串长度:7 WAS 守护进程:GROUP WAS 节点:LIBRTOLA WAS 服务器:WOLA3 分钟连接数:1 最大限度。连接数:10 交易:N 字符串长度:1 安全传播:N 字符串长度:1 为 CICSMLA 调用 OLA 寄存器 API。 与 Liberty 配置文件服务器的连接不成功。 return 代码为 8,原因代码为 8。

JNDI 调用失败:

Context ctx = new InitialContext(); 
ConnectionFactory cf = (com.ibm.ws390.ola.jca.ConnectionFactoryImpl)ctx.lookup("java:comp/env/eis/ola");

结果错误:

[err] javax.naming.NameNotFoundException: javax.naming.NameNotFoundException: java:comp/env/eis/ola
[err] at com.ibm.ws.jndi.url.contexts.javacolon.internal.JavaURLContext.lookup(JavaURLContext.java:356) [err] at [internal classes]
[err] at javax.naming.InitialContext.lookup(InitialContext.java:428)
[err] at com.ibm.ctl.bank.impls.CTLBankWolaImpl.(CTLBankWolaImpl.java:51)
[err] at com.ibm.ctl.bank.web.OLTPBankRest.setImpl(OLTPBankRest.java:235) 

谢谢

你这里发生了很多事情。

我不确定您为什么要从 Liberty 服务器内部的 z/OS Connect v2 产品开始 ola.rar。 zosLocalAdapters-1.0 功能部件已经加载了随 Liberty 一起提供的 ola.rar。您应该从 server.xml 中删除配置。这应该可以解决 CWWKZ0013E 错误。

您应该在 messages.log 中看到两条 CWWKB0103I 消息,一条针对 WOLA(您包括在内),另一条针对 CLIENT.WOLA。请确保您看到两者。可能您使用的是非常旧的 Liberty 版本,它不会打印第二条 CWWKB0103I 消息,所以如果这是真的,请忽略该部分。

如果没有在知识中心找到 Liberty 服务器的 WOLA 配置说明,我认为您不会走到这一步,但在这里它们是为了其他人的利益:

https://www.ibm.com/support/knowledgecenter/en/was_beta_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/twlp_dat_enableconnector.html

接下来好,我无法查看您的应用程序以了解您是否配置了对连接工厂的资源引用。我假设您这样做是因为您正在执行 java:comp/env 查找。您不需要强制转换为 com.ibm.ws390.ola.jca.ConnectionFactoryImpl,实际上我强烈建议删除它,因为它是内部 class 并且随时可能更改。可能是应用程序 class 加载程序无法访问那个 class,这可能是问题的一部分。

最后,您在启动 link 服务器的 CICS 中遇到了问题。您得到 RC=8 RSN=8。可在此处找到服务列表和 return/reason 代码:

https://www.ibm.com/support/knowledgecenter/en/was_beta_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/rwlp_dat_olaapis.html

BBOA1REG(注册)上的 8/8 表示注册令牌已在使用中。基本上,您选择的 RGN= 名称已经在使用中。您确定 CICS 区域中没有已使用该名称注册的 PLTPI 交易或其他交易吗?也许尝试不同的名称只是为了看看它是否有效,如果有效,也许尝试 BBOC LIST_SRVR 看看它是什么?在不了解您的系统的情况下很难说它是如何开始的。

希望对您有所帮助。保重!