【发布时间】:2011-08-05 11:40:25
【问题描述】:
谁能告诉我在Apache CXF服务器中使用原始WSDL生成WSDL的方法是什么。
我知道Axis 2 在Service.xml 中有一个配置,将useOriginalWSDL 设置为TRUE,我得到了原始的wsdl。
我想知道CXF中的设置。
【问题讨论】:
标签: web-services wsdl cxf
谁能告诉我在Apache CXF服务器中使用原始WSDL生成WSDL的方法是什么。
我知道Axis 2 在Service.xml 中有一个配置,将useOriginalWSDL 设置为TRUE,我得到了原始的wsdl。
我想知道CXF中的设置。
【问题讨论】:
标签: web-services wsdl cxf
为了在 CXF Server 中使用原始 WSDL 生成 WSDL,我们可以在元素 jaxws:endpoint 中使用属性 wsdlLocation
属性,指定端点的 WSDL 契约的位置。 WSDL 契约的位置与部署服务的文件夹相关。
或
在CXF中我们可以使用@WebService注解我们可以指定WSDL的位置请参考文档
关于@WebService
我自己找到了答案,我认为这是一个简单的问题,但感觉这个答案可以在stackoverflow中
编辑:
虽然我添加了wsdlLocation,但CXF框架无法创建服务。 apache tomcat 中的错误并没有太大帮助,只是说明无法创建服务。
为了正常工作jaxws:endpoint 应具有以下属性:
wsdlLocation - 项目文件夹的相对路径,例如 /WEB-INF/originalwsdl.wsdl
serviceName - WSDL 中的服务名称,在 wsdl 中指定命名空间,例如 e:ServiceName
endpointName - 这是端口绑定名称,与 serviceName 规则相同,例如 e1:endpointName
记得用xmlns:e="namespace as in your wsdl"为e:和e1定义命名空间
在所有这些设置之后,我的应用程序工作了。 我们从 wsdl 创建的类应该具有与目标名称空间相同的包名,以便使用原始 WSDL 创建完全相同的 WSDL。请有人确认这一发现。
我发现 CXF 的文档很少,因此不得不 挖掘我的解决方案的代码和 xsds
【讨论】: