我正在使用Oracle 11g数据库(因此是JDK 1.5)并尝试使用SOAP调用Web服务。我必须使用ws-security,所以我遵循了这个文档:http://docs.oracle.com/cd/E15523_01/security.1111/e10037/wss.htm
我在文档中做了所有事情,但是当我尝试使用setWsuID方法在X509BinarySecurityToken上设置WsuID时,我得到一个带有以下stacktrace的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,但我仍然得到同样的错误。
提前致谢!
答案 0 :(得分:0)
如怀疑的那样(在org.w3c.dom.Node上使用Google搜索AbstractMethodError时发现),这是一个库问题:使用saaj-impl和saaj-api做了伎俩