从代理管理非法XML字符

2020-08-24 08:15发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,人们

我在异步方案PROXY-to-FILE(PO 7.5单堆栈)上遇到问题。

在来自ECC的有效负载中,我可以接收到XML非法字符,必须先删除这些非法字符,以免它们导致映射失败。

我实现了一个Java映射,该映射首先在Operation Mapping中起作用。

通过功能测试>在配置和监视中发送测试消息来测试场景都可以正常工作。

相反,通过ECC运行代理,流失败并显示以下错误:

将消息传输到端点 使用连接SOAP_http:// sap.com/xi/XI/System 失败,原因是:com。 sap.aii.af.service.mapping.MappingException:runtimeApplication映射程序中的映射失败 com/nick4name/xi/javamapping/jmXmlCharsCleaning/JMStartup 会引发流转换异常:[jmXmlCharsCleaning] org.xml.sax.SAXParseException; lineNumber:1; columnNumber:2112; 字符参考"&#

请注意该进程已正确识别了操作映射,请参阅" com/nick4name/xi/javamapping/jmXmlCharsCleaning/JMStartup",然后我的jm,但可能在运行之前失败。

似乎,该测试工具从手动设置的ICO开始,会跳过最后一个XML解析,而运行时进程将执行该解析。

现在是个难题。 是否可以干预此行为,或者唯一的办法是通过代理渠道中的模块自定义?

非常感谢您的支持。

尼古拉

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,人们

我在异步方案PROXY-to-FILE(PO 7.5单堆栈)上遇到问题。

在来自ECC的有效负载中,我可以接收到XML非法字符,必须先删除这些非法字符,以免它们导致映射失败。

我实现了一个Java映射,该映射首先在Operation Mapping中起作用。

通过功能测试>在配置和监视中发送测试消息来测试场景都可以正常工作。

相反,通过ECC运行代理,流失败并显示以下错误:

将消息传输到端点 使用连接SOAP_http:// sap.com/xi/XI/System 失败,原因是:com。 sap.aii.af.service.mapping.MappingException:runtimeApplication映射程序中的映射失败 com/nick4name/xi/javamapping/jmXmlCharsCleaning/JMStartup 会引发流转换异常:[jmXmlCharsCleaning] org.xml.sax.SAXParseException; lineNumber:1; columnNumber:2112; 字符参考"&#

请注意该进程已正确识别了操作映射,请参阅" com/nick4name/xi/javamapping/jmXmlCharsCleaning/JMStartup",然后我的jm,但可能在运行之前失败。

似乎,该测试工具从手动设置的ICO开始,会跳过最后一个XML解析,而运行时进程将执行该解析。

现在是个难题。 是否可以干预此行为,或者唯一的办法是通过代理渠道中的模块自定义?

非常感谢您的支持。

尼古拉

付费偷看设置
发送
9条回答
Aaron 3364
1楼-- · 2020-08-24 08:51

您好,Nocila

您可以按照刚才的方式删除/替换Java映射中的特殊字符。

  • 确保操作映射中的第一个映射中的java映射,然后是您拥有的所有其他映射。
  • 端到端测试时,请获取 消息监视日志中的源有效负载(在映射之前),并使用该有效负载测试您的操作映射,以查看其是否正常工作。 )以及从"发送测试消息"中触发它的时间。

-Priyanka

shere_lin
2楼-- · 2020-08-24 09:04

如果您尝试使用与看到的相同的有效负载进行测试 在ECC的SXMB_MONI中,如果在OM中相同,它应该在运行时工作。

此外,请检查XML声明中的编码,以防万一不同。 您可能需要根据ECC有效负载中的方式调整Java代码。

privatestaticbyte [] cleanChars(byte [] by){

String s = newString(by," UTF-8");

by = null;

s = s.replaceAll(" [\\ x00-\\ x08]","").replaceAll(" [\\ x10-\\ x1f]","");

返回s.getBytes();

}

--Priyanka

粗暴的香蕉
3楼-- · 2020-08-24 09:04
Alawn_Xu
4楼-- · 2020-08-24 09:11

您的初始帖子为...

我在异步方案PROXY上遇到问题 -FILE(PO 7.5单堆栈)。
 在ECC的有效负载中,我可以接收到必须删除的XML非法字符,否则它们会导致映射失败。

==>为什么不在ECC(代理运行时)中使用已经在其中使用过的参数消除非法字符呢?

如果绝对必要,您应该像以前那样使用Java映射,因为可能无法用XSLT或图形映射来修复格式不正确的XML。 您甚至可能最终编写了一个自定义模块来修复PI映射运行时之前的问题。

软件心理学工程师
5楼-- · 2020-08-24 09:10

您在Java中是什么?

打个大熊猫
6楼-- · 2020-08-24 09:02

是的...

  1. 您可能应该使用SPROXY参数而不是ABAP常量。
  2. 如果您不确定自己是实际调用代理的用户名,那么您的用户名就可能会受到阻碍。
  3. < li>最后,ILLEGAL_CHAR_REJECT参数将导致代理错误在SRT_UTIL或SXMB_MONI中可见,而不是"替代" XML进入PI的预期结果。

一周热门 更多>