Certificate 为什么在我更改密钥库时Tomcat会出错?

Certificate 为什么在我更改密钥库时Tomcat会出错?,certificate,jax-ws,axis,keystore,Certificate,Jax Ws,Axis,Keystore,我在JAX-WSWeb服务中遇到axis2客户端问题。这个JAX-WSWeb服务位于Tomcat容器中。Keystorefile是从数据库中动态检索的。当我启动Tomcat时,我可以正常使用ws-client,它工作得很好,但是如果我更改密钥库,它就会失败,stacktrace如下所示。如果我重新启动Tomcat,它可以正常工作。rampart或tomcat是否有一些静态变量在tomcat重新启动之前不会刷新?我使用rampart模块1.3为安全web服务的消息签名。我认为流入和流出配置是正确的

我在JAX-WSWeb服务中遇到axis2客户端问题。这个JAX-WSWeb服务位于Tomcat容器中。Keystorefile是从数据库中动态检索的。当我启动Tomcat时,我可以正常使用ws-client,它工作得很好,但是如果我更改密钥库,它就会失败,stacktrace如下所示。如果我重新启动Tomcat,它可以正常工作。rampart或tomcat是否有一些静态变量在tomcat重新启动之前不会刷新?我使用rampart模块1.3为安全web服务的消息签名。我认为流入和流出配置是正确的,因为我一直在日志中打印它们

Tomcat Catalina日志中的堆栈跟踪:

 org.apache.axis2.AxisFault: Error during Signature: ; nested exception is:
        org.apache.ws.security.WSSecurityException: General security error (No certificates for user user1 were found for signature)
        at org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:67)
        at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
        at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:416)
        at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
        at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
        at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)

好的,我找到了解决办法。诀窍是使用基于策略的配置。我使用的是旧的基于参数的配置。这里是Thilina的伟大博客的链接:


在学习本教程时,请记住定义policy.xml文件。这是我第一次忘记做的事情:)

好的,我找到了解决办法。诀窍是使用基于策略的配置。我使用的是旧的基于参数的配置。这里是Thilina的伟大博客的链接:

在学习本教程时,请记住定义policy.xml文件。这是我第一次忘记做的事情:)