我使用的是XML Broker,它有一个从队列读取WebSphere消息的消息流。如果消息是非标准类型(不符合XML标准),则将其转换为BLOB对象并审计到Oracle数据库。
问题是,非标准消息而不是被审计到d/b中的消息正在落入回退队列。
通过调查,我了解到数据库中存储审计消息的字段是CLOB类型,而消息流将非标准消息转换为BLOB类型。
我想知道有没有可能不需要投射或者转化..
下面是将非标准消息转换为BLOB类型的代码(在ESQL中):
MOVE aonMSG TO "OutputRoot"."BLOB";
SET msgChar = aonMSG;
SET messageType = 'NON_STANDARD_MESSAGE';
SET msgChar = CAST(OutputRoot."BLOB"."BLOB" As CHAR CCSID 819 ENCODING
OutputRoot.MQMD.Encoding );发布于 2014-05-01 00:54:15
从代理的角度来看,您可以将消息作为BLOB引入,然后将其RCD到XMLNSC,并对非标准消息抛出异常,这样,在从输入节点开始的catch路径上,您可以访问实际的输入位流,从而保证不会进行转换或强制转换。
上面的代码有点令人困惑,假设aonMsg是输入树的一部分,那么您将获取消息树的UCS-2部分,并将其放入名为BLOB的文件夹中。然后使用CCSID819和队列管理器编码将其转换为CHAR (而不是blob)。
如果你想从树的任意部分创建一个BLOB,你需要使用类似于"AS BITSTREAM“的东西来序列化它。
或者,如果您唯一的问题是在转换到Oracle的过程中发生了转换,您可能会发现您需要确保列的类型是正确的,并且正确设置了odbc.ini文件。
https://stackoverflow.com/questions/23387125
复制相似问题