0 0

有关WebService自动生成代码的问题30

最近在做一个jaxws项目,服务端的java对象通过SOAP协议传输到客户端,其中对泛型的支持不太好。在服务器端我有如下一个类:
class JsonPackage<T>{
    private T content;

    @XmlJavaTypeAdapter(AttributeObjectAdapter.class)
    public T getContent() {
       return content;
    }
  
    public void setContent(T content) {
        this.content = content;
    }

}

因为content可能是任意类型,如果content是集合类型的话且不经过Adapter处理的话会报错,所以加了一个Adapter做转换,在对集合上封装了一层,这样content对应的只是一个普通的java类型,这样在服务端是没问题的。下面是Service的代码:
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class Service {
    @WebMethod
    public JsonPackage<LoginInfo> login(UserInfo checkUser){
        return null;
    }
}

问题来了,当我在服务端工作做完后(包括wsgen命令生成wsdl和发布到Server),用ant中的wsimport命令生成客户端代码,下面是wsimport代码:
<wsimport
		  	sourcedestdir="xxx"
			destdir="xxx"
			wsdl="xxx.wsdl"
			xendorsed="true" 
			>
			<arg value="-B-XautoNameResolution"/>
		</wsimport>

自动生成的类包括下面几个方面有关Service的几个类、ObjectFactory、输入参数和返回值的封装类,另外的就是返回值相关的Bean了。自动生成的JsonPackage和服务端对应的类区别很大,泛类型被擦除了变成了Object,这还不是最主要的,当程序跑起来后我拿到的content实例是一个com.sun.org.apache.xerces.internal.dom.ElementNSImpl类型,并不是我想要的LoginInfo类型。下面是自动生成的类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="jsonPackage", propOrder={"content"})
public class JsonPackage
{
  protected Object content;
  public Object getContent()
  {
    return this.content;
  }

  public void setContent(Object paramObject)
  {
    this.content = paramObject;
  }

如果我们修改客户端生成的代码使其和服务器端的一样,我相信应该会解决问题。但是怎么样才能使客户端的Bean和服务端的Bean一样呢,不止是有相同的属性和方法。
2012年11月21日 19:08

1个答案 按时间排序 按投票排序

0 0

我觉得生成object类型是正常的,毕竟会类型擦除。那么这个类ElementNSImpl,是一个xml的类,你想要的数据应该已经封装在这里了,因为content的类型时不确定,无法将xml转为实际的对象,所以才会返回这个ElementNSImpl。你可以用ElementNSImpl遍历子节点获取数据,
        ElementNSImpl data;
        NodeList nodeList = data.getChildNodes();
for (int i = 0; i < len; i++) {
Node node = nodeList.item(i);
Node subLevel1NodeList = node.getChildNodes();
}
或者 String num = data.getTextContent();
自己转换为具体类型的对象

2012年11月22日 11:06

相关推荐

    axis2支持webservice 自动生成代码客户端服务端代码插件

