【发布时间】:2016-04-07 21:10:56
【问题描述】:
我创建了一个带有 RAMPART 实现的 Web 服务。
服务流程: 发送者 -> 使用他的私钥签署消息 -> 使用服务器公钥加密消息 -> 发送给接收者 接收者 -> 使用发送者的公钥验证消息 -> 使用他的私钥解密消息 -> 处理信息。
问题: 客户端正在签名和加密消息并发送到服务器 服务器正在成功验证和解密消息。 现在, 解密消息后服务器处理值 & 必须向客户回复状态。 返回时,我收到以下错误:
SEVERE: Servlet.service() for servlet [AxisServlet] in context with path [/webService] threw exception
java.lang.NullPointerException
org.apache.rampart.util.RampartUtil.setKeyIdentifierType(RampartUtil.java:1389)
org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:266)
org.apache.rampart.builder.BindingBuilder.getSignatureBuilder(BindingBuilder.java:250)
org.apache.rampart.builder.AsymmetricBindingBuilder.doSignature(AsymmetricBindingBuilder.java:760)
org.apache.rampart.builder.AsymmetricBindingBuilder.doSignBeforeEncrypt(AsymmetricBindingBuilder.java:417)
org.apache.rampart.builder.AsymmetricBindingBuilder.build(AsymmetricBindingBuilder.java:88)
org.apache.rampart.MessageBuilder.build(MessageBuilder.java:147)
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:65)
org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340)
org.apache.axis2.engine.Phase.invoke(Phase.java:313)
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:262)
org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:516)
org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:433)
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:216)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
另外,我已经实现了没有 RAMPART 的服务,在这种情况下响应是成功的。
请指教,我在过去 2 天里一直在苦苦挣扎.. 由于请求解密成功,无法理解我缺少什么,但响应抛出异常。
【问题讨论】: