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

XMLBeans 客户端生成

    博客分类:
  • Java
阅读更多

   最近在学习XFire,调用.net发布的webservice,生成客户端代理的过程中出现了一些NollPointerException,问题很可能出现在wsdl文档中。查找了一些资料作全面检查,作了简单的翻译,不足之处请谅解。


Web service客户端可以从一个WSDL文件用Ant task来创建。创建一个客户端服务需要2步。

首先,你需要使用XMLBeans来根据WSDL文档生成types,然后使用XFire自带的生成器来创建客户端代码。

不幸的是,这个流程并不适合RPC/Encoded service,

不管怎样,rpc/encoded文档仍然可以由之前片断的重要方法中手动构造。


创建XMLBeans

这时,你可以发现看XMLBeans的文档很有用,这里提供一个怎样生成XMLBeans的快速总结。

 生成XMLBeans 仅仅需要在你的Ant build文件或者你的Maven文件中添加几行代码.
<java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"></java>  <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"></java>              <arg value="$\{destination.class.directory\}"></arg>
<arg value="$\{basedir\}/src/test-schemas"></arg>    

xml 代码

 

  1. <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"  
  2.           classpathref="task.path"  
  3.           fork="true">  
  4.       <arg value="-d"/>  
  5.       <arg value="$\{destination.class.directory\}"/>  
  6.       <arg value="$\{basedir\}/src/test-schemas"/>  
  7.     java>  


      <arg value="-d"></arg>
    这将把XMLBeans 类输出到文件夹"${destination.class.directory}".它将访问"${basedir}/src/test-schemas"文件夹来查找所有的WSDL以及XSD文件,用来生成types.你还需要设置一个路径用来指示XMLBeans需要的jar文档,在这里,它是"task.path".

 

它还可以为XMLBeans类打包生成一个jar挡,像这样

<java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"></java>      <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"></java>          

xml 代码
  1.   
  2. <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"  
  3.           classpathref="task.path"  
  4.           fork="true">  
  5.       <arg value="-out"/>  
  6.       <arg value="$\{output.dir\}/output.jar"/>  
  7.       <arg value="$\{basedir\}/src/test-schemas"/>  
  8.     java>  

      <arg value="$\{basedir\}/src/test-schemas"></arg>
   

替换"${output.dir}/output.jar"成你想要的结果jar文档路径

生成客户端

接下来,我们需要添加一段代码在build文件中。这步将会生成客户端代码。

xml 代码
  1. <path id="generate.path">  
  2.       <pathelement path="..."/>  
  3.       ... more path elements   
  4.     path>      
  5.   
  6.     <taskdef name="generate"    
  7.              classname="org.codehaus.xfire.xmlbeans.generator.GeneratorTask"  
  8.              classpathref="generate.path"/>  
  9.   
  10.     <generate overwrite="true"  
  11.               package="org.codehaus.xfire.weather"  
  12.               outputDir="$\{src.output.dir\}"  
  13.               wsdl="${basedir}/src/test-schemas/WeatherForecast.wsdl"  
  14.               classpathref="generate.path" />  

 这步表示获取"WeatherForecas.wsdl" 文件,并且在指定的包"org.codehaus.xfire.weather."中生成控制接口.

 classpath "generate.path" 需要包含XMLBeans库以及前面生成的类

 源代码文件将会生成在"${src.output.dir}"中.


使用这个客户端

一旦你生成完毕你的客户端代理,最难部分结束.服务说提供的操作将会以方法(methods)的形式出现在客户端代码中,要调用服务,只要在客户端调用相关方法就可以了.

典型的客户端使用代码如下:

java 代码
  1. ItemLookupDocument req = ItemLookupDocument.Factory.newInstance();   
  2.   
  3. // .... Fill in the request object   
  4.   
  5. // Invoke the service   
  6. AWSECommerceServiceClient client = new AWSECommerceServiceClient();   
  7. ItemLookupResponseDocument res = client.ItemLookup(req);   
  8.   
  9. // Do stuff with the response  
分享到:
评论

