与其他应用程序集成 > Windchill ESI 简介 > 将 Windchill ESI 与 SAP 集成 > 故障排除 > 诊断其他问题
  
诊断其他问题
本节描述与前述诊断不符的常见问题和可能的原因。以下是常见问题列表。可以使用链接直接获得您所遇到问题的信息。如果在列表上找不到您所遇到的问题,或者表中建议的方法不能完全解决问题,请与系统管理员联络。
启动 Process Archive 时,Tiboc BusinessWorks 设计器抛出 "Cannot create Transport" 和 "Process Definition Load" 错误
以下 SAP 消息之一会出现在 Windchill 企业系统事务处理日志中。
Windchill ESI 返回适配器超时消息
Windchill PDMLink 无法预订 EMS 队列
错误显示在 PostResult 上
显示错误消息“没有为发布对象分配分布目标”
显示错误消息“自上次发布之后,未再作出更改”
无法连接至 TIBCO BusinessWorks EMS、Windchill,或者两者均连接失败
TIBCO Adapter 处理 ESI 事务超时
显示与 ESI 响应元数据信息文件相关的错误消息
无法通过 JMS 传输启动适配器
适配器无法启动,状况在管理器中保持 "Starting up"
未启动 Coyote 连接器
“企业事务处理日志”中的发布始终保持在 "Pending" 状态
JAX-M 解析器或 XML 解析器无法使用 ResultResponse XML 模式解析消息
企业事务处理日志中出现“输入数据无效”消息
事务处理在“企业事务处理日志”中始终保持为“待处理”状态
手动启动 EMS 服务器后,所有 EMS 服务器配置消失
TIBCO Adapter for SAP 实例停止工作,并显示“错误”状况
通过升级请求升级一组业务对象会为这些对象中的每一个创建 RTM 工作流
升级一个或多个业务对象时生成的 ESI 响应文件不包含除 ID 外的任何升级请求信息
启动 Process Archive 时,Tiboc BusinessWorks 设计器抛出 "Cannot create Transport" 和 "Process Definition Load" 错误
要配置 BusinessWorks,请按下列步骤操作:
1. 备份下列文件:
<<TibcoHome>>/designer/<<version>>/bin/designer.tra
2. 在文本编辑器中,打开下列文件:
<<TibcoHome>>/designer/<<version>>/bin/designer.tra
3. 搜索下列字符串:
tibco.env.CUSTOM_CP_EXT
4. 用下列内容替换此字符串:
tibco.env.CUSTOM_CP_EXT %RV_HOME%/lib/tibrvj.jar:%RV_HOME%/lib:%RV_HOME%/lib/64:
* 
该路径下可能有其他文件夹。替换字符串时,请保留这些条目。
5. 搜索下列字符串:
tibco.env.CUSTOM_LIB_PATH
6. 用下列内容替换此字符串:
tibco.env.CUSTOM_LIB_PATH %RV_HOME%/lib:%RV_HOME%/lib/64:
* 
该路径下可能有其他文件夹。替换字符串时,请保留这些条目。
7. 保存并关闭 designer.tra
8. 打开 TIBCO Designer 并启动 Process Archive。
以下 SAP 消息之一会出现在 Windchill 企业系统事务处理日志中。
“No unit of measure found in ISO code __ in field BASE_UOM_ISO”
“The field MARA-MEINS/BAPI_MARA-BASE_UOM(_ISO) is defined as a required field; it does not contain an entry”
以下原因可能造成这个问题:
交叉引用查找文件的值不正确
Windchill 中的默认测量单位缺失或无效
使用 SAP 的本机测量单位代码,而未使用所需的 ISO 代码
Windchill ESI 返回适配器超时消息
适配器配置不正确
ESITarget 是无效的
适配器实例未运行
SAP 应用程序服务器不可用
适配器与 SAP 间的可用连接不够
在流消息数量大于适配器的处理容量。
* 
您需要 Windchill ESI 管理员的帮助以解决这些问题。
Windchill PDMLink 无法预订 EMS 队列
以下原因可能造成这个问题:
Windchill ESI 服务的安装不正确
EMS 服务器不起作用
在 Windchill Method 服务器和 EMS 服务器之间出现网络错误
Windchill Adapter EMS 的配置不正确
Windchill ESI 首选项错误地指定了一个或多个 EMS 队列名称、EMS 队列用户或 EMS 队列密码
* 
您需要 Windchill ESI 管理员的帮助以解决这些问题。
错误显示在 PostResult 上
以下原因可能造成这个问题:
在被发布的数据中有数据错误存在
一个或多个所需的 TIBCO 组件未联机
Windchill ESI Services 无法读出或写入一个 JMS 队列 (其原因与 Windchill PDMLink 无法预订 EMS 队列 相同)。
Windchill PDMLink 中发生数据库错误
PostResult RPC 请求的格式不合适,原因是 Windchill ESI 中间件的程序错误
* 
您需要 Windchill ESI 管理员的帮助以解决这些问题。
显示错误消息“没有为发布对象分配分布目标”
以下原因可能造成这个问题:
在分配任何分布目标之前,试图发布一个对象
在移除所有分布目标分配之后,试图发布一个对象
显示错误消息“自上次发布之后,未再作出更改”
以下原因可能造成这个问题:
Windchill ESI 首选项“检查小版本”被设为“否”,且仅更改了正在发布的对象的小版本。
在上次发布之后,未再作出更改
您已经成功地将对象发布至所有与对象关联的分布目标
将新的分布目标分配添加到已发布对象后,试图发布该对象。
无法连接至 TIBCO BusinessWorks EMS、Windchill,或者两者均连接失败
以下原因可能造成这个问题:
EMS 服务器的配置不合适。如果将 EMS 服务器的名称指定为 "localhost",则仅在它所运行的计算机上才会识别该服务器。其他计算机无法与其连接。设置为连接到 EMS 服务器 "localhost" 的应用程序会试图查找在同一计算机上运行的 EMS 服务器。如果没有找到该服务器,则出现一条错误信息。如果将计算机名称指定为您的服务器名称,则其他计算机可以连接到您的 EMS 服务器。
要解决此问题:
将与 factories.conf 文件中的 QueueConnectionFactory 关联的 url 属性设置为 tcp://<machinename>:7222
其中,<machine name> 是正在运行 EMS 服务器的计算机。
(根据运行 ESI 的位置,在 BW 引擎、TIBCO Designer 或 TIBCO Administrator 中) 将全局变量 ESIJMS/JNDIContextURL 设置为 = tibjmsnaming://<正在运行 EMS 服务器的计算机名称>:7222。
* 
与这个 EMS 服务器的位置无关。它可以与 Windchill 位于同一台计算机上,也可以与中间件引擎位于同一台计算机上,还可以位于任何其他计算机上。如果对上述值进行正确设置 (并且计算机均在同一网络上),则 Windchill PDMLink 和中间件将能够连接至正确的 EMS 服务器。
要确定哪一台计算机以及哪一个用户名连接到了 EMS 服务器,请在 EMS 管理工具中键入命令:
>show connections
得到一个列表,列出连接的用户和连接的计算机。有关详细信息,请参见“TIBCO Enterprise for EMS”文档。
TIBCO Adapter 处理 ESI 事务超时
如果在 TIBCO Adapter 与 ERP 的连接中断后,TIBCO Adapter 开始超时,请检查连接状态并重新启动适配器。通过查看适配器日志可确认这一点。
在 TIBCO Administrator GUI >“应用程序管理”> <Application_Name> >“配置”> Process Archive.par >“TIBCO BusinessWorks 处理配置”>ProcessDefinitions/DataProcessing/JMS_ESIEvent_TransactionRelease_End_PD 处检查 bwengine 的最大作业和流量限制。其应为有限非零数字 (基于用户环境下所做的加载测试结果)
如果即便 TIBCO Adapter 与 ERP 的连接未中断,TIBCO Adapter 仍然开始超时,则请检查 TIBCO Administrator GUI,“应用程序管理”,<Application_Name>,“配置”,ESISAPAdapterConfiguration.aar,“高级”,adr3.maxconnections 值。该值应等于 bwengine 的最大作业设置
显示与 ESI 响应元数据信息文件相关的错误消息
在“新建分布目标”或“编辑分布目标”窗口中单击“完成”,会显示关于 ESI 响应元信息文件的错误消息
为“分布目标”属性 ESI 响应元信息文件路径指定值后,这种情况可能由于下列任一问题引起:
文件路径不存在。
文件内容不符合基础方案 (出厂设置,由 ESIResponseMetaInformation.xsd 文件提供方案)。
文件内容无效 – 例如,文件中的 MapInformation 元素引用不存在的 Map 元素。为何将文件内容视为无效,可能还有很多其他的原因。
与文件中至少一个 Map 元素关联的 id 属性已与不同的 Map 元素 (非关联的 Map 元素) 一起使用。例如,如果用户将分布目标 (正创建或编辑) 指向一个特定的 ESI 响应元信息文件,该文件的部件 Map 元素已被修改以适应其他全局属性,但其 id 属性仍具有 ESIPart 值,而此时,一个不同的分配目标已指向了默认提供的 ESI 响应元信息文件。
无法通过 JMS 传输启动适配器
安装 TIBCO Runtime Agent 5.6 和 TIBCO Runtime Agent 5.6.1 后,使用 Enterprise Message Service 作为传输工具的 TIBCO 适配器项目不会从 TIBCO Designer 中启动。将出现下列错误消息:
Code = AESDKC-0156,Category = JmsComm, Severity = errorRole, Description = could not open JMS shared library jms.
要解决此问题:
在 Window 平台上:备份,然后从 <TIBCO_HOME>/adapters/sdk/version/<lib> 中移除 libeay32.dll 和 ssleay32.dll 文件
在 UNIX 平台上:备份,然后从 TIBCO_HOME/adapters/sdk/version/lib 目录中移除 libssl 和 libcrypto openssl 存储库
适配器无法启动,状况在管理器中保持 "Starting up"
如果将进程 ID "-1" 分配给适配器进程,则启动适配器时发生错误。该错误通常与存储库相关。
下列为已知错误:
加载共享存储库时出错:librfccm.so:错误的 ELF 类:ELFCLASS64
如果您使用了 64 位 SAPJCo 存储库,则可能发生该错误。在某些平台 (如 Window X64 和 Linux ia64) 上,SAP 适配器为 32 位应用程序。使用 32 位存储库可解决此问题
加载共享存储库时出错:librfccm.so:错误的 ELF 类:ELFCLASS32
如果您使用了 32 位 SAPJCo 存储库,则可能发生该错误。在某些平台 (如 HPUX IA64 和 Solaris SPARC) 上,SAP 适配器为 64 位应用程序。使用 64 位存储库将解决此问题
在下列存储库中已发现类似问题:
libresolv.so.2 sunw_2.2.2
libstdc++-libc6.2-2.so.3
libstdc++.so.5
验证以下内容:
已安装了正确的兼容包。此包将解决任何相关性问题。
如果已设置了 Java 环境变量,请确保版本兼容。TIBCO Applications 也安装了 JRE 1.5 和 1.6。您可以移除任何已配置的 Java 设置,并允许 TIBCO Application 设置适当的 Java 变量。
如果已在 HPUX 和 Solaris 计算机上设置了 Java 变量,则请确保类路径包含 64 位 Java 存储库,因为 SAP 适配器在这些平台上为 64 位应用程序。
未启动 Coyote 连接器
验证 ESIOthers/WSHost 和 ESIOthers/WSPort 变量。
“企业事务处理日志”中的发布始终保持在 "Pending" 状态
此问题可能由下列任一原因引起:
无法连接至 JMS Server tcp://<JMSServer>:7222
JMS 服务器不可获得或主机名未解析至正确 IP 地址时,会发生此种情况。tibjms.jar 文件的不正确版本也可能导致此问题。要解决此问题,请确保 Windchill 服务器上的 tibjms.jar 文件正在使用 TIBCO 服务器上正确版本的 JMS。
1. 从 Windchill 服务器打开命令窗口。
2. 当 Windchill 方法服务器日志中出现准确的字符串时,使用其 ping <JMSServer>。
3. 如果 ping 请求失败,则运行 ping <JMSServer_IP>。
4. 如果 ping 请求成功,则使用显示的 IP 地址或将下列条目添加至 %Windir%\System32\drivers\etc\hosts 文件:<JMSServer_IP> <JMSServer>
5. 如果 ping 请求继续失败,请联系您的网络管理员。
连接到 DataResponse 队列时失败。
要验证这是导致此问题的原因,连接到 JMS 服务器,检查 DataResponse 队列是否已创建,并且已授予 WCESI 用户 DataResponse 队列发送权限。如果 DataResponse 队列名称前显示星号 (*),这表示队列为临时队列且需要创建。如果手动部署 EAR,则会出现此问题。要解决此问题,请在 JMS 管理窗口中运行下列命令:
1. Create queue <DataResponse>
2. Setprop queue <DataResponse> secure
3. Grant queue <DataResponse> <EAIUser> receive
4. Grant queue <DataResponse> <WCESIUser> send
5. Setprop factory QueueConnectionFactory url=tcp://<JMSServer>:7222
6. Commit
Process Archive 未连接到相同的 DataResponse 队列。
打开“JMS 管理”窗口,以确认 Process Archive 已预订 DataResponse 队列。当手动部署时,此步骤常被忽略,从而导致错误。如果未预订 DataResponse 队列,请通过导航至 TIBCO Administrator >“应用程序管理”>“应用程序名称”>“配置”>“部署名称”>“高级”> ESIJMS/DataResponseQueue 来验证 DataResponseQueue 的值
仅有一个 WCESI 用户连接到 EMS 服务器。通过导航至“EMS 管理工具”>“显示连接”进行验证。
ESISYS 与 ClientID (BW-ESIMaster_JMSConnection-queue-<Application Name>-Process_Archive) 连接的数量应该与配置的 ERP 实例数相等。如果不相等,可能有其他正在运行的进程存档实例正在使用 ESI 响应消息。通过导航至“EMS 管理工具”>“显示连接”来验证 ESISYS 连接数。
验证所有的连接都来自当前测试套件中的 TIBCO 或 Windchill 服务器,且没有来自于之前套件或国外计算机的连接。如果不相等,可能有其他正在运行的进程存档实例正在使用 ESI 响应消息。通过导航至“EMS 管理工具”>“显示连接”来验证 ESISYS 连接数。通过导航至“EMS 管理工具”>“显示连接”进行验证。
Windchill 和 Process Archive 连接至相同的 JMS 队列。通过导航至“EMS 管理工具”>“显示队列”进行验证。
com.ptc.windchill.esi.Result 队列仅有一个接收者。通过导航至“EMS 管理工具”>“显示队列”进行验证。
有消息保留在队列中。通过导航至“EMS 管理工具”>“显示队列”进行验证。
创建分布目标时为“客户端”和“系统 ID”属性指定的值与运行 MICU 时为给定的 SAP 实例指定的相应值不匹配。这导致 Windchill ESI Services 生成有关 EMS 队列不存在的 ESI 响应消息,而这进而导致 ESI 事务处理始终处于待处理状态。
JAX-M 解析器或 XML 解析器无法使用 ResultResponse XML 模式解析消息
将显示下列错误消息:
2,,2,2,1,20021,Windchill sent an invalid ResultResponse message. JAX-M Parser or XML Parser failed to parse message using ResultResponse XML schema. See Windchill logs for details,,,,,Job-1 Error in [ProcessDefinitions/Services/WCResult_Service.process/RepeatUntilTrue_SendAllResults/RepeatOnError_Result_ResultResponse/Java_ParseESIResultResponse]While executing [invoke] encountered [com.ptc.windchill.esi.ext.ESISoapException] : [Unable to create envelope from given source: at com.ptc.windchill.esi.ext.SoapResponseFinder.getResult(SoapResponseFinder.java:216)]
此问题存在于 JRE 6 附带的 Java 存储库中。在 JRE 1.5 和 JRE 1.6.0.18 中未观察到此问题。
企业事务处理日志中出现“输入数据无效”消息
此错误表示“调用适配器请求响应服务”活动中的方案验证失败。详细说明和堆栈追踪将被记录在 processArchive 日志中。该日志将指明模式不匹配的确切原因。例如:
validation error: data "xs:string('Hinge, Right Hand, Male, Removable, 0.187 Dia Pin, SS')" length must be at most xs:int('40') CHARACTERs ({com.tibco.xml.validation}SIMPLE_E_LENGTH_TOO_LONG) at /aeRequestInputType[1]/{http://www.tibco.com/xmlns/ae2xsd/2002/05/ae/700/basic/functionModules}__caret_request_caret_BAPI__MATERIAL__SAVEREPLICA_caret_BAPI__MATERIAL__SAVEREPLICA[1]/MATERIALDESCRIPTION[1]/item[2]/MATL__DESC[1]com.tibco.xml.validation.exception.k: data "xs:string('Hinge, Right Hand, Male, Removable, 0.187 Dia Pin, SS')" length must be at most xs:int('40') CHARACTERs
事务处理在“企业事务处理日志”中始终保持为“待处理”状态
此问题可能由下列任一原因引起:
ESI Services 无法将 ESIResponse 写入 EMS 服务器的 DataResponse 队列。要验证这一点,可导航至“Info*Engine管理”(Info*Engine Administration) >“属性编辑器”>“核心 JMS 属性”,并确认 JMS BASE URI 正确。然后请参见方法服务器日志,以确定已成功预订 DataResponse 队列。
无法连接至 JMS server tcp://<JMSServer>:7222。要解决此问题,请确保已从 TIBCO 服务器上正确版本的 JMS 中获取 Windchill 服务器的 tibjms.jar 文件。
JMS 服务器不可获得或主机名未解析至 IP 地址。导致这种情况的原因可能是 tibjms.jar 文件的版本不正确。要验证这一点:
1. 从 Windchill 服务器打开命令窗口。
2. 当 Windchill 方法服务器日志中出现准确的字符串时,使用其 ping <JMSServer>。
3. 如果 ping 请求失败,则运行 ping <JMSServer_IP>。
4. 如果 ping 请求成功,则使用显示的 IP 地址或将下列条目添加至 %Windir%\System32\drivers\etc\hosts 文件:<JMSServer_IP> <JMSServer>
5. 如果 ping 请求继续失败,请联系您的网络管理员。
连接到 DataResponse 队列时失败。
要验证这是导致此问题的原因,连接到 JMS 服务器,检查 DataResponse 队列是否已创建,并且已授予 WCESI 用户 DataResponse 队列发送权限。如果 DataResponse 队列名称前显示星号 (*),这表示队列为临时队列且需要创建。如果手动部署 EAR,则会出现此问题。要解决此问题,请在 JMS 管理窗口中运行下列命令:
1. Create queue <DataResponse>
2. Setprop queue <DataResponse> secure
3. Grant queue <DataResponse> <EAIUser> receive
4. Grant queue <DataResponse> <WCESIUser> send
5. Setprop factory QueueConnectionFactory url=tcp://<JMSServer>:7222
6. Commit
Process Archive 未连接到相同的 DataResponse 队列。
打开“JMS 管理”窗口,以确认 Process Archive 已预订 DataResponse 队列。当手动部署时,此步骤常被忽略,从而导致错误。如果预订了 DataResponse 队列,请通过导航至 TIBCO Administrator >“应用程序管理”>“应用程序名称”>“配置”>“部署名称”>“高级”> ESIJMS/DataResponseQueue 来验证 DataResponseQueue
手动启动 EMS 服务器后,所有 EMS 服务器配置消失
版本 5.1.4 中用于启动 EMS 服务器的命令已更改。在 EMS 版本 4.x 中,启动命令为 "./tibemsd"。在 EMS 版本 5.1.4 中,该命令为 ./tibemsd64 -config ../tibco/cfgmgmt/ems/data/tibemsd.conf。此命令使用相对路径,且应从 "<TIBCO_HOME>\ems\<version>\bin" 中执行。
要解决此问题,请停止由 "./tibemsd" 命令启用的进程,并使用正确的命令启动 EMS 服务器:
"./tibemsd64 -config ../tibco/cfgmgmt/ems/data/tibemsd.conf"
TIBCO Adapter for SAP 实例停止工作,并显示“错误”状况
该问题产生的原因是适配器堆栈溢出错误。TIBCO 支持已将其接受为已知问题,并建议将参数 adr3.stacksize 的值增加到一个适当的值,以解决此问题。已对其进行过测试,当值为 524288 (512 KB) 时,测试成功。
此问题当前仅出现在 HPUX v3 计算机上。
要增加 adr3.stacksize 的值,请导航至 TIBCO Administrator GUI >“应用程序管理”> <ApplicationName> >“配置”> ESISAPAdapterConfiguration.aar >“高级”。
通过升级请求升级一组业务对象会为这些对象中的每一个创建 RTM 工作流
如果首选项“发布升级请求”的值为“否”,则会出现此问题。将该首选项设置为“是”,以便通过单个 RTM 工作流发布升级请求中的对象。
升级一个或多个业务对象时生成的 ESI 响应文件不包含除 ID 外的任何升级请求信息
这是预期行为。如果希望使用单独 XML 元素中的 ESI 响应来发送升级请求的其他相关属性,则需相应地配置 ESI 响应元信息文件。