最近在学习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 代码
- <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"
- classpathref="task.path"
- fork="true">
- <arg value="-d"/>
- <arg value="$\{destination.class.directory\}"/>
- <arg value="$\{basedir\}/src/test-schemas"/>
- 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 代码
-
- <java classname="org.apache.xmlbeans.impl.tool.SchemaCompiler"
- classpathref="task.path"
- fork="true">
- <arg value="-out"/>
- <arg value="$\{output.dir\}/output.jar"/>
- <arg value="$\{basedir\}/src/test-schemas"/>
- java>
<arg value="$\{basedir\}/src/test-schemas"></arg>
替换"${output.dir}/output.jar"成你想要的结果jar文档路径
生成客户端
接下来,我们需要添加一段代码在build文件中。这步将会生成客户端代码。
xml 代码
- <path id="generate.path">
- <pathelement path="..."/>
- ... more path elements
- path>
-
- <taskdef name="generate"
- classname="org.codehaus.xfire.xmlbeans.generator.GeneratorTask"
- classpathref="generate.path"/>
-
- <generate overwrite="true"
- package="org.codehaus.xfire.weather"
- outputDir="$\{src.output.dir\}"
- wsdl="${basedir}/src/test-schemas/WeatherForecast.wsdl"
- classpathref="generate.path" />
这步表示获取"WeatherForecas.wsdl" 文件,并且在指定的包"org.codehaus.xfire.weather."中生成控制接口.
classpath "generate.path" 需要包含XMLBeans库以及前面生成的类
源代码文件将会生成在"${src.output.dir}"中.
使用这个客户端
一旦你生成完毕你的客户端代理,最难部分结束.服务说提供的操作将会以方法(methods)的形式出现在客户端代码中,要调用服务,只要在客户端调用相关方法就可以了.
典型的客户端使用代码如下:
java 代码
- ItemLookupDocument req = ItemLookupDocument.Factory.newInstance();
-
-
-
-
- AWSECommerceServiceClient client = new AWSECommerceServiceClient();
- ItemLookupResponseDocument res = client.ItemLookup(req);
-
-
分享到:
相关推荐
AXIS2是一个流行的开源Web服务框架,用于创建和部署SOAP(简单对象访问协议)服务以及生成客户端代码。在本文中,我们将深入探讨如何利用AXIS2在MyEclipse环境中生成客户端代码,以便与Web服务进行交互。这个过程...
在实际开发中,XMLBeans常用于需要大量处理XML数据的场景,例如Web服务客户端、XML配置文件处理、XML数据交换等。它的一个主要优势在于,由于它的类型安全特性,它可以在编译时检查XML数据的正确性,而不是在运行时...
标题提到的"axis2客户端完整jar包(不含生成器)"意味着这个压缩包包含了运行Axis2客户端应用程序所需的所有库文件,但不包含用于生成Web服务客户端代码的工具。 在描述中,提到了"请自行下载",这意味着用户需要...
本指南将深入探讨如何利用Maven、SVN和XMLBeans这三个组件来实现XML文件内容的读取,并生成对应的Java类,最终将成果打包并上传至私有Maven仓库。 【Maven】 Maven是Apache的一个项目管理工具,主要用于Java项目的...
10. **应用场景**:XMLBeans常用于需要高效、类型安全处理XML数据的Java应用,如Web服务客户端、企业级应用、数据交换和XML数据存储等。 11. **与其他技术的对比**:XMLBeans与JAXB、DOM、SAX、StAX等其他XML处理...
XMLBeans生成的强类型类可以直接用于Web服务的客户端和服务器端,简化了数据交换。 尽管XMLBeans有许多优点,但也存在一些不足之处: 1. **SchemaType的原始类不可见**:生成的类基于内部的`org.w3c.schema`包,但...
3. 使用SVN客户端(如TortoiseSVN)将源代码和pom.xml文件提交到SVN仓库。 4. 在开发环境中运行Maven的`mvn clean package`命令生成JAR包。 5. 执行`mvn deploy`将JAR包上传到Maven私有仓库。 整个流程体现了现代...
5. **xfire-xmlbeans-binding.jar**:如果项目使用XMLBeans作为数据绑定框架,此jar文件会提供相应的支持。 6. **xfire-spring.jar**:集成Spring框架,允许在Spring应用上下文中管理XFire服务和客户端。 7. **xfire...
在CXF中,XMLBeans用于解析和生成XML文档,支持SOAP消息的处理。 3. `bcprov-jdk15on-1.59.jar`: 这是Bouncy Castle提供的加密库,提供了一套完整的加密算法和证书处理功能,用于支持HTTPS安全通信和其他加密需求。...
总结来说,使用JBuilder2006实现Axis2客户端涉及下载和配置Axis2库,生成客户端代码,导入并调用服务接口,以及编写和运行客户端应用程序。虽然JBuilder2006已经较旧,但理解这个过程对于理解如何在其他现代IDE中...
这个过程可以通过各种工具完成,比如使用Apache XMLBeans、JAXB(Java Architecture for XML Binding)等。在这个例子中,`createPro_Xsd.bat`可能就是用于自动化这个过程的批处理脚本,它可能调用了类似`trang.jar`...
在开发和测试阶段,CXF提供了诸如`cxf-tools-wsdlto-core.jar`这样的工具,用于从WSDL生成Java服务代码,以及`cxf-rt-rs-client.jar`,用于生成客户端代码。 7. **依赖库**: CXF自身依赖于许多其他库,如Spring...
- **功能**: Annogen是一个用于自动生成WS-Addressing信息的工具。在Axis2中,它主要用于帮助处理与WS-Addressing相关的元数据。 - **作用**: 对于需要支持WS-Addressing的Web服务来说,这个包是非常重要的。 #### ...
3. **xfire-xmlbeans-binding.jar**:XMLBeans是一个强大的Java库,能够将XML Schema转换为Java类,从而使得Java代码可以直接操作XML数据。 4. **xfire-jaxws.jar**:JAX-WS(Java API for XML Web Services)是...
从最简单的开始 ,-uri 指定wsdl文件> WSDL2Java -uri currencyConvert.wsdl-d 使用不同的data binding方法> WSDL2Java -uri currencyConvert.wsdl -d xmlbeans-a 生成异步的方法> WSDL2Java -uri currencyConvert....
4. `xmlbeans-2.3.0.jar`:XMLBeans是一个将XML文档映射到Java类的库,常用于处理复杂的XML结构。 5. `aspectjweaver.jar`:AspectJ Weaver是AspectJ的一部分,它能在运行时对Java代码进行编织(weaving),实现AOP...
2. 生成客户端代码:使用Axis2的wsdl2java工具,根据WSDL生成Java客户端代码(stub/skeleton)。 3. 编写客户端程序:使用生成的代码调用服务端方法。 4. 运行客户端:执行客户端程序,完成与服务端的通信。 总的来...
6. **部署和测试服务**:在MyEclipse中,你可以直接运行Web Service工程,然后使用内置的Web Service测试工具或者生成的客户端代码进行测试。 通过以上步骤,一个完整的Web Service就可以在MyEclipse中创建并运行...
4. **动态客户端生成**:CXF可以从WSDL生成客户端代码,使得调用服务如同调用本地方法一样简单。 5. **模块化设计**:CXF由多个模块组成,可以根据需要选择合适的部分进行使用,避免资源浪费。 **四、CXF的使用步骤...