`
terry_yip
  • 浏览: 38775 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于XFire来做Web Service, 传入Service接口方法中的Collection类的值丢失的问题

阅读更多
我用XFire来建Web Serive, 能成功看到wsdl, 而且,能得到Web Service对象,

类型为PersistSerive, 实现 IPersistService接口, 其中有一个接口方法为:  public void initPros(Map webDataMap);

在与IPersistService同一个包下,定义了IPersistService.aegis.xml文件

<?xml version="1.0" encoding="UTF-8"?>   
<mappings>   
  <mapping >   
    
    <method name="initPros">
       <parameter index="1" componentType="java.util.Map"/>  
    </method>
    
  </mapping >    
</mappings>   



当我得到Service端的实现IPersistService接口的PersistService对象后, 就把一个client端的Map对象传入PersistService的initPros方法里面, 奇怪的是,这个Map各个key对应的对象,在传入
PersistService里面的initPros方法体后,就全为null了, 但根据打印出来的信息,这个Map在传入initPros之前, 是有值的.
我在debug模式下, 看到这个PersistService对象其实是被代理的, 现在我的问题应该怎么解决呢? 谢谢.
分享到:
评论
13 楼 terry_yip 2007-03-26  
dovecat 写道
...你是java ws call java ws还是java ws与.net交互啊?


是java ws call java ws

12 楼 terry_yip 2007-03-26  
http://jira.codehaus.org/browse/XFIRE-161

据这个URL所述,有可能这是XFire的一个BUG.在上面只是写在XFire1.0中才有这个问题, 我用的是1.2.4版本

我刚才试过如果往一个List里面加入字符串,是能正确打印出来的,但Map就不行, 把Map对象加入List里面也不行.

或许也和JDK版本有关,我用的是JDK1.4, aegis文件定义的参数及返回类型, XFire应该是基于泛型来读取的.
11 楼 terry_yip 2007-03-26  
jianfeng008cn 写道
不会是你本地lazyload了,快照时已load,发送时未load吧?


我在上面的那个工程中,没有用到hibernate
10 楼 dovecat 2007-03-26  
...你是java ws call java ws还是java ws与.net交互啊?
9 楼 jianfeng008cn 2007-03-25  
不会是你本地lazyload了,快照时已load,发送时未load吧?
8 楼 terry_yip 2007-03-25  
http://www.plastics-daily.com/lib.rar , 这是所需的jar包,解压后,加到WEB-INF/classes下面,并加入eclipse的build-path中就可以了。

7 楼 terry_yip 2007-03-25  
在只有做了一个最简化的工程,并打包上来,请大家帮我调试一下
6 楼 terry_yip 2007-03-25  
搞了三天,还没有解决。
5 楼 terry_yip 2007-03-21  
dovecat 写道
aegis中Map在网络传输的过程中会被序列化为entry对象(在xml文件中),entry对象又包含key对象和value对象(都在xml文件中有定义).
你在客户端传输的map,到server端,会被反序列化为map(重新生成了),当然hashcode不一样(entry,key,value什么的也同样反序列最后组成Map).


谢谢, 但我还是不明白, 为何Map对象从客户端传到server端后, 里面的value全为null, 用过xfire的朋友请帮忙一下, 或者提示一下能从什么地方跟踪entry对象的内容.

4 楼 dovecat 2007-03-21  
terry_yip 写道
谢谢以上的回复, 现在我的问题的核心是, 为什么,我的这个webDataMap对象, 在传入PersistService的接口方法initPros(Map webDataMap)之前, 打印出来的hashCode为-1669610917, 但在接口方法中, webDataWeb的hashCode变为0了,证明在方法中的对象,都不是原先传入的那个,  这个PersistSerivce对象是用Xfire建立的的web service来的.
...aegis中Map在网络传输的过程中会被序列化为entry对象(在xml文件中),entry对象又包含key对象和value对象(都在xml文件中有定义).
你在客户端传输的map,到server端,会被反序列化为map(重新生成了),当然hashcode不一样(entry,key,value什么的也同样反序列最后组成Map).
3 楼 terry_yip 2007-03-21  
谢谢以上的回复, 现在我的问题的核心是, 为什么,我的这个webDataMap对象, 在传入PersistService的接口方法initPros(Map webDataMap)之前, 打印出来的hashCode为-1669610917, 但在接口方法中, webDataWeb的hashCode变为0了,证明在方法中的对象,都不是原先传入的那个,  这个PersistSerivce对象是用Xfire建立的的web service来的.
2 楼 ecsoftcn 2007-03-21  
如果你用的是JDK5.0以上版本,建议用泛型来解决这个问题,如:
public void initPros(Map<String,PersonVO> webDataMap); 
1 楼 dovecat 2007-03-21  
terry_yip 写道
我用XFire来建Web Serive, 能成功看到wsdl, 而且,能得到Web Service对象,

类型为PersistSerive, 实现 IPersistService接口, 其中有一个接口方法为:  public void initPros(Map webDataMap);

在与IPersistService同一个包下,定义了IPersistService.aegis.xml文件

<?xml version="1.0" encoding="UTF-8"?>   
<mappings>   
  <mapping >   
    
    <method name="initPros">
       <parameter index="1" componentType="java.util.Map"/>  
    </method>
    
  </mapping >    
</mappings>   



当我得到IPersistService的Service对象后, 就把一个Map对象传入initPros方法里面, 奇怪的是,这个Map各个key对应的对象,在传入
PersistService里面的initPros方法体后,就全为null了, 但根据打印出来的信息,这个Map在传入initPros之前, 是有值的.
我在debug模式下, 看到这个PersistService对象其实是被代理的, 现在我的问题应该怎么解决呢? 谢谢.
你可以看看xfire的demo例如在book的demo中必须将map中的key类型和
value类型也隐射出来:
<method name="getBooksMap">
    <parameter index="0" keyType="java.lang.String" componentType="org.codehaus.xfire.aegis.type.basic.SimpleBean"/>
    <return-type mappedName="BookMap" keyType="java.lang.String" 
                 componentType="org.codehaus.xfire.demo.Book" />
</method>

相关推荐

    xfire开发Web Service接口详解

    本篇文章将深入探讨如何使用XFire来开发Web Service接口,并提供一个初学者友好的教程。 一、XFire简介 XFire(后被集成到Apache CXF项目)是一款轻量级的Java Web服务框架,它提供了快速、简单的方式来创建符合WS-...

    XFire 1.2.6调用Web Service的几种方法

    XFire 1.2.6 调用 Web Service 的几种方法 XFire 1.2.6 是一个流行的开源 Web 服务框架,提供了多种调用 Web 服务的方法。了解这些方法对于开发高效、可靠的 Web 服务客户端非常重要。本文将详细介绍 XFire 1.2.6 ...

    使用XFire+Spring构建Web Service

    【使用XFire+Spring构建Web Service】是一种高效且灵活的方法,尤其适合于那些希望利用Spring框架的优秀特性来开发Web Service应用的开发者。XFire是一个先进的Web Service框架,与Axis2并列为新一代的选择,因其...

    xfire实现的web service应用

    xfire实现的web service应用,空项目,导入即可

    xfire实现Web Service

    值得注意的是,XFire还提供了注解支持,可以通过在服务接口和实现类上添加特定的注解来简化配置过程。 在实际开发中,可能还需要处理安全性、事务管理、异常处理等问题。XFire提供了与Spring框架的集成,可以方便地...

    8 XFire Web Service 入门.doc

    最后,通过运行客户端代码,调用Web服务的方法,并传入必要的参数,来测试服务是否正常工作。如果一切顺利,服务将返回预期的结果。 总之,XFire Web Service在MyEclipse 6中的应用为Java开发者提供了一个强大的...

    xfire web service调用代码

    3. 调用服务方法:通过代理类的对象调用Web服务的方法,传入参数并获取返回值。 4. 处理结果:服务调用完成后,解析返回的SOAP响应,提取所需的数据。 四、示例代码 以下是一个简单的XFire Web服务调用代码示例: ...

    XFire Java Web Service 客户端

    开发者只需要定义一个与服务接口匹配的Java接口,XFire会自动生成代理类,使得开发者可以像调用本地方法一样调用远程Web服务。这种方式降低了Web服务调用的复杂性,提高了开发效率。 2. **绑定配置(Binding ...

    xfire开发web service文档.rar

    这个文档集很可能是关于如何使用XFire来创建和实现Web服务的详细教程。 XFire,全称为XML Fire,是Apache CXF的前身,它提供了一种简单的方式来创建和使用SOAP(Simple Object Access Protocol)服务。SOAP是一种...

    xFire发布Web Service,并调用远程服务

    在描述中提到的`main`函数中,你可以实例化这个代理类并调用其方法来发起服务请求。 - 发送请求时,你需要传递任何必要的参数,并处理返回的结果。xFire会自动处理SOAP消息的封装和解封装,使这个过程对开发者来说...

    xfire ibatis spring web service

    标题中的“xfire”是指Apache XFire,一个早期的开源SOAP Web服务框架,它使得Java开发者能够方便地创建和消费Web服务。XFire是基于Java的,它利用了Spring框架来提供依赖注入,使得集成更加简便。Ibatis,另一方面...

    xfire开发Web Service接口第一个程序源代码

    在这个“xfire开发Web Service接口第一个程序源代码”的资源中,我们将探讨如何利用Xfire来开发一个简单的Web服务。 首先,理解Web服务的基本概念是至关重要的。Web服务通常基于SOAP(Simple Object Access ...

    web service xfire 开发包及api

    Xfire Web Service是Xfire提供的一种API,允许开发者集成Xfire的功能到自己的应用或网站中。 Xfire-1.2.6开发包包含了与Xfire Web Service交互所需的所有组件,这包括但不限于SDK文档、示例代码、库文件以及可能的...

    XFire Web Service的开发

    总的来说,XFire Web Service的开发涉及Eclipse环境配置、项目创建、接口定义、服务配置、依赖管理以及Web应用配置等多个环节。通过这些步骤,开发者可以在Eclipse中创建并部署功能完备的Web服务。在实际操作中,...

    MyEclipse+xFire开发Web Service

    【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...

    整理xfire和spring的集成 web service 面向服务编程 java

    【整合XFire与Spring进行Web Service开发】 XFire是一个基于Java的SOAP Web Service框架,而Spring是一个广泛应用的轻量级框架,它提供了依赖注入、面向切面编程等特性。将两者集成可以方便地构建和消费Web Service...

    Web Service框架xfire与spring集成开发流程

    Web Service框架XFire是新一代的解决方案,旨在简化Web Service应用的开发,与Axis 2一同成为业界关注的焦点。XFire以其简洁的API设计,全面支持Web Service的各种标准协议,如SOAP、WSDL和WS-Security等,极大地...

Global site tag (gtag.js) - Google Analytics