Oracle Web Services Security: AbstractMethodError in JDK 1.5



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

我执行了文档中的所有操作,但是当我尝试使用 setWsuID 方法在 X509BinarySecurityToken 上设置 WsuID 时,我收到具有以下堆栈跟踪的 AbstractMethodError:

org.apache.axis.SOAPPart.getUserData(Ljava/lang/String;)Ljava/lang/Object;
oracle.security.xmlsec.util.IDCache.getIdCache(IDCache.java:139)
oracle.security.xmlsec.util.IDCache.addToIDCache(IDCache.java:199)
oracle.security.xmlsec.wss.util.WSSUtils.addWsuIdToElement(WSSUtils.java:476)
oracle.security.xmlsec.wss.WSSElement.setWsuId(WSSElement.java:107)
Discimus.generateSoapMessage(Discimus.java:162)

它发生的代码:

X509BinarySecurityToken x509token = ws.createBST_X509((X509Certificate)certificate);
x509token.setWsuId("MyCert");
ws.addX509CertificateToken(x509token);

当我尝试使用 JDK 1.7 运行代码时,一切都运行良好,所以我猜它是一个库的东西?org.apache.axis.SOAPPart 文件位于 axis.jar 中,它继承了 org.w3c.dom.Node (http://www.docjar.com/docs/api/org/apache/axis/SOAPPart.html) 的 getUserData 方法。

有没有人知道我可以在哪里看,或者哪里出了问题?我尝试使用其他版本的 axis.jar,但仍然收到相同的错误。

提前感谢!

正如怀疑的那样(并在org.w3c.dom.Node上谷歌搜索AbstractMethodError时发现),这是一个库问题:使用saaj-impl和saaj-api可以解决问题

最新更新