文档章节

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

嘿嘿嘿IT
 嘿嘿嘿IT
发布于 05/20 10:12
字数 1014
阅读 5
收藏 1

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

<jaxws:endpoint id="receiveUMSMessageService" implementor="com.sw.extInterface.webservice.service.impl.ReceiveUMSMessageServiceImpl"
        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 文件中的 <wsdl:portType> 元素
serviceName: Web Service 的服务名,映射到 WSDL 文件<wsdl:service> 元素。


[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 文件中的 <wsdl:operation> 元素。没有这个属性的话,操作的公共名称将与方法名相同。

[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]


<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.service.bus.ucp.xxx.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://service.bus.ucp.xxx.com/" name="MsgBusServiceImpl" targetNamespace="http://impl.service.bus.ucp.xxx.com/">
  <wsdl:import location="http://localhost/ucp/webservice/msgBusService?wsdl=IMsgBusService.wsdl" namespace="http://service.bus.ucp.xxx.com/">
    </wsdl:import>
  <wsdl:binding name="MsgBusServiceImplSoapBinding" type="ns1:IMsgBusService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="showMsg">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="showMsg">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="showMsgResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MsgBusServiceImpl">
    <wsdl:port binding="tns:MsgBusServiceImplSoapBinding" name="MsgBusServiceImplPort">
      <soap:address location="http://localhost/ucp/webservice/msgBusService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ucp.xxx.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="MsgBusServiceImpl" targetNamespace="http://ucp.xxx.com">
  <wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ucp.xxx.com" elementFormDefault="unqualified" targetNamespace="http://ucp.xxx.com" version="1.0">

  <xs:element name="showMsg" type="tns:showMsg"/>

  <xs:element name="showMsgResponse" type="tns:showMsgResponse"/>

  <xs:complexType name="showMsg">
    <xs:sequence>
      <xs:element minOccurs="0" name="username" type="xs:string"/>
      <xs:element minOccurs="0" name="password" type="xs:string"/>
      <xs:element minOccurs="0" name="msgsObj" type="tns:multiMessages"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="multiMessages">
    <xs:sequence>
      <xs:element minOccurs="0" name="accessType" type="xs:string"/>
      <xs:element minOccurs="0" name="id" type="xs:string"/>
      <xs:element name="msgCount" type="xs:int"/>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="msgList" nillable="true" type="tns:multiMessage"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="multiMessage">
    <xs:sequence>
      <xs:element minOccurs="0" name="content" type="xs:string"/>
      <xs:element minOccurs="0" name="description" type="xs:string"/>

      <!-- ... ... -->

      <xs:element minOccurs="0" name="destAgentId" type="xs:string"/>
      <xs:element minOccurs="0" name="destination" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="showMsgResponse">
    <xs:sequence>
      <xs:element minOccurs="0" name="return" type="tns:response"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="response">
    <xs:sequence>
      <xs:element minOccurs="0" name="message" type="xs:string"/>
      <xs:element minOccurs="0" name="status" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
  </wsdl:types>
  <wsdl:message name="showMsg">
    <wsdl:part element="tns:showMsg" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="showMsgResponse">
    <wsdl:part element="tns:showMsgResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="IMsgBusService">
    <wsdl:operation name="showMsg">
      <wsdl:input message="tns:showMsg" name="showMsg">
    </wsdl:input>
      <wsdl:output message="tns:showMsgResponse" name="showMsgResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="MsgBusServiceImplSoapBinding" type="tns:IMsgBusService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="showMsg">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input name="showMsg">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="showMsgResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MsgBusServiceImpl">
    <wsdl:port binding="tns:MsgBusServiceImplSoapBinding" name="IMsgBusService">
      <soap:address location="http://localhost/ucp/webservice/msgBusService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
 

本文转载自:https://blog.csdn.net/langmnm/article/details/84518968 

嘿嘿嘿IT
粉丝 3
博文 79
码字总数 29249
作品 0
郑州
程序员
私信 提问
Java调用.NET webservice方法的几种方式

一. 使用axis1.x调用webservice方法 Axis的最常用版本:1.4和2.0版本。以下为1.4版本 核心代码: // webserviceURL serviceurl = "http://vip.cxcod.com/PodApi/GetPodStr.asmx?wsdl"; Ser......

钱佳庆
2011/10/04
0
2
Web Service学习笔记

Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络...

姚君
2014/04/17
0
0
使用 JAXB 框架定制 Web 服务行为

Web 服务概述 从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现、编程语言、运行平台甚至操作系统等。也正因为这个特点 We...

红薯
2010/03/24
1K
1
wsgen工具与JAX-B工件(Artifacts)

任何Document样式的服务,无论具有包装还是非包装,都需要由wsgen工具产生的工件(Artifacts,支持客户端开发的相关代码资源)。wsgen工具可以产生构建WSDL文档所需要的类,这些类就是通常所...

柳哥
2014/04/10
0
0
Java开发WebServices传递pojo提示参数不匹配的问题

webservices服务用Java开发的时候,参数为基本数据类型是没有什么问题的。 但是如果是传递pojo,也就是java对象,可能你会遇到参数不匹配的问题。 webservices接口暴露出来以后肯定是一个wsd...

古怪945
2015/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

仿优酷客户端底部导航源码

实现类似优酷客户端底部导航菜单按钮。效果十分炫,用户拖动列表是,导航按钮自动隐藏。点击某个按钮,更多按钮会从底部引出。具体效果请看视频。测试时,需将模拟器的语言区域设置成中国。该...

CAIYOUE
9分钟前
0
0
springboot项目打包docker镜像

第一步、项目打包 首先将你的项目打包成jar包 第二步、将jar包上传到服务器 第三步、Dockerfile Dockerfile.txt 内容 FROM openjdk:8-jdk-alpineADD dockertest.jar app.jarEXPOSE 8080...

嘴角轻扬30
11分钟前
1
0
ssh,scp带密码操作

ssh,scp带密码操作 1、远程执行,带密码参数 sshpass 安装命令: yum install sshpass 执行命令: sshpass -p "mima" ssh root@localhost --------参数小写p,密码mima 2、非22端口 ssh -p 9......

linjin200
16分钟前
0
0
三种百度网盘加速器,轻松突破10M/S,总有一款适合你!

这几天群里有同学一直抱怨百度网盘下载电影和学习资料太慢了,让我帮忙推荐几款可以提高速度的软件,其实市面上已经有不少软件在干这件事了,今天我就来详细介绍几个软件,注意:只有pc端,没...

lwaif
17分钟前
1
0
RDS MySQL 8.0 语句级并发控制

RDS MySQL 8.0 语句级并发控制 背景 为了应对突发的数据库请求流量,资源消耗过载的语句访问,SQL 访问模型的变化, 并保持 MySQL 实例持续稳定运行,AliSQL 版本设计了基于语句规则的并发控...

zhaowei121
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部