Java Axis2/rampart使用signaturePropFile的加密问题

Java Axis2/rampart使用signaturePropFile的加密问题,java,web-services,axis2,ws-security,rampart,Java,Web Services,Axis2,Ws Security,Rampart,我对必须使用WS-Security的WebService客户端有问题。 我的客户机是用axis2编写的。它在我不启用时工作 加密(当然是我的服务器模拟器)。我启用了加密 通过添加到axis.xml: <!--Signature and Encryption : Using the request's certificate--> <module ref="rampart" /> <parameter name="OutflowSecurity"> <

我对必须使用WS-Security的WebService客户端有问题。 我的客户机是用axis2编写的。它在我不启用时工作 加密(当然是我的服务器模拟器)。我启用了加密 通过添加到axis.xml:

<!--Signature and Encryption : Using the request's certificate-->
<module ref="rampart" />

<parameter name="OutflowSecurity">
  <action>
    <items>Signature</items>
    <user>mn</user>
      <passwordCallbackClass>PWCallback</passwordCallbackClass>
      <signaturePropFile>client.properties</signaturePropFile>
    <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
    <signatureParts>{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body</signatureParts>
  </action>
</parameter> 
我得到:

org.apache.axis2.AxisFault: CryptoFactory: Cannot load properties: client.properties
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)
...
Caused by: java.lang.RuntimeException: CryptoFactory: Cannot load properties: client.properties
at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:258)
at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:171)
at org.apache.ws.security.handler.WSHandler.loadSignatureCrypto(WSHandler.java:431)
at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:137)
at org.apache.rampart.handler.WSDoAllSender.processBasic(WSDoAllSender.java:201)
at org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:64)
... 9 more
Caused by: java.lang.NullPointerException
at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:253)
... 14 more
我可以将
client.properties
作为
文件
对象打开。我试着把这个 文件位于不同的目录中,或将其名称更改为使用完整路径(都带有斜杠, 和反斜杠,而我的工作窗口)但没有任何帮助

我的client.properties文件如下所示:

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=mn
org.apache.ws.security.crypto.merlin.file=mn_keystore.ks

知道我为什么会出现这个错误吗?

我发现我必须将
客户端.properties
mn_keystore.ks
添加到
wss4j-1.5.8.jar
。我不知道这是不是故意的。我的首选是将这两个文件都从
.jar
库中取出

编辑:在其他环境中,我尝试使用单独的
客户端。属性
,它成功了!现在,
wss4j-1.5.8.jar与原来一样,没有配置和密钥库。我不知道为什么这项工作,而这项工作在早些时候不起作用:(

EDIT2:当Eclipse运行应用程序时,它可能不会将项目目录添加到claaspath。我放弃了将.properies文件添加到某些.jar中,现在我使用:从菜单选择运行->调试配置,找到Java应用程序及其类路径选项卡。然后选择“用户条目”并单击“高级”从右面板中单击按钮,然后选择“添加外部文件夹”。现在添加目录,并添加具有
.properties
文件的目录

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=mn
org.apache.ws.security.crypto.merlin.file=mn_keystore.ks