我正在使用以下示例配置cxf签名:
<jaxws:client name="{http://cxf.apache.org}MyPortName" createdFromAPI="true">
<jaxws:properties>
<entry key="ws-security.callback-handler" value="interop.client.KeystorePasswordCallback" />
<entry key="ws-security.signature.properties" value="etc/client.properties" />
<entry key="ws-security.encryption.properties" value="etc/service.properties" />
<entry key="ws-security.encryption.username" value="servicekeyalias" />
</jaxws:properties>
</jaxws:client>
请参阅:http://cxf.apache.org/docs/ws-securitypolicy.html
我需要根据脚注正确设置名称:
For the jaxws:client's name attribute above, use the namespace of the WSDL along
with the name attribute of the desired wsdl:port element under the WSDL's service
section. (See here and here for an example.)
示例不起作用。
所以我的问题是该名称应该是什么?我在哪里可以在我的wsdl和/或我生成的代码中找到它?
有没有办法验证是否已加载cxf.xml文件?
我这样做是因为我收到了这个错误:
PolicyException: Security configuration could not be detected. Potential cause: Make sure jaxws:client element with name attribute value matching endpoint port is defined as well as a ws-security.signature.properties element within it.
我在代码中看到这个(来自abstractBindingBuilder):
(String)message.getContextualProperty(userNameKey);
结果是null。
任何帮助都会很棒!
答案 0 :(得分:2)
从wsdl生成java代码后,您将拥有一个扩展该服务的文件。 在文件中是端口的Qname,这就是所需要的。
名= “{命名空间}名”