我正在使用CXF生成客户端工件,并使用java2ws插件生成我的wsdl。
在配置CXF以便在tomcat上生成WSDL时,您需要定义jaxws:endpoint -我对jaxws:endpoint address属性的CXF配置设置有问题。最终生成的wsdl存在语法问题
CXF.xml (在我的MAVEN POM中没有使用spring jars ) ->
<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>address元素指定端点的地址,该端点在定义所部署的服务的WSDL文件中定义。这需要将正确的soap:address的绝对URL规范写入生成的WSDL中。目前,它被设置为"/“--这对我来说是有效的--因为地址是直接从wsdl准备好的,除非它在soap:address ->的末尾附加一个斜杠,当它生成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格式错误,即使它指向正确的方向。
发布于 2011-01-16 21:12:22
对于客户端,适当的配置是-
<jaxws:client...>不
<jaxws:endpoint..>假设您正在编写服务而不是客户端,地址是相对的,当您从服务请求wsdl时,服务的url派生自请求url,而相对URI派生自您指定的地址,除非您想使用jaxws:service的wsdlLocation参数指定显式wsdl(而不是生成的wsdl)。
https://stackoverflow.com/questions/4673607
复制相似问题