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

使用 MyEclipse 中的XFire 生成客户端后,调用出现的错误(Could not marshall type.)

阅读更多

使用 MyEclipse的XFire1.2.06 生成客户端后,对其进行测试时,出现错误:
      Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Could not marshall type.
     

问题原因:
      在相同一个源码包内使用 XFire 对同一台服务器上路径相似、命名空间相同两个 Web 服务生成 Web 服务客户端时,后生成的客户端程序会覆盖前一个客户端程序的 ObjectFactory.java,该 java 文件为 XFire 提供针对 Web 服务所使用的 Request 和 Response 对象的解释,当使用 MyEclipse 5.x 产生客户端时,ObjectFactory.java 只包含最近一次生成的客户端的 Request 和 Response 对象,而覆盖或舍弃了前一次生成的客户端的 Request 和 Response 对象,导致客户端运行时无法解释前一次生成的客户端的 Request 和 Response 对象,从而抛出 XFireFault: Could not marshall type 异常。

解决方案:
    每次生成一个 Web 服务客户端后,对负责 Request 和 Response 对象的 ObjectFactory.java 作一次备份,当使用 MyEclipse 5.x 生成同一个命名空间下的全部 Web 服务客户端之后,手工合并这些备份的 ObjectFactory.java 为最终版本的 ObjectFactory.java 。

 

建议升级到:
版本:XFire 1.2.6
IDE:MyEclipse 6.0

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics