2017-04-20 144 views
0

我正在使用从 字符串生成的CXF SoapMessage的项目。我试图使用用户名令牌验证,但它会抛出 空指针异常用户名令牌验证错误

这是我使用的源代码[1]。我将SOAP消息[2]作为 字符串传递给initiateComplianceCheck方法,然后将其转换为CXF SoapMessage对象并将其用于用户名令牌身份验证。

[1] https://gist.github.com/anonymous/bfb6f65194a030a50681af175a9937f5

[2] https://gist.github.com/anonymous/f704db6147e02acdff323dc67ccff6d6

但是CXF的handleMessage给出一个NullPointerException

这是抛出

java.lang.NullPointerException at 
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterc 
eptor.java:165) 

错误消息的一部分欣赏如果可以帮我解决这个问题

+0

我想你应该提供更多的信息。没有多少人使用CXF,所以我们需要更多像库的版本。 [检查此链接](http://stackoverflow.com/questions/37698141/java-cxf-ws-security-a-security-error-was-encountered-when-verifying-the-mess) – Teocci

回答

0

NPE是因为在SoapMessage上没有设置消息交换。你可以在以下添加到您的代码:

Exchange ex = new ExchangeImpl(); 
ex.setInMessage(message); 

例如:

https://github.com/apache/cxf/blob/3.1.x-fixes/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/WSS4JInOutTest.java

顺便说一句,我使用的是样品中的wsse命名空间是一个非常 旧的标准和将无法工作。它应该是xmlns:wsse =“ http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” 。