企业管理 > Windchill ESI > 在 ORACLE Applications 环境中管理 Windchill ESI > 监视、诊断和解决问题的指导 > 解决问题 > 解决特定问题 > 事务处理保持待决状态
  
事务处理保持待决状态
如果没有如配置和管理 JMS 队列中所述对 JMS 服务器队列进行预订,可能会发生此种情况。
常见的根本原因为:Windchill 方法服务器启动时,JMS 服务器未处于运行状态,Windchill 适配器的 JMS 特性出现错误配置或 JMS 服务器出现错误配置。
Windchill ESI Services 成功预订 JMS 队列 (为接收结果消息) 后,以下信息会包含在 Windchill PDMLink 方法服务器日志中:
Thread-10: subscription to queue "com.ptc.windchill.esi.Result" successful
如果此信息未出现在日志中,则意味着 Windchill 无法成功预订上述队列。在这种情况下,所有的 Windchill ESI 事务处理都将保持待决状态。一旦 Windchill 能够成功预订队列,即会对事务进行处理。
通常,当 Windchill ESI Services 因为 JMS 服务器不可用而无法预订队列时,Info*Engine 会接收到异常信息。Windchill ESI Services 会在 Windchill 适配器事务日志中记录此异常情况。如果 TIBCO EMS 是 JMS 提供者,该消息将包含以下文本:
javax.ems.JMSException:Failed to connect to the server at tcp
作为一种检测方法,可以考虑配置监视软件来查找此文本或类似文本。要解决此问题,请确保 EMS 服务器在方法服务器之前启动,并解决 Windchill 适配器 JMS 配置和 JMS 服务器配置方面的所有问题。
为了避免此问题,请确保以下方面:
仅一个 WCESI 用户连接到 EMS 服务器 (可通过“EMS 管理工具”>“显示连接”查看)
ESISYS 与 ClientID (BW-ESIMaster_JMSConnection-queue-<Application Name>-Process_Archive) 连接的数量应该与配置的 ERP 实例数相等 (可通过“EMS 管理工具”>“显示连接”查看)
所有的连接均来自当前测试套件中的 TIBCO 或 Windchill 服务器。没有来自先前套件或不相容计算机的连接 (可通过“EMS 管理工具”>“显示连接”查看)
Windchill 和 Process Archive 连接到相同的 JMS 队列 (可通过“EMS 管理工具”>“显示队列”查看)
com.ptc.windchill.esi.Result 队列仅有一个接收者 (可通过“EMS 管理工具”>“显示队列”查看)
任何队列中不应有消息 (可通过“EMS 管理工具”>“显示队列”查看)
Windchill 已成功预订 DataResponse 队列。连接到 JMS 服务器并检查是否创建了 DataResponse 队列且授予文件 WCESI 用户发送 DataResponse 队列的权限。如果 DataResponse 队列名称前显示 *,这表示队列为临时队列且需要创建。如果手动部署 EAR 则会出现此问题。在“JMS 管理”窗口中运行下列命令,以解决此问题:
create queue <DataResponse>
setprop queue <DataResponse> secure
grant queue <DataResponse> <EAI User> receive
grant queue <DataResponse> <WC ESI User> send
setprop factory QueueConnectionFactory url=tcp://<JMSServer>:7222
commit
Process Archive 连接到 Windchill 已预订的同一 DataResponse 队列。检查“JMS 管理”窗口,以确认 Process Archive 已预订 DataResponse 队列。手动部署时,有时会忽略此步骤。如果预订了 DataResponse 队列,请检查 TIBCO Administrator -->“应用程序管理”-->“应用程序名称”-->“配置”-->“部署名称”-->“高级”--> ESIJMS/DataResponseQueue