XFire开发Web Service 实例

开发步骤:
1.按照XFIRE的快速开发指南编写服务端程序

2.部署
注意:将META-INF\xfire\services.xml目录加文件放到WEB-INF\classes下以便找到

3.使用ANT生成客户端程序

4.拷贝客户端程序到调用程序中,拷贝JAR包,测试(jdom的版本要为1.0,否则会报错)。


目前已经有很多好的例子了,请参见:http://www.blogjava.net/mmwy/archive/2006/03/02/33142.html
以上文章在服务器端讲得很详细,几乎可以直接照着做了,客户端除了该文提供的方法Dynamic Client,还可以用ANT直接生成,做法参照:http://xfire.codehaus.org/Client+and+Server+Stub +Generation+from+WSDL

新建一个WsGen的目录,其下放client和lib,build.xml和WsGen放同一目录。
build.xml:
xml 代码
 
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < project   name = "XFire-WsGen"   basedir = "./WsGen"   default = "wsgen" >   
  3.     < path   id = "maven.compile.classpath" >   
  4.         < fileset   file = "${basedir}/lib/*.jar" />   
  5.     </ path >   
  6.     < target   name = "clean"   description = "Prepare for clean build" >   
  7.         < delete   dir = "${basedir}/client" />   
  8.         < mkdir   dir = "${basedir}/client" />   
  9.     </ target >   
  10.     < target   name = "wsgen"   depends = "clean" >   
  11.         < taskdef   name = "WsGenTask"   classname = "org.codehaus.xfire.gen.WsGenTask"   classpathref = "maven.compile.classpath" />   
  12.           
  13.         < WsGenTask   outputDirectory = "${basedir}/client"   wsdl = "http://localhost:8080/xfire-rules/services/RulesService?wsdl"   package = "com.passtech.webservice.client"   overwrite = "true" />   
  14.           
  15.           
  16.     </ target >   
  17. </ project >   

以上的wsdl="http://localhost:8080/xfire-rules/services/RulesService?wsdl" package="com.passtech.webservice.client"需要改写成你自己的WSDL地址以及客户端代码的包名。


执行命令:
F:\xfire-dev\xfire-client-generate>ant wsgen
Buildfile: build.xml

clean:
   [delete] Deleting directory F:\xfire-dev\xfire-client-generate\WsGen\client
    [mkdir] Created dir: F:\xfire-dev\xfire-client-generate\WsGen\client

wsgen:
[WsGenTask] 2007-6-27 9:57:49 org.codehaus.xfire.gen.Wsdl11Generator generate
[WsGenTask] 信息: Generating code for WSDL at http://localhost:8080/xfire-rules/
services/RulesService?wsdl with a base URI of http://localhost:8080/xfire-rules/
services/RulesService?wsdl
[WsGenTask] 2007-6-27 9:57:51 org.codehaus.xfire.gen.jsr181.AbstractServiceGener
ator generate
[WsGenTask] 信息: Creating class com.passtech.webservice.client.RulesServicePort
Type
[WsGenTask] 2007-6-27 9:57:51 org.codehaus.xfire.gen.jsr181.AbstractServiceGener
ator generate
[WsGenTask] 信息: Creating class com.passtech.webservice.client.RulesServiceImpl

[WsGenTask] com\passtech\rules\ArrayOfRules.java
[WsGenTask] com\passtech\rules\ObjectFactory.java
[WsGenTask] com\passtech\rules\Rules.java
[WsGenTask] com\passtech\rules\ShipParticulars.java
[WsGenTask] com\passtech\rules\package-info.java
[WsGenTask] com\passtech\webservice\client\RulesServiceClient.java
[WsGenTask] com\passtech\webservice\client\RulesServiceImpl.java
[WsGenTask] com\passtech\webservice\client\RulesServicePortType.java
[WsGenTask] locahost\_8080\rulesservice\FindRule.java
[WsGenTask] locahost\_8080\rulesservice\FindRuleResponse.java
[WsGenTask] locahost\_8080\rulesservice\ObjectFactory.java
[WsGenTask] locahost\_8080\rulesservice\package-info.java

BUILD SUCCESSFUL
Total time: 7 seconds


出现以上信息客户端生成成功,就可以到client目录下去拷贝指定的包了。

ObjectFactory objectFactory=new ObjectFactory(); 用objectFactory来构造请求对象(如果需要)
XXXXServiceClient client=new XXXXServiceClient();用client直接调用服务端的Service接口中的方法即可。


总结:
          好处:纯POJO的方式,可以很方便的生成WSDL以及客户端。开发比较快,效率高,性能也比较好(使用了STAX方式解析XML)。
          缺点:对于自定义的WSDL,需要符合标准的Schema的时候,功能比较欠缺。我在使用到枚举时,客户端并没有正确的生成。希望能在以后的版本中见到改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值