0

我正在使用 Oracle 11g 数据库(因此是 JDK 1.5)并尝试使用 SOAP 调用 Web 服务。我必须使用 ws-security,所以我遵循了这个文档:http ://docs.oracle.com/cd/E15523_01/security.1111/e10037/wss.htm

我完成了文档中的所有操作,并且它在本地工作(使用 Netbeans JDK 1.5)。但是当我尝试在 Oracle 11g 数据库(使用 SQL Developer)上运行它时,它会在 WSSecurity 的 sign 方法上抛出一个 java.lang.NoSuchMethodError。我在两个位置都使用相同的库(文档中提到的那些(saaj-api-1.3 和 saaj-impl-1.3))。

我在谷歌搜索时发现它必须是一个图书馆问题,但我似乎无法弄清楚哪里出了问题。有没有人知道它在哪里或如何出错,或者我怎么能找到?

堆栈跟踪:

java.lang.NoSuchMethodError
at oracle.security.xmlsec.wss.WSSecurity.sign(WSSecurity.java:1169)
at Discimus.generateSoapMessage(DISCIMUS:176)

相关代码:

...
WSSecurity ws = WSSecurity.newInstance(soapEnvelope);
...
WSSignatureParams params = new WSSignatureParams(null, privateKey);
String []uris = {"#Body"};
ws.sign(uris, params, null);    //Error throws here

如您所见,堆栈跟踪似乎缺少一行:在 sign 方法中实际抛出错误的位置。很奇怪,我怎样才能得到这个缺失的行?否则它就是大海捞针。

提前致谢!

4

0 回答 0