从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生成客户端代码.rar
WebService经典24篇网文汇总,包含axis2_Xfire搭建_WSDL详解_自动生成客户端和WSDL等,自己找了好久的内容; 都是自己学习过程中网络的知识,找了很久,里边有一些自己的标记,如果发现chm内容是空白,注意看一下,其实是...
xfire 是一个webservice框架,可以使用它搭建webservice服务,也可以使用它生成客户端代码。
用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl
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等项目的支持等。
CXF教程.doc Eclipse中用wsdl生成java客户端.docx java 利用Xfire 来生成Webservice 的WSDL文件 - 爱琴海 - ITeye技术网站.htm XFire部署开发webservice.docx XFire建立Webservice实例.doc XFire开发WebService详解....
WebService当服务端两种生成wsdl协议方式,Axis和XFire(CXF)前者搞过WebService的人应该都知道扩展性比较好但是不支持Spring,后者基本逻辑全都封装在了底层API中,模式比较固定,开发比Axis简单,但是没有Axis灵活。...
1、使用WSDL2Java 工具根据WSDL 生成客户端代码.................................................. 28 2、新建工程项目..........................................................................................
集成soapUI快速生成客户端,CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要...
支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor; ... 支持多种Web服务业界重要标准如SOAP、WSDL、Web服务寻址(WS-... 服务器端、客户端代码辅助生成; 对Spring、Pico、Plexus等项目的支持等。