java wsdl 中不显示参数属性类型的问题解决方案

CXF3.0.1解决方案:
配合spring方式

address="/ReceiveUMSMessageService" implementorClass="com.sw.extInterface.webservice.service.ReceiveUMSMessageService" />


======================= old =====================
最近采用CXF写了webservice接口,但是生成的wsdl却没有参数。

首先介绍一下JWS的注解:
Java Web Service (JWS) 注释类型是 Web Service 的核心之一。

(一)类级别

[b]@javax.jws.WebService(targetNamespace = "", name = "",serviceName = "") [/b]

targetNamespace :生成的 WSDL 中使用的名称空间
name:Web Service 的名称,映射到 WSDL 文件中的 元素
serviceName: Web Service 的服务名,映射到 WSDL 文件 元素。


[b]@javax.jws.soap.SOAPBinding(parameterStyle = javax.jws.soap.SOAPBinding.ParameterStyle.BARE) [/b]

用于指定 Web Service 到 SOAP 消息协议的映射。

parameterStyle :确定方法参数是否表示整个消息正文,或者参数是否是包装在以操作命名的顶层元素中的元素。默认值:javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED

(二)方法级别

[b]@javax.jws.WebResult(name = "", targetNamespace = "", partName = "")[/b]

name:指定生成的 WSDL 中的操作结果的名称, 默认名称“return”。

[b]@javax.jws.WebMethod(operationName="") [/b]

operationName: 指定方法公开的公共操作名,映射到 WSDL 文件中的 元素。没有这个属性的话,操作的公共名称将与方法名相同。

[b]@javax.jws.WebParam(name="",targetNamespace="") [/b]

name: 指定输入参数名,而不是该参数的Java 名称“input”。

注释描述部分转载至:[url]http://suky.iteye.com/blog/692279[/url]

========================================

那么为什么参数类型不在wsdl上显示呢?

原因就在targetNamespace上。
增加webservice interface和webservice impl的@webservice注解的targetNamespace属性。
同时接口方法参数前@WebParam注解。
接口代码,实现类就不展示了

@WebService(targetNamespace="http://ucp.xxx.com")
public interface IMsgBusService {

/**
* 接收上行数据,DB数据存储
* @param username 用户
* @param password 密码
* @param msgsObj 消息对象
* @return 消息状态
*/
@WebMethod
Response showMsg(@WebParam(name = "username") String username,
@WebParam(name = "password") String password,
@WebParam(name = "msgsObj") MultiMessages msgsObj);

}



[color=red]注意:接口与实现类的targetNamespace属性的值必须一致。[/color]

















































































































你可能感兴趣的:(webservice)