相关推荐

    AXIS2生成客户端代码教程.zip

    AXIS2是一个流行的开源Web服务框架,用于创建和部署SOAP(简单对象访问协议)服务以及生成客户端代码。在本文中,我们将深入探讨如何利用AXIS2在MyEclipse环境中生成客户端代码,以便与Web服务进行交互。这个过程...

    xmlbeans-bin-3.1.0.tgz

    在实际开发中,XMLBeans常用于需要大量处理XML数据的场景,例如Web服务客户端、XML配置文件处理、XML数据交换等。它的一个主要优势在于,由于它的类型安全特性,它可以在编译时检查XML数据的正确性,而不是在运行时...

    axis2客户端完整jar包(不含生成器)

    标题提到的"axis2客户端完整jar包(不含生成器)"意味着这个压缩包包含了运行Axis2客户端应用程序所需的所有库文件,但不包含用于生成Web服务客户端代码的工具。 在描述中,提到了"请自行下载",这意味着用户需要...

    maven+svn+XMLBeans

    本指南将深入探讨如何利用Maven、SVN和XMLBeans这三个组件来实现XML文件内容的读取,并生成对应的Java类,最终将成果打包并上传至私有Maven仓库。 【Maven】 Maven是Apache的一个项目管理工具,主要用于Java项目的...

    xmlbeans-bin-4.0.0-20201016.zip

    10. **应用场景**:XMLBeans常用于需要高效、类型安全处理XML数据的Java应用,如Web服务客户端、企业级应用、数据交换和XML数据存储等。 11. **与其他技术的对比**:XMLBeans与JAXB、DOM、SAX、StAX等其他XML处理...

    关于XMLBeans/shcema,不得不说的话题.doc

    XMLBeans生成的强类型类可以直接用于Web服务的客户端和服务器端,简化了数据交换。 尽管XMLBeans有许多优点,但也存在一些不足之处: 1. **SchemaType的原始类不可见**:生成的类基于内部的`org.w3c.schema`包,但...

    maven+svn+XMLBeans+xml

    3. 使用SVN客户端(如TortoiseSVN)将源代码和pom.xml文件提交到SVN仓库。 4. 在开发环境中运行Maven的`mvn clean package`命令生成JAR包。 5. 执行`mvn deploy`将JAR包上传到Maven私有仓库。 整个流程体现了现代...

    xfire客户端包含所需要的jar

    5. **xfire-xmlbeans-binding.jar**:如果项目使用XMLBeans作为数据绑定框架,此jar文件会提供相应的支持。 6. **xfire-spring.jar**:集成Spring框架,允许在Spring应用上下文中管理XFire服务和客户端。 7. **xfire...

    webservice的cxf框架客户端调用所需jar包

    在CXF中,XMLBeans用于解析和生成XML文档,支持SOAP消息的处理。 3. `bcprov-jdk15on-1.59.jar`: 这是Bouncy Castle提供的加密库,提供了一套完整的加密算法和证书处理功能,用于支持HTTPS安全通信和其他加密需求。...

    Jbuilder2006实现Axis2客户端

    总结来说,使用JBuilder2006实现Axis2客户端涉及下载和配置Axis2库,生成客户端代码,导入并调用服务接口,以及编写和运行客户端应用程序。虽然JBuilder2006已经较旧,但理解这个过程对于理解如何在其他现代IDE中...

    java根据xml生成schema_xsd_生成javabean2

    这个过程可以通过各种工具完成,比如使用Apache XMLBeans、JAXB(Java Architecture for XML Binding)等。在这个例子中,`createPro_Xsd.bat`可能就是用于自动化这个过程的批处理脚本,它可能调用了类似`trang.jar`...

    cxf服务端和客户端所需jar包

    在开发和测试阶段,CXF提供了诸如`cxf-tools-wsdlto-core.jar`这样的工具,用于从WSDL生成Java服务代码,以及`cxf-rt-rs-client.jar`,用于生成客户端代码。 7. **依赖库**: CXF自身依赖于许多其他库,如Spring...

    axis2客户端需要的jar包

    - **功能**: Annogen是一个用于自动生成WS-Addressing信息的工具。在Axis2中,它主要用于帮助处理与WS-Addressing相关的元数据。 - **作用**: 对于需要支持WS-Addressing的Web服务来说,这个包是非常重要的。 #### ...

    xfire客户端需要的jar

    3. **xfire-xmlbeans-binding.jar**:XMLBeans是一个强大的Java库,能够将XML Schema转换为Java类,从而使得Java代码可以直接操作XML数据。 4. **xfire-jaxws.jar**:JAX-WS(Java API for XML Web Services)是...

    WSDL2Java及axis2-1.5-bin.zip的包

    从最简单的开始 ,-uri 指定wsdl文件&gt; WSDL2Java -uri currencyConvert.wsdl-d 使用不同的data binding方法&gt; WSDL2Java -uri currencyConvert.wsdl -d xmlbeans-a 生成异步的方法&gt; WSDL2Java -uri currencyConvert....

    基于DWZ富客户端框架的ssh2的项目lib包

    4. `xmlbeans-2.3.0.jar`:XMLBeans是一个将XML文档映射到Java类的库,常用于处理复杂的XML结构。 5. `aspectjweaver.jar`:AspectJ Weaver是AspectJ的一部分,它能在运行时对Java代码进行编织(weaving),实现AOP...

    axis2相关文件

    2. 生成客户端代码:使用Axis2的wsdl2java工具,根据WSDL生成Java客户端代码(stub/skeleton)。 3. 编写客户端程序:使用生成的代码调用服务端方法。 4. 运行客户端:执行客户端程序,完成与服务端的通信。 总的来...

    WebService生成详细步骤

    6. **部署和测试服务**:在MyEclipse中,你可以直接运行Web Service工程,然后使用内置的Web Service测试工具或者生成的客户端代码进行测试。 通过以上步骤,一个完整的Web Service就可以在MyEclipse中创建并运行...

    WebService CXF 详细教程

    4. **动态客户端生成**:CXF可以从WSDL生成客户端代码,使得调用服务如同调用本地方法一样简单。 5. **模块化设计**:CXF由多个模块组成,可以根据需要选择合适的部分进行使用,避免资源浪费。 **四、CXF的使用步骤...

Global site tag (gtag.js) - Google Analytics