免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1055 | 回复: 0
打印 上一主题 下一主题

Xfire中的小Bug [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-10 14:57 |只看该作者 |倒序浏览

                    这两天在研究Java的Web Service实现方式。其实大家用的比较多的是Apache发布的Axis组件,以及Axis2。这两种实现方式在国内用的比较多,在网上找了很多,不过大部分都是关于它们的资料。
    本来我也在用Axis组件,这个组件开发的确也挺简单的。它的实现大概有两种方式:jws方式和wsdd方式。
jws方式很简单,只要将Java文件改名为×.jws然后部署就可以访问了,不过这个有局限性,至于wsdd方式就能做得更好些,它是写部署文件来实现的,感觉用起来应该挺爽。不过可惜的是当我用第二种方式的时候老是找不到不能编译出wsdl文件。后来在网上找了一些资料,有的说是要什么注册什么的,不过感觉还是挺麻烦的。最后感觉不爽而放弃走Axis这条路。
    MyEclipse中有Xfire这个组件。后来又在网上找到一篇关于Xfire开发的文章。(在博客中已有转载:http://blog.chinaunix.net/u/10369/showart_197976.html)这篇文章也只是国人翻译过来的。
看完这篇文件后感觉用Xfire还是挺方便的。就决定试试手。不过在网上找了好久也没找到太多关于Xfire的中文资料,看样子大家都不用Xfire开发的。最后没办法,只好到官方网站走一糟。(官方网站有时打不开:昨天我访问的时候打不开,今天早上过来就可以用了)下了Document。
    对于Xfire的Web Service的开发在那篇文章里已经介绍了。不过对于客户端的调用就比较不爽了,介绍得不是太详细。最后在官文文档里找了好久,总算找到了出路。
    首先要安装Plugin,按照官方介绍的方法,这里不再描述。然后用WSDL2Java自动生成Java类(官方文档里有介绍)。最后就可以用了,不过这里Xfire自动生成的类有问题,生成的Client类不能new出来,这个应该是一个Bug,在官方的留言中找到了别人有同样的问题。
    不过这个Bug到现在官方还没有正式给出解决方案,不过我们可以手工来修改自动生成的类,以修正这个Bug所带来的问题。解决方法如下:
    生成的Client类中有一个方法是
        private void create0();
    在这个方法中有类似这样一句:
        service0 = asf.create((XXXXPortType.class), props);
    XXXXPortType是自动生成的一个接口,这里只要将XXXXPortType改成XXXXImpl就可以了。  
    XXXXImpl是自动生成的一个类,这个类实现了接口XXXXPortType。
这样修改后在你的客户端程序中就可以直接调用XXXXClient了,就像调用普通的类一样。
示例代码:
        XXXXClient xxxxClient = new XXXXClient();
        XXXXPortType test = xxxxClient.getXXXXHttpPort(serviceUrl);
        ……
后面就是一般的操作了。而且操作中完全隐藏了复杂数据结构的实现细节。
   
    以这种方式开发,感觉比较简单,感觉与微软的.Net方式开发有的一拼。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10369/showart_198453.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP