cxf.conf中我的端点端口的名称是什么

时间:2014-01-30 15:09:15

标签: java web-services cxf

我正在使用以下示例配置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。

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

从wsdl生成java代码后,您将拥有一个扩展该服务的文件。 在文件中是端口的Qname,这就是所需要的。

名= “{命名空间}名”