0

我正在使用 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,但我仍然得到同样的错误。

提前致谢!

4

1 回答 1

0

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

于 2013-10-03T08:40:30.097 回答