来点Java的感觉
磨碎Java,我请你喝一杯.........
Web
您的域名
BlogJava
首页
新随笔
联系
聚合
管理
随笔-30 评论-123 文章-0 trackbacks-0
XFire:开发Web服务的简易之道(三)--开发客户端程序
摘要:在《XFire:开发Web服务的简易之道(二)》中最后提到过:要想检验Web服务是否有效,需要一个客户端程序实际调用一下这个Web服务。本章我们就来创建这样一个用于检验的客户端程序,验证一下我们前面的工作是不是真的有效。最后总结一下用XFire开发Web服务的步骤。
创建客户端程序
我们可以使用很多方法,任何SOAP工具来创建客户端程序,例如.Net或Apache Axis。我的这个例子中我是用一个名叫WsClient.java的Servlet中的动态代理。为了减少编码的代价,我将所有屏幕构建元素都放到doGet()方法中。对Web服务服务的实际调用在callWebService()方法中。代码很简单:
/**/
/*
Call the Web service
*
*/
public
String callWebService(
String fromAccount, String toAccount,
double
amount, String currency)
throws
MalformedURLException, Exception
{
//
Create a metadata of the service
Service serviceModel
=
new
ObjectServiceFactory().create(IBankingService.
class
);
log.debug(
"
callSoapServiceLocal(): got service model.
"
);
//
Create a proxy for the deployed service
XFire xfire
=
XFireFactory.newInstance().getXFire();
XFireProxyFactory factory
=
new
XFireProxyFactory(xfire);
String serviceUrl
=
"
http://localhost:8080/websvc/services/Banking
"
;
IBankingService client
=
null
;
try
{
client
=
(IBankingService) factory.create(serviceModel, serviceUrl);
}
catch
(MalformedURLException e)
{
log.error(
"
WsClient.callWebService(): EXCEPTION:
"
+
e.toString());
}
//
Invoke the service
String serviceResponse
=
""
;
try
{
serviceResponse
=
client.transferFunds(fromAccount, toAccount, amount, currency);
}
catch
(Exception e)
{
log.error(
"
WsClient.callWebService(): EXCEPTION:
"
+
e.toString());
serviceResponse
=
e.toString();
}
log.debug(
"
WsClient.callWebService(): status=
"
+
serviceResponse);
//
Return the response
return
serviceResponse;
}
这段代码做了些什么?让我解释一下:首先我们创建了一个服务模型,里面包含了对服务的描述,换句话说,我们创建了服务的元数据。我们是用XFire的ObjectServiceFactory通过接口IBankingService.class创建了这个服务模型。
下一步就是获取XFire的代理对象。这一步中没有任何应用细节。通过proxyFactory,使用服务模型和服务终点URL(用于获得WSDL),我们获得了服务的本地代理。
这个代理就是实际的客户端。现在我们可以调用transferFunds()方法获得我们想要的Web服务了。
一旦这个例子部署成功并启动,就可以用下面的Servlet URL检验:
http://localhost:8080/websvc/ws
Servlet使用默认的参数访问Web服务并显示接收到的响应。你应该能看到下面两行信息
Response Received
COMPLETED: CDN$ 500.00 was successfully transferred from A/C# 11111-01234 to A/C# 99999-05678
现在你可以确信Web服务真的起来了并且工作正常。
你可以尝试传入不同的数据。你可以输入类似于下面的URL
http://localhost:8080/websvc/ws?from=11-2345&to=77
-
9876&amt=250.00&cur=EUR
.
Web服务开发的基本步骤
下面列出了使用XFire开发Web服务的基本步骤:
1、检验Java类的方法和构造函数时公共的;
2、将XFire Servlet相关的入口添加到web.xml中;
3、创建services.xml并把它放到WEB-INF/classes/META-INF/xfire目录下;
4、将Xfire和其他第三方库添加到你的Web应用的WEB-INF/lib 目录下。
OK,这就是全部要做,就是这么简单。
posted on 2006-05-16 09:43
学二的猫
阅读(5515)
评论(6)
编辑
收藏
所属分类:
Java禅机
评论:
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序 2006-05-16 10:54 |
Harryson
我在TOMCAT下发现如下的信息:264344311 [http-8088-Processor22] ERROR example.WsClient - WsClient.callWebServ
ice(): EXCEPTION: org.codehaus.xfire.XFireRuntimeException: Could not invoke ser
vice.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't send me
ssage.似乎有点问题,请指点!
回复
更多评论
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序 2006-06-03 16:18 |
Apollo
不错,够简单,获益匪浅
不过,能不能讲一下用xfire自动生成客户端程序。我弄了一上午也没出来.
希望可以与你交流下哈
msn:Apollo_zhc@hotmail.com
回复
更多评论
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序[未登录] 2008-08-12 13:59 |
alex
太肤浅
回复
更多评论
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序 2009-05-02 21:50 |
sc
写得好,是我需要的。
回复
更多评论
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序 2011-11-02 02:06 |
lisongandy
Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);
在实际中,开发者是不可能知道元数据接口IBankingService.class的,那么该如何创建元数据呢?
回复
更多评论
#
re: XFire:开发Web服务的简易之道(三)--开发客户端程序
2011-11-02 02:07 |
lisongandy
特指客户端开发者
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
在JDK6.0中用StAX解析XML
Java与模型驱动架构(MDA)
使用Robot类创建自己的Java版屏幕捕捉程序
在Java中模拟多重继承--扩展多个类的技巧
XFire:开发Web服务的简易之道(三)--开发客户端程序
XFire:开发Web服务的简易之道(二)--Web应用的部署描述
XFire:开发Web服务的简易之道(一)--XFire简介
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔分类
Groovy(6)
J2ME(5)
Java感觉(1)
Java禅机(7)
数据库技术(4)
有话要说(4)
设计模式(2)
软件工程(3)
随笔档案
2006年6月 (5)
2006年5月 (9)
2006年4月 (16)
相册
PIC
我的主页
我的个人主页
->My Homepage<-
积分与排名
积分 - 100228
排名 - 572
最新评论
1. re: 使用Robot类创建自己的Java版屏幕捕捉程序
求一份源代码,学习学习。谢谢版主.我的邮箱是865007837@qq.com
--莫煜
2. re: 使用Robot类创建自己的Java版屏幕捕捉程序
yes,学习了,
--hiv
3. re: 使用Robot类创建自己的Java版屏幕捕捉程序
求一份源代码,学习学习。谢谢版主。
我的邮箱是rentent@163.com
--rentent
4. re: 使用Robot类创建自己的Java版屏幕捕捉程序
求一份源代码,学习学习。谢谢版主。
我的邮箱是hityujiaming@163.com
--yujiaming
5. re: 使用Robot类创建自己的Java版屏幕捕捉程序[未登录]
348472012@qq.com
--记忆碎片
阅读排行榜
1. Groovy全攻略--嵌入篇(10632)
2. [Flash教程]ClearCase教程--开发人员加入ClearCase项目(8852)
3. 在Java中模拟多重继承--扩展多个类的技巧(8342)
4. Eclipse3.1.1+EclipseME1.5+WTK2.2搭建J2ME开发环境(7346)
5. XFire:开发Web服务的简易之道(三)--开发客户端程序(5515)
评论排行榜
1. 使用Robot类创建自己的Java版屏幕捕捉程序(72)
2. 在Java中模拟多重继承--扩展多个类的技巧(6)
3. XFire:开发Web服务的简易之道(三)--开发客户端程序(6)
4. 用Sprite编写J2ME程序--第三章 用精灵实现动画(6)
5. Groovy指南--(2) 闭包Closure(非正式)(4)