开发步骤:
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 代码
- <?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
- <
project
name
=
"XFire-WsGen"
basedir
=
"./WsGen"
default
=
"wsgen"
>
- <
path
id
=
"maven.compile.classpath"
>
- <
fileset
file
=
"${basedir}/lib/*.jar"
/>
- </
path
>
- <
target
name
=
"clean"
description
=
"Prepare for clean build"
>
- <
delete
dir
=
"${basedir}/client"
/>
- <
mkdir
dir
=
"${basedir}/client"
/>
- </
target
>
- <
target
name
=
"wsgen"
depends
=
"clean"
>
- <
taskdef
name
=
"WsGenTask"
classname
=
"org.codehaus.xfire.gen.WsGenTask"
classpathref
=
"maven.compile.classpath"
/>
-
- <
WsGenTask
outputDirectory
=
"${basedir}/client"
wsdl
=
"http://localhost:8080/xfire-rules/services/RulesService?wsdl"
package
=
"com.passtech.webservice.client"
overwrite
=
"true"
/>
-
-
- </
target
>
- </
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的时候,功能比较欠缺。我在使用到枚举时,客户端并没有正确的生成。希望能在以后的版本中见到改进。
分享到:
相关推荐
XFire 实现web service入门实例源码 .....
这是我自己经过琢磨在工作中使用了一段时间Web Service后,自己学习Xfire的Web Service后编写的,随后发现Web Service其实就是这样简单。包中油服务器端代码,也有客户端代码,也有一个使用说明。要是你也想学习接触...
初学xfire webservice使用
applicationContext.xml 一直是放置在WEB-INF目录下的就可以了,原文档后期补充的那点对这个文件的描述好像有些乱 另外,IHello等类的包随便默认哪个都行,文中该类的位置前面是factory后面就改到service中去了
好像没有多少人讨论, 大多数的话题都是围绕xfire, cxf, axis/axis2等主流的Web Service框架.尽管是从事这方面的工作, 不过实际开发中还是公司内部开发的一个Web Service模块, 发现与Spring提供的这个模块的构架很像...
XFire的Web Service可运行实例,可直接加入项目运行
我整理了一下使用XFire1.2.6进行Web Service开发的思路,尝试完成了一个入门实例(完整的MyEclipse项目)。如果你正在学习Web Service或者对这个有兴趣,你可以下载该附件,导入MyEclipse中运行以查看示例效果。希望...
是关于web service 的基本教程
MyEclipse 基于X-File 的Web service及调用实例详解
本人用MyEclipse写的一个简单的实例,Test为service,TestClient为客户端
从网上看到xfire的例子不少,大多都是只返回一个...这些包通过点击项目右键build-path->add libraries->myeclipse libraries->相应的包即可.client的jar包需要你建立一个jax-ws的web service client能获得这这些包.。
为了支持最新的基于XML的 Web Service的标准,针对XML应用的Java API使得以最小手工转换数据代价实现的 Web Service的构造变得简便易行,本部分通过详细解析xFire组件的原理与使用从而简化Java WebService的实现过程...
它描述了webservice中一些方法访问的契约(规范),谁都遵守该规范,即它描述了web service中能被访问方法的名,参数,参数的类型和返回值等等规定,其它平台上的程序必须按照wsdl中的规范来访问
两种webService傻瓜式教程+代码+实例 Axis2_webservice.rar Xfire1.2_webservice.rar
3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...
3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext 3.11. 基于注解(Annotation-based)的配置 3.11.1. @Autowired ...