CXF配置问题

时间:2011-01-12 20:18:35

标签: java web-services jax-ws cxf

我使用CXF生成客户端工件并使用java2ws插件生成我的wsdl。

在用于在tomcat上生成WSDL的CXF配置中,您需要定义jaxws:endpoint - 我遇到了针对jaxws:端点地址属性的CXF配置设置的问题。最终生成的wsdl有语法问题

CXF.xml(不使用我的MAVEN POM中的弹簧罐) - >

<import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
 <jaxws:endpoint id="JMSMetricsServiceEndpoint" 
      implementor="com.putnam.jms.monitor.websvcs.JMSMetricsService"
      address="/">
 </jaxws:endpoint>

jaxws:address元素指定WSDL文件中定义的端点地址,该文件定义了正在部署的服务。这需要将正确的soap:地址的绝对URL规范写入生成的WSDL中。目前这设置为“/” - 这对我有用 - 因为地址直接来自wsdl,只是它在soap:address - &gt;末尾附加一个尾部斜杠。当它生成wsdl作为最终产品时

 <soap:address = ' ...... /'> 

我的目标是以这样一种方式部署,即我没有过多/附加。

我已经尝试完全删除了地址字段但是没有用。我也试过硬编码地址,即使用绝对URI

 <jaxws:endpoint
 id="JMSMetricsServiceEndpoint" 
       implementor="com.putnam.jms.monitor.websvcs.JMSMetricsService"
       address="${HOST_NAME}">

其中$HOST_NAME = full http path where the wsdl resides ...

示例$HOST_NAME = "http://localhost...."

但这似乎也无效。

即使指向正确的方向,此更改也会在当前时刻导致格式错误的WSDL。

1 个答案:

答案 0 :(得分:1)

Adi,我在你的描述中看到了一个矛盾 - 你说你正在生成客户端工件但你的配置是针对服务端点的。对于客户端,适当的配置是 -

<jaxws:client...>

不是

<jaxws:endpoint..>

假设您正在编写服务而非客户端,地址是相对的,当您从服务中请求wsdl时,服务的url是从请求URL和您指定的地址的相对URI派生的,除非您需要使用jaxws:service的wsdlLocation参数指定显式的wsdl(不是生成的)。