我正在使用 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 的getUserData 方法(http://www.docjar.com/docs/api/org/apache/axis/SOAPPart .html)。
有谁知道我可以在哪里看,或者哪里出错了?我尝试使用其他版本的axis.jar,但我仍然得到同样的错误。
提前致谢!