weblogic中的SQL Xquery实现

时间:2016-06-10 13:37:17

标签: java weblogic xquery osb

我最近参与了将weblogic环境从版本10.3.3.0升级到10.3.6.0。两者都托管相同版本的OSB,在复制完所有代码后,我们遇到了一个问题。一切都与我们最终发现的一块xquery有所不同。有问题的XQuery从数据库中获取了一个令牌,因此我们可以通过业务服务发送请求,并且我们从数据库中检索到的令牌格式不正确。有问题的XQuery是一个fn-bea:execute-sql命令。旧环境创建了一个使用回车格式化令牌的令牌,新环境运行相同的代码并创建一个如下所示的令牌:

54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;

令牌在回车之前在每一行的末尾有一个额外的#&13;(我用notepad ++检查并在此之后看到了回车符)。现在我知道#&13;是回车的ASCII码,我使用了一些xquery格式来删除它们作为一种解决方法。有问题的XQuery是:

fn:replace(xs:token(TOKEN), " " , "
")

其中token是我将sql函数的结果放入的变量。

但是我想知道是什么造成的?有没有从较新版本的weblogic中删除此xquery功能?我无法在与此直接相关的weblogic更改日志中看到任何内容。

还有一个更简洁的解决方法,而不是将字符串格式化为令牌以删除#& 13;与回车一起,然后重新添加回车代替已添加的空间?

谢谢, TheVoicedElk

1 个答案:

答案 0 :(得分:1)

  

令牌有一个额外的#& 13;在回车之前每行的末尾

不完全。


是回车(又名\r&#xD)。


是换行符(又名\n&#xA)。

因此,xquery引擎将\ n转换为Notepad理解的实际换行符,但将回车符编码为实体。

如果你想删除它,我猜replace($token, '\r','')会起作用。你保留\ n但是剥离\ r。