我在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();
}
答案 0 :(得分:0)
请参见https://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1106656。
OSB将返回值视为对Java对象的引用。它不知道什么是Java字符串或如何处理它。您将不得不将其转换为XmlObject或让Java标注返回XmlObject。