java wsdl 中不显示参数属性类型的问题解决方案
最近采用CXF写了webservice接口,但是生成的wsdl却没有参数。
首先介绍一下JWS的注解:
Java Web Service (JWS) 注释类型是 Web Service 的核心之一。
(一)类级别
@javax.jws.WebService(targetNamespace = "", name = "",serviceName = "")
targetNamespace :生成的 WSDL 中使用的名称空间
name:Web Service 的名称,映射到 WSDL 文件中的 <wsdl:portType> 元素
serviceName: Web Service 的服务名,映射到 WSDL 文件<wsdl:service> 元素。
@javax.jws.soap.SOAPBinding(parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE)
用于指定 Web Service 到 SOAP 消息协议的映射。
parameterStyle :确定方法参数是否表示整个消息正文,或者参数是否是包装在以操作命名的顶层元素中的元素。默认值:javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED
(二)方法级别
@javax.jws.WebResult(name = "", targetNamespace = "", partName = "")
name:指定生成的 WSDL 中的操作结果的名称, 默认名称“return”。
@javax.jws.WebMethod(operationName="")
operationName: 指定方法公开的公共操作名,映射到 WSDL 文件中的 <wsdl:operation> 元素。没有这个属性的话,操作的公共名称将与方法名相同。
@javax.jws.WebParam(name="",targetNamespace="")
name: 指定输入参数名,而不是该参数的Java 名称“input”。
注释描述部分转载至:http://suky.iteye.com/blog/692279
========================================
那么为什么参数类型不在wsdl上显示呢?
原因就在targetNamespace上。
增加webservice interface和webservice impl的@webservice注解的targetNamespace属性。
同时接口方法参数前@WebParam注解。
接口代码,实现类就不展示了