OSB java callout函数 - 将XmlAnyTypeImpl转换为String

时间:2014-06-13 08:00:00

标签: java java-ee oracle11g osb oracle-fusion-middleware

我正在尝试在OSB(版本11.1.3)中创建一个java调用函数来解码URL。我可以在程序中使用java.net.URLDecoder.decode(data, "UTF-8");,但OSB函数给出以下错误(当输入和返回类型为String时)

<Jun 11, 2014 7:43:30 AM UTC> <Error> <OSB Transform> <BEA-382516> <Failed to evaluate expression for callout to java method "public static java.lang.String com.help.sachinProject.ttttt.test(java.lang.String)". Argument index: 1, exception: Value of type 'org.apache.xmlbeans.impl.values.XmlAnyTypeImpl' cannot be type-cast to 'java.lang.String'>
<Jun 11, 2014 7:43:35 AM UTC> <Warning> <Socket> <BEA-000449> <Closing socket as no data read from it on 10.232.24.59:49,359 during the configured idle timeout of 5 secs>

所以我应该输入和返回类型为 XmlAnyTypeImpl 。如何将String转换为XmlAnyTypeImpl (xmlbeans.jar中可用的XmlAnyTypeImpl)

这是我的新计划

import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl;
public class XMLFormatDecode {

XMLFormatDecode(){
super();
}

   public static String getValue(XmlAnyTypeImpl data)    
       {
       String decoded = java.net.URLDecoder.decode(data.toString(), "UTF-8");
       return decoded;                                         
       }


public static void main(String[] args) throws UnsupportedEncodingException {
new XMLFormatDecode();
System.out.println("Result main - "+XMLFormatDecode.getValue(null));
       }
}

XmlAnyTypeImpl.toString()会起作用吗?

有人可以帮我将String转换为XmlAnyTypeImpl吗?

1 个答案:

答案 0 :(得分:2)

发生错误是因为它无法通过XmlAnyType TO 您的静态java方法。您没有指定传递给Java方法的内容,因此我只能假设您没有正确地将其转换为正确的类型。它得到一个XmlAnyTypeImpl,需要转换为其他东西(String,int,boolean等)。您可以使用某种形式的XS构造函数调整您传递给Java标注的内容:

XS Constructors

Java Callout