从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 代码
-
<
taskdef
name
=
"wsgen"
classname
=
"org.codehaus.xfire.gen.WsGenTask"
-
classpathref
=
"maven.compile.classpath"
/>
-
-
<
wsgen
outputDirectory
=
"${basedir}/target/generated-source"
-
wsdl
=
"${basedir}/src/wsdl/geoip.wsdl"
package
=
"net.webservicex.geoip.jaxb"
overwrite
=
"true"
/>
配置
命令行:
你还可以从命令行来运行WsGen(如果需要绑定jaxb,xmlbeans,你需要相关的jar文件),使用如下的脚本:
script 代码
-
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\
-
: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;
-
-
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 代码
-
package
net.webservicex.geoip;
-
-
import
net.webservicex.GetGeoIP;
-
import
net.webservicex.geoip.jaxb.GeoIPServiceClient;
-
import
net.webservicex.geoip.jaxb.GeoIPServiceSoap;
-
import
junit.framework.TestCase;
-
-
public
class
GeoIPClientTest
extends
TestCase
-
{
-
public
void
testClient()
throws
Exception
-
{
-
GeoIPServiceClient service =
new
GeoIPServiceClient();
-
GeoIPServiceSoap geoIPClient = service.getGeoIPServiceSoap();
-
-
System.out.println(
"The country is: "
+
-
geoIPClient.getGeoIP(
"216.73.126.120"
).getCountryName());
-
}
-
}
-
-
-
你会发现 GeoIPImpl class也被生成了,如果你正在使用客户端,你不能删除它,因为它含有用来生成客户端的注释。Impl class 和wsdl中的<binding></binding>相符,它包含soap绑定信息。
使用如下的代码,你可以为客户端增加新的handlers 或者设置属性
java 代码
-
Client client = Client.getInstance(geoIPClient);
-
client.setProperty(Channel.USERNAME,
"test"
);
-
client.setProperty(Channel.PASSWORD,
"test"
);
-
client.addInHandler(
new
DOMOutHandler());
XMLBeans 客户端/服务 生成
你可以使用XMLBeans 作为绑定来替代JAXB2.0.
简单地在task中设置绑定参数
xml 代码
-
<
wsgen
outputDirectory
=
"target/services"
-
wsdl
=
"${basedir}/src/wsdl/echoW.wsdl"
-
package
=
"com.acme.echo"
-
binding
=
"xmlbeans"
overwrite
=
"true"
/>
请注意,你需要先生成该wsdl的XMLBeans
,然后把它的jar包放到wsgen-task的classpath下面。
如果你忘记了这步,你会看到
NullPointerException.
分享到:
相关推荐
使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...
2. **配置XFire**:配置XFire实例,指定服务接口和实现,以及WSDL生成的选项,比如服务命名、端点地址等。 3. **生成WSDL**:使用XFire提供的API或者命令行工具,根据配置生成WSDL文件。生成的WSDL会描述服务的接口...
生成XFire客户端的过程主要是通过反向工程从Web服务的WSDL(Web Service Description Language)文件中自动生成Java客户端代码。WSDL文件定义了Web服务的接口、消息格式、操作和地址等信息。以下是一般步骤: 1. **...
WebService经典24篇网文汇总,包含axis2_Xfire搭建_WSDL详解_自动生成客户端和WSDL等,自己找了好久的内容; 都是自己学习过程中网络的知识,找了很久,里边有一些自己的标记,如果发现chm内容是空白,注意看一下,其实是...
总结来说,使用Xfire开发Web服务客户端涉及导入必要的jar包、配置服务信息、生成代理类以及编写调用代码。虽然Xfire已不再更新,但其简单易用的特点使其在某些场景下依然具有价值。对于新项目,推荐使用更现代的框架...
3. **自定义WSDL生成器**:如果你的场景比较特殊,可以创建自定义的WSDLGenerator实现,覆盖XFire默认的行为,以控制字段名称的生成。 4. **使用XML Schema(XSD)**:如果字段涉及的数据类型较复杂,可以在WSDL...
它能自动生成客户端代理类,这些类可以直接调用远程服务的方法,就像调用本地方法一样,极大地降低了客户端开发的复杂性。 这个压缩包文件"xfireDemo"包含了实现xfire服务端和axis客户端所需的所有组件和jar包。...
本文将深入探讨XFire Java Web Service客户端的使用和相关知识点。 一、XFire简介 XFire是Apache CXF项目的一个前身,它是一款高效的、开源的Java Web Service实现。XFire的目标是提供一个轻量级、快速且易于使用...
然后,实现这个接口并部署到服务器,Xfire会自动生成相应的WSDL文件,供客户端调用。 **3. 部署Web服务** Xfire允许你将Web服务部署到任何Servlet容器,如Tomcat。只需要将Xfire的库添加到项目的类路径中,然后在...
2. 生成客户端代码:使用XFire的wsdl2java工具生成客户端代理类。 3. 创建客户端实例:在Java代码中创建代理类的实例,通常需要指定服务的地址。 4. 调用服务方法:通过代理类的方法调用远程服务,传递必要的参数。 ...
标题中的“xfire客户端包含所需要的jar”指的是,为了使用XFire客户端功能,你需要一系列特定的Java档案(jar)文件。这些jar文件包含了实现XFire功能的类库和资源,包括XML解析器、SOAP处理模块、HTTP传输层以及与...
- 使用MyEclipse的Web服务消费者向导,根据WSDL生成客户端代理类。 - 在客户端代码中,实例化代理类并调用服务方法,实现与Web服务的交互。 8. **JSP整合** - 如果需要在Web前端展示服务结果,可以使用JSP(Java...
3. 使用相应的库(如CXF或axis2)从WSDL生成客户端代理类。 4. 在Xfire客户端代码中实例化并调用生成的代理类,传递必要的参数以执行Web服务操作。 5. 处理返回的结果,将数据展示或用于客户端逻辑。 在实际开发中...
1. **自动生成Web服务客户端代码**:这是插件的核心功能之一,通过解析WSDL(Web Services Description Language)文件,插件能够自动为指定的Web服务生成客户端存根代码,极大地简化了客户端开发过程。 2. **简化...
1. **生成客户端代理类**:使用Xfire的工具(如`xfire-gen`)或在线工具,根据服务的WSDL(Web Service Description Language)文件生成客户端代理类。 2. **编写客户端代码**:实例化代理类并调用服务方法。 ```...
- XFire提供了一个`ClientProxyFactoryBean`,用于根据WSDL生成一个Java客户端代理类。这个代理类可以像调用本地方法一样调用Web服务。 - 创建客户端代理后,实例化这个类并设置必要的连接参数(如服务URL),然后...
XFire客户端Eclipse插件是开发人员在使用Eclipse IDE时用于集成XFire服务框架的工具。XFire,现在已被Apache CXF所吸收,是一款强大的Java Web服务框架,旨在简化创建和部署Web服务的过程。这款插件使得在Eclipse...
在使用XFire时,通常需要WSDL文件来生成客户端代理类,这些类提供了调用Web服务的方法。 3. **XFire客户端API**:XFire提供了客户端API,可以自动生成客户端代码,这些代码包含了调用Web服务的必要方法。开发者只...
- **解析WSDL**:使用XFire提供的工具,如`wsdl2java`,从WSDL文件生成Java客户端 stubs。 - **初始化客户端**:实例化客户端代理,通常是一个实现了服务接口的类。 - **配置传输机制**:设置HTTP或HTTPS等传输...
6. **生成WSDL**:使用XFire提供的工具,可以自动从服务接口生成WSDL文件。这一步通常涉及调用特定的API方法,例如`org.codehaus.xfire.service.ServiceFactory.createServiceDefinition()`。 7. **部署到服务器**...