我最近参与了将weblogic环境从版本10.3.3.0升级到10.3.6.0。两者都托管相同版本的OSB,在复制完所有代码后,我们遇到了一个问题。除了我们最终发现的一块xquery之外,所有的东西都起作用了。有问题的XQuery从数据库中获取了一个令牌,所以我们可以通过业务服务发送请求,并且我们从数据库中检索到的令牌格式不正确。有问题的XQuery是fn-bea:execute-sql
命令。在旧环境中创建格式化回车令牌令牌,新的环境中运行相同的代码,并创建了一个令牌是这样的:weblogic中的SQL Xquery实现
54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;
令牌有一个额外的#&13;
在每行前结束回车(我用记事本++检查,看到回车符后)。现在我知道#&13;
是回车的ASCII代码,我用一点点的xquery格式将它们作为解决方法删除。有问题的XQuery是:
fn:replace(xs:token(TOKEN), " " , "
")
其中token是我把sql函数的结果放入的变量。
但是我想知道是什么造成了这种情况?是否已将此xquery功能从较新版本的weblogic中删除?我无法看到与此直接相关的weblogic更改日志中的任何内容。
此外,还有一个比格式化字符串作为令牌更清洁的解决方法,以删除#& 13;以及回车,然后重新添加回车代替已添加的空间?
感谢, TheVoicedElk
在记事本++中查看令牌后,我们得到如下所示:54686973206973206120746F6B656E0D#&13; CRLF。干杯,我没有想过只是用自己的方式取代回车,因为它会跳过一个函数。 – TheVoicedElk