    标题提及的“axis2支持webservice 自动生成代码客户端服务端代码插件”,是指Apache Axis2为Eclipse IDE提供的一套工具,旨在简化Web服务的开发流程。这个插件允许开发者通过WSDL(Web Services Description ...

    webservice自动生成

    在本话题中,我们将深入探讨如何根据WSDL文件自动生成Web服务代码。 **WSDL(Web Services Description Language)**是XML格式的规范,用于定义Web服务的接口。它描述了服务的位置、提供的操作以及如何调用这些操作...

    xfire框架构建webservice应用(myecllipse自动代码生成 )

    2. **MyEclipse**:一个集成开发环境,支持自动生成代码和快速部署。 3. **XFire JAR包**:包括`xFire 1.2 Core Libraries`、`xFire 1.2 HTTP Client Libraries`和`xFire 1.2 JAXB2 Libraries`。 #### 三、步骤详解...

    webservice的接口代码生成工具

    接口代码生成工具是开发过程中提高效率的关键,它能够自动生成WebService接口的代码框架,帮助开发者快速构建服务。本文将深入探讨“webservice的接口代码生成工具”,以及如何根据公司业务需求对其进行改造。 首先...

    webservice接口代码生成工具

    在本场景中,我们讨论的是一个名为"webservice接口代码生成工具"的工具,该工具的主要功能是根据WSDL(Web Services Description Language)文件自动生成对应的Web Service客户端代码。WSDL文件是一种XML格式的文档...

    WebService接口生成工具

    这些工具根据WSDL文件自动生成对应编程语言的客户端代码。 6. **使用代理类**:生成的代理类使得客户端可以像调用本地方法一样调用Web服务,处理输入参数,封装请求,发送到服务端,然后解析返回的响应,将结果返回...

    webservice 客户端自动生成工具

    WebService客户端是调用这些服务的应用程序部分,而"WebService客户端自动生成工具"则是帮助开发者快速创建与WebService交互的代码的工具。在这种情况下,我们讨论的是一个使用Axis1.4批处理脚本来实现这个功能的...

    webservice接口自动生成工具

    总的来说,"WebService接口自动生成工具"是Web服务开发中的重要辅助工具,它利用WSDL文件自动生成服务端和客户端代码,使得开发者可以更专注于业务逻辑的实现,而非基础架构的搭建。通过熟练掌握这类工具,可以提升...

    WebService代码生成插件

    开发者只需要提供服务的WSDL地址,这个工具就能自动生成相应的Stub和Skeleton类,这些类可以帮助开发者轻松地进行服务调用和实现。 使用这些插件的好处在于,它们极大地减少了手动编写Web服务代码的时间和复杂性。...

    Eclipse根据wsdl文件自动生成webservice client图解

    本文将详细讲解如何在Eclipse环境中,根据WSDL文件自动生成WebService客户端,并提供调用示例。 首先,我们需要理解WSDL文件的结构。WSDL文件包含了服务的端点(或地址)、操作(或服务方法)、输入和输出消息的...

    Axis 自动生成WebService

    标题 "Axis 自动生成WebService" 涉及到的是在IT行业中创建和使用Web服务的一个关键工具——Axis。Web服务是一种基于互联网的软件应用,允许不同系统之间的数据交换,通常使用XML作为数据格式,SOAP协议进行通信。...

    webService工具生成的客户端

    3. **服务端不匹配问题**:描述中提到的“工具自动生成的客户端,和服务端不匹配”,这可能是因为服务端接口发生了变化,没有及时更新WSDL,或者服务端使用了非标准的协议或数据格式。在这种情况下,开发者需要手动...

    axis自动生成访问webservice代码

    本篇文章将详细探讨如何使用Axis自动生成访问Web服务的代码,以及相关的Java和Web服务知识。 一、Web服务简介 Web服务是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的应用程序,可以在不同系统之间交换数据。它们...

    jdk自动生成webservice

    - 创建WSDL:JAX-WS会自动生成WSDL文件,描述服务的接口、操作、绑定等信息。 - 部署服务:将服务打包成一个WAR文件,并部署到应用服务器,如Tomcat或JBoss。 **3. JAX-WS注解** JAX-WS中的主要注解有: - `@...

    WebService代理类生成工具

    它能够自动生成与给定WebService接口对应的客户端代理类,使得调用远程服务如同调用本地方法一样方便。理解这个工具的关键在于了解WebService、ASMX以及代理类在.NET框架中的作用。 首先,WebService是一种基于HTTP...

    使用wsimport命令生成webService客户端代码实例(查询手机号码)(源码Demo)

    `wsimport`是Java SDK中的一个工具,它可以从WSDL(Web Services Description Language)文件自动生成与服务交互所需的Java客户端代码。WSDL文件是一种XML格式,描述了Web服务的接口、消息格式和调用方式。以下是...

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

    此外,项目中会自动生成配置文件如`sun-jaxws.xml`和`web.xml`,用于配置WebService服务。 4. **部署服务**:将项目发布到MyEclipse自带的Tomcat或其他Servlet容器中,并启动服务器。可以通过浏览器访问WSDL文件的...

    webservice客户端生成工具

    这些工具可以读取WSDL文件并自动生成对应的客户端代理类,这些类可以直接调用服务的方法,如同调用本地方法一样。 5. **Apache Axis** Axis是Apache软件基金会的一个开源项目,提供了一套完整的Web服务工具,包括 ...

    自动生成代码项目,工具源码

    本项目"自动生成代码项目,工具源码"是专为此目的设计的,它包含了用于生成实体类、DAL(数据访问层)类、BUS(业务逻辑层)类以及WebService接口的源码。以下是这个工具的主要知识点和功能的详细说明: 1. **实体...

    webService通过axis编辑wsdl文件生成代码

    webService通过axis编辑wsdl文件生成代码

Global site tag (gtag.js) - Google Analytics