我正在使用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:buildslot1S000_PsrcDataFlowEngineTemplateNodesImbOutputTemplateNode.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:buildslot1S000_PsrcMTIMTIforBrokerDfdlParserImbDFDLWriter.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向导生成了它们,并且消息解析工作得很好。问题仅在于序列化。
有人知道这里可能缺少什么吗?
OutputRoot.Properties.MessageType必须包含DFDL架构中消息的名称。此外,当DFDL架构在共享库中时,OutputRoot.Properties.MessageSet必须包含库的名称。
听起来好像OutputRoot.Properties没有指向共享库。我记不清是哪个子字段完成了这项工作——它要么是OutputRoot.Properties.MessageType,要么是OutoutRoot.Properties.MessageSet。您可以很容易地检查-只需在使用了相同共享库的输入节点之后检查InputRoot.Properties的内容。
面临类似的问题。在我的案例中,一个HttpRequest节点使用DFDL域解析器/格式解析来自远程系统的HTTP响应的消息流引发了此错误(找不到指定应用程序的PIF数据)。"重新选择"相同的解析器域&节点上的消息类型以及随后的构建/重新部署解决了问题。似乎是IIB工具包中与项目参考相关的问题。
您需要创建静态库并引用应用程序。在计算节点中,ur编码基于dfdl主体