`
huchangan2005
  • 浏览: 78283 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

根据wsdl生成java代码及报错Two classes have the same XML type name解决--转载

阅读更多

        在调用外围系统的webservice服务时候,一般来说对方会提供一个wsdl,然后我们要根据wsdl生成相应的类,通过这种方式,做到了跨语言的完美方案,但是也带来了一些复杂性。在java中我们一般使用jdk自带的wsimport工具或者其他三方系统的wsdl4j工具生成java版本的stub实现。

        

  •    使用jdk里面自带的wsimport工具,具体使用办法如下:

        在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。

  在命令提示符中使用如下命令:

       wsimport http://localhost:8080/Demo/services/MyService?wsdl

 

  命令参数说明:
  -d:生成客户端执行类的class文件的存放目录
  -s:生成客户端执行类的源文件的存放目录
  -p:定义生成类的包名
  使用wsimport命令后,可以得到代码,然后可以将代码拷贝到工程里面,也可以将其编译,打包成jar。
      比如 javac com/xxx/*.java com/xxx/yyy/*.java
              jar cvf dest.jar com/
              这样我们就能得到一个dest.jar文件
        使用一下webservice的框架自带的一下wsdl4j生成,由于众所周知的原因,java的webservice的jar很多,经常由于版本和实现的不同,会出现一下莫名奇妙的问题,所以这个地方还是推荐使用你所使用的框架的wsdl4j工具生成相应的stub。
 
  •   使用第三方ws框架,以cxf为例:

       使用一下webservice的框架自带的一下wsdl4j生成,由于众所周知的原因,java的webservice的框架很多,经常由于版本和实现的不同,会出现一下莫名奇妙的问题,所以这个地方还是推荐使用你所使用的框架的wsdl4j工具生成相应的stub

 

  1.  下载apache-cxf-2.5.11.zip并解压到D:\apache-cxf-2.5.11,下载地址:http://mirror.bjtu.edu.cn/apache/cxf/2.5.11/apache-cxf-2.5.11.tar.gz 
  2. 在D:\apache-cxf-2.5.11\bin目录下面执行命令:wsdl2java  http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl     
  3. 命令执行完成后在相关文件夹中会生成相应的代码,将代码全部引入接入系统,与wsimport是相同的

   使用过程中遇到的问题:

  •     在使用的过程中发现一个问题,由于jdk6最高只支持ws2.1规范版本,所以在jdk6下面生成的时候,要加上-frontend jaxws21

        wsdl2java -frontend jaxws21  http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl    

 

  • 发现可以根据wsdl生成java类,java类中的注释有可能是中文,所以要加上encoding参数,例如:-encoding utf-8  

       wsdl2java -ecoding utf-8  http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl  

 

 

经过一番查询,觉得是服务端在生成WSDL时,将相应类的命名空间都默认为同一个了,因此网上才有了修改命名空间的建议;即在相应类(即客户端调用的java实体类)中加入@XmlType
(namespace=”http://namespace.thats.not.the.same.as.the.generated”),即改变响应类的命名空间。

Java代码   收藏代码
  1. @XmlAccessorType(XmlAccessType.FIELD)   
  2. @XmlType(name = "createCCMapping", propOrder = {   
  3. "channelCode",   
  4. "channelType",   
  5. "crmCode",   
  6. "doneType"  
  7. },namespace="http://namespace.thats.not.the.same.as.the.generated")   
  8. public class CreateCCMapping {   
  9. }  

  

    另外,还有一种修改相应类的名称,若如此修改,可能会影响服务端调用,建议修改命名空间。

 

原文:http://asialee.iteye.com/blog/1912953

           http://damon-zhang.iteye.com/blog/1816857

分享到:
评论

相关推荐

    wsdl生成java客户端报错问题解决方法

    解决使用wsdl生成java客户端报错:java.lang.reflect.invocationtargetexception的方法之一

    wsdl生成java代码工具

    本篇文章将详细探讨“wsdl生成java代码工具”的相关知识点,以及如何使用这个工具。 1. **WSDL简介**: WSDL文件描述了Web服务的接口,包括服务提供的操作、输入和输出消息的格式,以及服务的位置。它使得开发者...

    axis2根据wsdl生成java客户端代码

    axis2根据wsdl生成java客户端代码 D:\Software\axis2-1.6.2\bin>wsdl2java.bat -uri http://10.33.30.216:9099/facs/services/ResourceSynchroWebService?wsdl -o E:\wsdloutput -p com.util wsdl2java.bat -uri ...

    xfire根据WSDL生成客户端代码

    使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...

    WebService的WSDL文件生成Java代码工具

    在本话题中,我们将深入探讨如何利用WSDL文件生成Java代码,以便于开发和调用WebService。 WSDL文件是WebService的核心,它定义了服务的接口、消息格式、操作和地址等信息。WSDL是XML格式的,可以被工具解析并生成...

    把wsdl文件或地址转化成java代码工具

    【标题】:“把wsdl文件或地址...MyEclipse和Apache CXF的wsdl2java工具都是常用的解决方案,它们通过解析WSDL文件,自动生成与服务接口对应的Java类,使得开发者可以专注于业务逻辑的实现,而不用关心底层通信的细节。

    WSDL2Java--根据wsdl生成Java客户端工具

    2. **生成Java类**:解析完成后,工具会根据WSDL中的定义生成一系列的Java类。这些类通常包括服务接口、消息实体、协议绑定类等,它们构成了与Web服务交互的基础。 3. **构建SOAP请求**:通过生成的Java类,开发者...

    根据wsdl生成webservice服务端(3种方式)

    3. **实现服务**:根据生成的接口实现具体的业务逻辑,例如实现`IHelloWorldImpl.java`中的方法。之后可通过各种方式部署服务,比如使用Spring框架或者直接嵌入到Servlet容器中。 #### 方法二:使用SOAPUI工具生成 ...

    onvif wsdl转成java代码

    【标题】"onvif wsdl转成java代码"涉及的主要知识点是ONVIF协议、Web服务描述语言(WSDL)以及Java编程在服务端开发中的应用。 ONVIF(Open Network Video Interface Forum,开放网络视频接口论坛)是一种全球性的...

    Eclipse中用wsdl生成java客户端

    Eclipse中用wsdl生成java客户端 Eclipse是一款功能强大、功能丰富的集成开发环境(IDE),广泛应用于Java开发领域。随着WebService技术的普及,Eclipse也提供了相应的支持,允许开发者通过wsdl文件生成Java客户端...

    wsdl生成java客户端报错

    java.lang.reflect.invocationtargetexception问题的解决方法之一

    Axis 把WSDL生成JAVA类

    通过这一过程,可以自动生成与WSDL描述相符的Java代码,包括客户端存根(Stub)和服务器端骨架(Skeleton)。这不仅简化了开发流程,还确保了与WSDL定义的兼容性,提高了开发效率。 #### 转换流程与示例: 1. **...

    wsdl文件生成java webservice 工具(附带生成后调用方法)

    本文将详细介绍如何使用Axis工具根据WSDL文件生成Java Web服务,并提供生成后的调用方法。 首先,我们需要理解WSDL文件。WSDL是一种XML格式的规范,用于描述Web服务的接口,包括服务提供的操作、消息结构、地址以及...

    关于wsdl生成java的方式

    4. **生成的Java代码**:工具会根据WSDL生成一系列Java类,包括服务接口(Service Interface)、端点接口(Endpoint Interface)、消息类(Message Classes)以及服务实现类(Service Implementation),有时还包括...

    axis2根据wsdl生成客户端代码

    在 Axis2 中,我们可以使用`org.apache.axis.wsdl.WSDL2Java`工具,根据WSDL文件自动生成与服务交互所需的Java客户端代码,这极大地简化了开发者的工作,无需手动编写复杂的SOAP消息构造代码。 首先,你需要确保...

    wsdl2java命令使用

    `wsdl2java`是Axis提供的命令行工具,它能够根据WSDL文件自动生成Java客户端和服务器端的代码。使用步骤如下: 1. **安装Apache Axis**:首先,你需要下载并安装Apache Axis,通常包括jar文件和相关脚本。 2. **...

    使MyEclipse调用Axis的wsdl2java 通过wsdl生成客户端

    MyEclipse会根据WSDL内容自动生成相应的Java客户端代码,包括服务代理类和服务接口。 5. 编译和运行客户端:生成的代码通常位于`src`目录下的一个新包内。现在可以编写客户端程序来调用Web服务。例如,你可以找到...

    使用cxf wsdl2java生成webservice客户端

    使用cxf wsdl2java生成webservice客户端命令

    根据wsdl文件生成webservice客户端工具(java)

    根据对方提供的webservice地址,你先将对方webservice的wsdl文件描述文件保存到本地为后缀名为.wsdl的文件,然后保存到Tools的这个文件夹下,编辑WSDL2AxisClient.bat这个文件,将%Java_Cmd% org.apache.axis.wsdl....

    wsdl2java 生成wsdljava客户端所需要的包

    4. **生成的代码结构**:`wsdl2java`会生成一系列的Java类,包括服务接口(对应WSDL中的portType)、服务代理实现(对应binding)、数据类型(对应schema中的元素和复杂类型)。此外,还会包含必要的配置文件和依赖...

Global site tag (gtag.js) - Google Analytics