`
waterdh
  • 浏览: 95918 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Xfire从WSDL生成客户端

    博客分类:
  • Java
阅读更多


从WSDL生成客户端和服务端

原文地址:

http://xfire.codehaus.org/Client+and+Server+Stub+Generation+from+WSDL

这片导航将一步一步地引导你为一个服务创建客户端.这个过程还同样适用于创建服务端.
完整的Example可以在distribution版本的"examples/geoip-client"文件夹中找到

限制

生成中有几个限制点需要注意

需要java 5.0环境,因为其使用了JSR 181 规范

不支持RPC/Encoding


生成客户端/服务端
Ant Task

我们将要使用的这个webservice获取一个ip地址,返回给我们一个国家的名称。生成客户端十分简单,这里有个build file的例子用于运行Xfire中的wsgen task。

xml 代码
  1. < taskdef   name = "wsgen"   classname = "org.codehaus.xfire.gen.WsGenTask"     
  2.       classpathref = "maven.compile.classpath" />   
  3.   
  4. < wsgen   outputDirectory = "${basedir}/target/generated-source"   
  5.    wsdl = "${basedir}/src/wsdl/geoip.wsdl"   package = "net.webservicex.geoip.jaxb"   overwrite = "true" />   


配置

命令行:
你还可以从命令行来运行WsGen(如果需要绑定jaxb,xmlbeans,你需要相关的jar文件),使用如下的脚本:

script 代码
  1. gpath=xfire- all -1.2-SNAPSHOT.jar:ant-1.6.5.jar:jaxb-api-2.0EA3.jar:stax-api-1.0.1.jar:jdom-1.0.jar:jaxb-impl-2.0EA3.jar\   
  2. :jaxb-xjc-2.0-ea3.jar:wstx-asl-2.9.3.jar:commons-logging-1.0.4.jar:activation-1.1.jar:wsdl4j-1.5.2.jar:XmlSchema-1.0.3.jar:xfire-jsr181-api-1.0-M1.jar;   
  3.   
  4. java -cp $gpath org.codehaus.xfire.gen.WsGen -wsdl http://localhost:8080/xfire/services/Bookservice?wsdl -o . -p pl.tomeks.client -overwrite  true   


你可以指定下面的参数:
-wsdl        : wsdl file的路径,可以是有效的URL地址 ( can be any valid url )
                 
-o             : 生成类的输出文件夹

-package   : 客户端代码存放的包

-binding    : 绑定使用( jaxb 或者 xmlbeans )

-overwrite: 允许覆盖已有的生成类文件(没有这个选项,则不会覆盖)


使用客户端

现在使用该客户端相当简单

java 代码
  1. package  net.webservicex.geoip;   
  2.   
  3. import  net.webservicex.GetGeoIP;   
  4. import  net.webservicex.geoip.jaxb.GeoIPServiceClient;   
  5. import  net.webservicex.geoip.jaxb.GeoIPServiceSoap;   
  6. import  junit.framework.TestCase;   
  7.   
  8. public   class  GeoIPClientTest  extends  TestCase   
  9. {   
  10.      public   void  testClient()  throws  Exception   
  11.     {   
  12.         GeoIPServiceClient service =  new  GeoIPServiceClient();   
  13.         GeoIPServiceSoap geoIPClient = service.getGeoIPServiceSoap();   
  14.            
  15.         System.out.println( "The country is: "  +    
  16.                            geoIPClient.getGeoIP( "216.73.126.120" ).getCountryName());   
  17.     }   
  18. }   
  19.   
  20.     
  21.   



你会发现 GeoIPImpl class也被生成了,如果你正在使用客户端,你不能删除它,因为它含有用来生成客户端的注释。Impl class 和wsdl中的<binding></binding>相符,它包含soap绑定信息。
使用如下的代码,你可以为客户端增加新的handlers 或者设置属性

java 代码
  1. Client client = Client.getInstance(geoIPClient);   
  2. client.setProperty(Channel.USERNAME,  "test" );   
  3. client.setProperty(Channel.PASSWORD,  "test" );   
  4. client.addInHandler( new  DOMOutHandler());   

XMLBeans 客户端/服务 生成
你可以使用XMLBeans 作为绑定来替代JAXB2.0.
简单地在task中设置绑定参数

xml 代码
  1. < wsgen   outputDirectory = "target/services"   
  2.    wsdl = "${basedir}/src/wsdl/echoW.wsdl"   
  3.    package = "com.acme.echo"   
  4.    binding = "xmlbeans"    overwrite = "true"    />   


请注意,你需要先生成该wsdl的XMLBeans ,然后把它的jar包放到wsgen-task的classpath下面。
如果你忘记了这步,你会看到
NullPointerException.


分享到:
评论
2 楼 waterdh 2010-08-04  
谁这么无聊弄我的博客
1 楼 kaowww153 2010-08-02  
这页面也太牛了吧

相关推荐

    xfire根据WSDL生成客户端代码

    xfire根据WSDL生成客户端代码.rar

    WebService经典24篇网文汇总,包含axis2_Xfire搭建_WSDL详解_自动生成客户端和WSDL等.rar

    WebService经典24篇网文汇总,包含axis2_Xfire搭建_WSDL详解_自动生成客户端和WSDL等,自己找了好久的内容; 都是自己学习过程中网络的知识,找了很久,里边有一些自己的标记,如果发现chm内容是空白,注意看一下,其实是...

    xfire-all-1.2.6.jar

    xfire 是一个webservice框架,可以使用它搭建webservice服务,也可以使用它生成客户端代码。

    xfire发布webservice实例

    用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl

    Xfire整合webservice jar包

    activation.jar commons-logging.jar jdom-1.0.jar spring.jar spring-mock.jar stax-api-1.0.1.jar stax-utils-snapshot-20040917.jar ...服务器端、客户端代码辅助生成; 对Spring、Pico、Plexus等项目的支持等。

    webServer.rar

    CXF教程.doc Eclipse中用wsdl生成java客户端.docx java 利用Xfire 来生成Webservice 的WSDL文件 - 爱琴海 - ITeye技术网站.htm XFire部署开发webservice.docx XFire建立Webservice实例.doc XFire开发WebService详解....

    WebService Axis和XFire(CXF)的开发流程

    WebService当服务端两种生成wsdl协议方式,Axis和XFire(CXF)前者搞过WebService的人应该都知道扩展性比较好但是不支持Spring,后者基本逻辑全都封装在了底层API中,模式比较固定,开发比Axis简单,但是没有Axis灵活。...

    利用xfile构建webservice(服务端以及客户端)

    1、使用WSDL2Java 工具根据WSDL 生成客户端代码.................................................. 28 2、新建工程项目..........................................................................................

    apache-cxf-3.2.8.zip

    集成soapUI快速生成客户端,CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要...

    XFireXFire

    支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor; ...  支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-... 服务器端、客户端代码辅助生成;  对Spring、Pico、Plexus等项目的支持等。

Global site tag (gtag.js) - Google Analytics