我正在使用IBM Integration Bus v10(以前称为IBM Message Broker)将COBOL例程公开为SOAP Web服务。 COBOL例程通过MQ队列集成到IIB中。
我们在IIB中导入了一些COBOL副本作为DFDL模式,SOAP消息和DFDL消息之间的映射工作正常。
但是,当消息到达必须进行消息树序列化的节点(例如,FileOutput或MQ请求)时,它将失败并显示以下错误:
"The PIF data could not be found for the specified application"
这是异常的堆栈跟踪的最后一部分:
RecoverableException
File:CHARACTER:F:\build\slot1\S000_P\src\DataFlowEngine\TemplateNodes\ImbOutputTemplateNode.cpp
Line:INTEGER:303
Function:CHARACTER:ImbOutputTemplateNode::processMessageAssemblyToFailure
Type:CHARACTER:ComIbmFileOutputNode
Name:CHARACTER:MyCustomFlow#FCMComposite_1_5
Label:CHARACTER:MyCustomFlow.File Output
Catalog:CHARACTER:BIPmsgs
Severity:INTEGER:3
Number:INTEGER:2230
Text:CHARACTER:Caught exception and rethrowing
Insert
Type:INTEGER:14
Text:CHARACTER:Kcilmw20Flow.File Output
ParserException
File:CHARACTER:F:\build\slot1\S000_P\src\MTI\MTIforBroker\DfdlParser\ImbDFDLWriter.cpp
Line:INTEGER:315
Function:CHARACTER:ImbDFDLWriter::getDFDLSerializer
Type:CHARACTER:ComIbmSOAPInputNode
Name:CHARACTER:MyCustomFlow#FCMComposite_1_7
Label:CHARACTER:MyCustomFlow.SOAP Input
Catalog:CHARACTER:BIPmsgs
Severity:INTEGER:3
Number:INTEGER:5828
Text:CHARACTER:The PIF data could not be found for the specified application
Insert
Type:INTEGER:5
Text:CHARACTER:MyCustomProject
我的可部署BAR文件中似乎缺少某些内容。说我的应用程序有消息流并且它取决于具有所有.xsd文件(DFDL)的共享库是很重要的。
我认为模式是正常的,因为我已经使用Toolkit向导生成了模式,并且消息解析效果很好。问题仅在于序列化。
有人知道这里可能缺少什么吗?
答案 0 :(得分:2)
OutputRoot.Properties.MessageType必须包含DFDL架构中的消息名称。此外,当DFDL模式位于共享库中时,OutputRoot.Properties.MessageSet必须包含库的名称。
答案 1 :(得分:1)
听起来好像OutputRoot.Properties没有指向共享库。我不记得哪个子域执行该作业 - 它是OutputRoot.Properties.MessageType或OutputRoot.Properties.MessageSet。 您可以轻松检查 - 只需在使用相同共享库的输入节点之后检查InputRoot.Properties的内容。
答案 2 :(得分:0)
面临类似的问题。在我的例子中,带有HttpRequest节点的消息流使用DFDL域解析器/格式来解析来自远程系统的HTTP响应引发了此错误(无法找到指定应用程序的PIF数据)。 “重新选择”相同的解析器域&节点上的消息类型后跟build / redeploy解决了问题。似乎是IIB工具包中的项目参考相关问题。
答案 3 :(得分:-1)
您需要创建静态库并引用应用程序。 在计算节点中,ur编码基于dfdl body