如何在Oracle Service Bus 11g中处理Java调出结果集数据?

时间:2019-01-02 20:33:06

标签: java oracle xml-parsing weblogic11g osb

我在OSB服务中有一个Java调用来从数据库中运行一个简单的选择查询.java代码将此结果集转换为xml格式,然后将此xml作为字符串返回。但是当我尝试使用此数据时在转换xquery中,它仅在响应变量中显示以下内容:

<con:java-content ref="jcid:2120886c:168088e4a35:-524c" xmlns:con="http://www.bea.com/wli/sb/context"/> .

我怀疑OSB无法处理xml字符串。

将结果集转换为xml字符串的代码:

private static String toXML(ResultSet rs) throws SQLException {
    ResultSetMetaData rsmd = rs.getMetaData();
    int colCount = rsmd.getColumnCount();
    StringBuffer xml = new StringBuffer();
    xml.append("<ns1:OutputCollection xmlns:ns1=\"http://xmlns.oracle.com/namespace\">");

    while (rs.next()) {
        xml.append("<ns1:Output>");

        for (int i = 1; i <= colCount; i++) {
            String columnName = rsmd.getColumnName(i);
            Object value = rs.getObject(i);
            xml.append("<ns1:" + columnName + ">");

            if (value != null) {
                xml.append(value.toString().trim());
            }
            xml.append("</ns1:" + columnName + ">");
        }
        xml.append("</ns1:Output>");
    }

    xml.append("</ns1:OutputCollection>");


    return xml.toString();

}

1 个答案:

答案 0 :(得分:0)

请参见https://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1106656

OSB将返回值视为对Java对象的引用。它不知道什么是Java字符串或如何处理它。您将不得不将其转换为XmlObject或让Java标注返回XmlObject。