OSB java callout function

来源:互联网 发布:coc兵种数据 编辑:程序博客网 时间:2024/06/14 20:16

在OSB中调用JAVA程序,将xml当成String类型传入时候报错了。错误如下。

<con:fault  xmlns:con="http://www.bea.com/wli/sb/context"><con:errorCode>BEA-382516</con:errorCode><con:reason>无法计算针对 Java 方法 "public static java.lang.String com.df.stage.dms.instance.DmsInstanceLog.removeNameSpace(java.lang.String)" 的标注的表达式。参数索引: 1, 异常错误: Value of type 'org.apache.xmlbeans.impl.values.XmlAnyTypeImpl' cannot be type-cast to 'java.lang.String'</con:reason><con:location><con:node>PipelinePairNode1</con:node><con:pipeline>PipelinePairNode1_request</con:pipeline><con:stage>stage1</con:stage><con:path>request-pipeline</con:path></con:location></con:fault>

提示无法将org.apache.xmlbeans.impl.values.XmlAnyTypeImpl转为java.lang.String类型

解决方案一:
修改JAVA代码,将形参类型改为Object。

比如我之前的函数是

public static void test(String request){    //......}

改为

public static void test(Object object){    if(object != null)        String request = object.toString();    //......}

解决方案二:
不修改JAVA函数,调用xpath函数将传入的参数转为String类型。
比如,之前传入的是$p_request, 现在改为fn-bea:serialize($p_request)

这里用到的函数fn-bea:serialize($arg-xml)能够将XmlAnyTypeImpl转为String类型。
同样的String类型转XmlAnyTypeImpl类型的函数是fn-bea:inlinedXML($arg-string)

原创粉丝点击