带有CLOB响应的WSO2 DSS调用过程引发ORA-22835错误

时间:2013-09-23 07:10:35

标签: oracle wso2 wso2dss

我有一个 Oracle 程序

TEST_XML_PARM_CALLER

通话程序

TEST_XML_PARM_CALLEE(parm1 IN CLOB, parm2 OUT CLOB) 

通过WSO2 ESB,WSO2 DSS。

parm1是CLOB参数,从程序TEST_XML_PARM_CALLER发送XML内容, parm2是CLOB参数,它返回来自过程TEST_XML_PARM_CALLEE的XML内容。

从TEST_XML_PARM_CALLER到ESB到DSS到TEST_XML_PARAM_CALLEE的调用是正确的CLOB内容(字符串长度大于4000), 但是当长度大于4000时,返回参数(parm2)将引发错误,如下面的

ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 6024, maximum: 4000)

在WSO2 DSS中,配置如下

<data name="test_xml_parm">
   <config id="test_db">
      <property name="carbon_datasource_name">test_db</property>
   </config>
   <query id="qry_test_xml_parm" useConfig="test_db">
      <sql>call TEST_XML_PARM_CALLEE(?,?)</sql>
      <result element="rcd" rowName="row">
         <element column="rtn_clob" name="rtn_clob" xsdType="string"/>
      </result>
      <param name="clob_xml" ordinal="1" sqlType="STRING"/>
      <param name="rtn_clob" ordinal="2" sqlType="STRING" type="OUT"/>
   </query>
   <operation name="op_test_xml_parm">
      <call-query href="qry_test_xml_parm">
         <with-param name="clob_xml" query-param="clob_xml"/>
      </call-query>
   </operation>
</data>

任何人都可以告诉我如何解决它?

1 个答案:

答案 0 :(得分:0)

这是一个老问题,我不知道wso2Dss版本。

我遇到了与wso2DSS 4.4.2类似的问题

1)将参数sqlType设置为“CLOB” 2)用ojdbc6.jar替换ojdbc5.jar(否则你会得到java.lang.AbstractMethodError:setClob是抽象错误。

我仍然遇到xml问题(我必须在CDATA中输入并且响应是ecaped(&lt; =&gt; &lt;)但我应该能够在ESB端处理它。