- 浏览: 196203 次
- 性别:
- 来自: 上海
最新评论
-
menghuannvxia:
请问下,你的xfire.xml这个文件是怎么写的,放在哪里了
spring+xfire实现webservice简单例子 -
q351505342:
maven部署web工程基础步骤 -
qq672076266:
qq672076266 写道
终于找到一个好用的了。
其他的 ...
JS动态添加select下拉框(城市区域多级下拉框demo) -
qq672076266:
终于找到一个好用的了。
其他的都是原版抄去抄去,真服了.. ...
JS动态添加select下拉框(城市区域多级下拉框demo) -
xfxlch:
...
Java编码音乐播放器简化版
1.xfire eclipse插件安装步骤,详细内容见:http://xfire.codehaus.org/Eclipse+Plugin
Overview
The XFire Eclipse plugin provides Eclipse support for XFire's WSDL->Code generator. It requires Eclipse 3.2 and Java 5.
Installing the Plugin
To install the Eclipse XFire plugin:
go to the Help menu, select "Software Updates" and then select "Find and Install."
Select "Search for new features to install" and click Next.
Select "Create New Remote Site" and enter "XFire" as the name and http://dist.codehaus.org/xfire/update/ as the eclipse update site.
Select OK.
Select Finish
Using the Plugin
The first step is to start the code generation wizard. Go to File->New->Other. Then select Code generation from WSDL document.
The plugin will then prompt you for the location of your WSDL, where to output the code, and also what package you would like the service in.
Once you're done you'll see the generated classes in your IDE!
2.基本思路为:
1.使用eclipse ->new project ->MyEclipse ->J2EE Projects ->Web Service Project创建一个ws服务端工程,默认在web.xml中加入:
<servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
同时在类路径下默认加入:XFire 1.1 Core Libraries
2.ws服务端工程运行,请求services Url,如:
http://127.0.0.1:8083/xfirelist5/services/HelloWorldService?wsdl,如果看到wsdl内容,表示ws服务工程成功,继续下一步.
3.ws客户端工程根据xfire eclipse插件,Code generation from WSDL document,然后编写测试类开始测试,调用ws服务工程远程方法。
3.下面以一个具体的例子来说明:
需求定义:
服务端提供两个远程服务方法:
第一个方法:考虑用户对象及该用户的friends List集合对象自定义类型传入传出情况,
根据传入对象打印出该对象的信息:如编号id,用户名username,密码password,消息msg,friends List集合等,
假设该用户提交的信息给服务端验证审核,审核完毕后,修改该用户的消息msg,同时新建friends List集合封装该对象返回。
第二个方法:仅仅考虑该用户对象集合传入传出情况,不考虑该用户的friends List集合对象,
假设有一批考生user List提交到服务器,服务器端循环输出,然后循环遍历修改该用户的消息msg,提示"考试通过"。
4.服务端主要代码:
User.java (Model类)
private int id; private String username; private String password; private String msg; //从服务端获取消息 private List<User> friends=new ArrayList<User>();
分别提供get~(),set~()方法.
HelloWorldService.java (服务接口)
/** * xfire传入传出自定义类型示例 * @param user * @return User Object */ User helloWorldDetail(User user); /** * xfire传入传出集合类型示例 * @param list * @return List<User>集合 */ List<User> listHelloWorld(List<User> list);
注意:必须写成List<User> 如果为List,在生成wsdl文件时会报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'HelloService' defined in class path resource [META-INF/xfire/services.xml]: Invocation of init method failed; nested exception is org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for java.util.List, unspecified component type for return type of method HelloWorldList in interface org.simpledev.xfire.list.service.IHelloWorldService
HelloWorldServiceImpl(服务接口实现类)
/** * 考虑用户对象及该用户对象friends集合对象 */ public User helloWorldDetail(User user) { System.out.println("HelloWorldServiceImpl.helloWorldDetail()"); //================自定义类型传入 begin================ System.out.println("客户端传递过来的User对象信息:"); int id = user.getId(); String username = user.getUsername(); String password = user.getPassword(); String msg = user.getMsg(); System.out.println("id:"+id); System.out.println("username:"+username); System.out.println("password:"+password); System.out.println("msg:"+msg); List<User> friends = user.getFriends(); User friend; for (int i = 0; i < friends.size(); i++) { friend=friends.get(i); System.out.println("朋友的编号:"+friend.getId()+"用户名:"+friend.getUsername()+"密码:"+friend.getPassword()+"消息:"+friend.getMsg()+""); } //================自定义类型传入 end================ //服务器端确认用户业务逻辑代码 //... //服务器端处理完毕后,返回一个User Object //================自定义类型传出 begin================ User temp = user; temp.setMsg("恭喜你,你的编号是:"+id+"用户名是:"+username+"密码是:"+password+"已经被服务器端确认!"); User friend1 = new User(101,"樱木花道","ymhd","我是新朋友樱木花道"); User friend2 = new User(102,"流川 枫","lcf","我是新朋友流川 枫"); User friend3 = new User(103,"三井 寿","sjs","我是新朋友三井 寿"); User friend4 = new User(104,"宫城良田","gclt","我是新朋友宫城良田"); User friend5 = new User(105,"赤木刚宪","ymhd","我是新朋友赤木刚宪"); List<User> newfriends = new ArrayList<User>(); newfriends.add(friend1); newfriends.add(friend2); newfriends.add(friend3); newfriends.add(friend4); newfriends.add(friend5); temp.setFriends(newfriends); //================自定义类型传出 end================ return temp; } /** * 不考虑friends集合情况 */ public List<User> listHelloWorld(List<User> list) { System.out.println("HelloWorldServiceImpl.listHelloWorld()"); //用户信息批量确认 User user; int id; String username; String password; String msg; //================集合类型传入 begin================ for (int i = 0; i < list.size(); i++) { user = list.get(i); id = user.getId(); username = user.getUsername(); password = user.getPassword(); msg = user.getMsg(); System.out.println("===id为"+id+"信息读取显示开始==="); System.out.println("username:"+username); System.out.println("password:"+password); System.out.println("msg:"+msg); } //================集合类型传入 end================ //================集合类型传出 begin================ List<User> temp = new ArrayList<User>(); for (int i = 0; i < list.size(); i++) { user = list.get(i); id = user.getId(); user.setMsg("恭喜你,编号"+id+"为已经通过考试了"); temp.add(user); } //================集合类型传出 end================ return temp; }
Web Service Project创建后,services.xml代码默认如下:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
...配置
</beans>
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name '' defined in class path resource [META-INF/xfire/services.xml]: Bean class [list] not found; nested exception is java.lang.ClassNotFoundException: list
java.lang.ClassNotFoundException: list
去掉:xmlns="http://xfire.codehaus.org/config/1.0" <beans>...配置</beans>
services.xml文件完整:
<beans> <!-- 使用Spring方式配置 --> <bean name="HelloService" class="org.codehaus.xfire.spring.ServiceBean"> <property name="serviceBean" ref="echo" /> <property name="serviceClass" value="org.simpledev.xfire.list.HelloWorldService" /> <property name="inHandlers"> <list> <ref bean="addressingHandler" /> </list> </property> </bean> <bean id="echo" class="org.simpledev.xfire.list.HelloWorldServiceImpl" /> <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler" /> </beans>
5.客户端主要代码:(注意:根据wsdl生成代码后,还需要httpclient.jar支持)
public static void main(String[] args) { HelloWorldServiceClient client = new HelloWorldServiceClient(); HelloWorldServicePortType service = client.getHelloWorldServiceHttpPort(); System.out.println("########### 方法1 ###########"); //QName参考: User.java User user = new User(); // JAXBElement<Integer> id = new JAXBElement<Integer>(new // QName("http://list.xfire.simpledev.org", "id"),Integer.class,1); JAXBElement<String> username = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "username"),String.class,"simpledev"); JAXBElement<String> password = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "password"),String.class,"123456"); JAXBElement<String> msg = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "msg"),String.class,"客户端编号为1的发出请求"); //======添加对象friends集合 begin====== ArrayOfUser temp = new ArrayOfUser(); User friend1 = new User(); JAXBElement<String> f_username1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "username"),String.class,"许文强"); JAXBElement<String> f_password1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "password"),String.class,"xwq"); JAXBElement<String> f_msg1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "msg"),String.class,"上海滩-强哥"); friend1.setId(11); friend1.setUsername(f_username1); friend1.setPassword(f_password1); friend1.setMsg(f_msg1); User friend2 = new User(); JAXBElement<String> f_username2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "username"),String.class,"丁力"); JAXBElement<String> f_password2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "password"),String.class,"dl"); JAXBElement<String> f_msg2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "msg"),String.class,"上海滩-阿力"); friend2.setId(12); friend2.setUsername(f_username2); friend2.setPassword(f_password2); friend2.setMsg(f_msg2); temp.getUser().add(friend1); temp.getUser().add(friend2); //======添加对象friends集合 end====== JAXBElement<ArrayOfUser> friends = new JAXBElement<ArrayOfUser>(new QName("http://list.xfire.simpledev.org", "friends"),ArrayOfUser.class,temp); //封装User Object user.setId(1); user.setUsername(username); user.setPassword(password); user.setMsg(msg); user.setFriends(friends); //请求方法,返回User Object User tempUser = service.helloWorldDetail(user); System.out.println("===下面是从服务器端获取的详细信息==="); System.out.println(tempUser.getId()); System.out.println(tempUser.getUsername().getValue()); System.out.println(tempUser.getPassword().getValue()); System.out.println(tempUser.getMsg().getValue()); JAXBElement<ArrayOfUser> f = tempUser.getFriends(); //获取新朋友,list ArrayOfUser f2 = f.getValue(); List f3 = f2.getUser(); for (int i = 0; i < f3.size(); i++) { User u = (User)f3.get(i); System.out.println(u.getId()); System.out.println(u.getUsername().getValue()); System.out.println(u.getPassword().getValue()); System.out.println(u.getMsg().getValue()); } System.out.println("--------------------------------"); System.out.println("########### 方法2 ###########"); ArrayOfUser a = new ArrayOfUser(); User u1 = new User(); JAXBElement<String> u_username1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "username"),String.class,"本田透"); JAXBElement<String> u_password1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "password"),String.class,"111111"); JAXBElement<String> u_msg1 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "msg"),String.class,"序号1:查询考试是否通过?"); u1.setId(1); u1.setUsername(u_username1); u1.setPassword(u_password1); u1.setMsg(u_msg1); User u2 = new User(); JAXBElement<String> u_username2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "username"),String.class,"纪纱"); JAXBElement<String> u_password2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "password"),String.class,"222222"); JAXBElement<String> u_msg2 = new JAXBElement<String>(new QName("http://list.xfire.simpledev.org", "msg"),String.class,"序号2:查询考试是否通过?"); u2.setId(2); u2.setUsername(u_username2); u2.setPassword(u_password2); u2.setMsg(u_msg2); a.getUser().add(u1); a.getUser().add(u2); ArrayOfUser list = service.listHelloWorld(a); List ls = list.getUser(); for (int i = 0; i < ls.size(); i++) { User u = (User)ls.get(i); System.out.println(u.getId()); System.out.println(u.getUsername().getValue()); System.out.println(u.getPassword().getValue()); System.out.println(u.getMsg().getValue()); } }
6.打印信息如下:
客户端打印信息如下:
########### 方法1 ###########
===下面是从服务器端获取的详细信息===
1
simpledev
123456
恭喜你,你的编号是:1用户名是:simpledev密码是:123456已经被服务器端确认!
101
樱木花道
ymhd
我是新朋友樱木花道
102
流川 枫
lcf
我是新朋友流川 枫
103
三井 寿
sjs
我是新朋友三井 寿
104
宫城良田
gclt
我是新朋友宫城良田
105
赤木刚宪
ymhd
我是新朋友赤木刚宪
--------------------------------
########### 方法2 ###########
1
本田透
111111
恭喜你,编号1为已经通过考试了
2
纪纱
222222
恭喜你,编号2为已经通过考试了
服务端打印信息如下:
HelloWorldServiceImpl.helloWorldDetail()
客户端传递过来的User对象信息:
id:1
username:simpledev
password:123456
msg:客户端编号为1的发出请求
朋友的编号:11用户名:许文强密码:xwq消息:上海滩-强哥
朋友的编号:12用户名:丁力密码:dl消息:上海滩-阿力
HelloWorldServiceImpl.listHelloWorld()
===id为1信息读取显示开始===
username:本田透
password:111111
msg:序号1:查询考试是否通过?
===id为2信息读取显示开始===
username:纪纱
password:222222
msg:序号2:查询考试是否通过?
发表评论
-
php fck文件夹及上传图片中文乱码问题解决方法
2012-05-21 15:13 2337主要原因是fck中的编(utf-8)码和本地的编码(gbk)环 ... -
extremecomponents补充说明
2012-04-20 16:49 3356<%@ taglib uri="/WEB-IN ... -
Hibernate count如何映射?HQL别名字段问题?
2012-03-01 11:43 8949问:hibernate, select name, count ... -
Hibernate入门级添删改查核心代码
2012-02-16 18:01 1179public static void main(String[ ... -
XML request error: Internal Server Error (500)解决方法
2011-08-29 17:42 5616XML request error: Internal Ser ... -
htmlparser学习总结
2010-11-19 17:14 5153由于公司需要,开发了一个抓取网上数据爬虫的程序,如抓取点评网、 ... -
FCKeditor fileupload Error on file upload.Error number:203分析解决
2009-10-28 14:59 3071问题描述:还发现了个问题,这个编辑器的上传功能和webwork ... -
maven+jdk1.5编译部署工程(请尝试使用 -source 1.5 以启用注释)问题说明
2009-08-12 22:58 43361.接上文|maven部署web工 ... -
spring+xfire实现webservice简单例子
2009-06-04 20:29 15391spring xfire是一种比较简单的webservcie方 ... -
webwork中richtexteditor标签图片上传配置和创建中文多级目录乱码问题解决
2009-04-21 02:14 22531.webwork中的rechtexteditor图片上传时在 ... -
webwork上传异常分析:getReader() or getInputStream() call
2008-08-06 01:16 3025在使用webwork-2.2.4.jar,xwork-1.2. ... -
webwork日期验证&Invalid field value for field Birthday
2008-07-18 00:54 58411.webwork源码分析: com.opensymphony ... -
解决webwork客户端验证提示信息重复多次显示问题
2008-07-18 00:41 15941.我们在使用webwork验证,可以分为两种情况讨论,下面提 ... -
ww.action标签在freemarker中的问题
2008-07-16 00:50 36191.问题描述: 在freemarke ... -
Freemarker标签说明及combobox支持问题解决方法
2008-07-11 17:45 5315FreeMarker template error! on l ... -
extremecomponents pdf 导出中文问题分析
2008-04-15 16:06 4065步骤一:准备工作 1.在 ...
相关推荐
XFire--Webservice入门xfire
**服务说明文档** 对于理解XFire-WebService的功能和使用方法至关重要。文档可能涵盖了以下几个方面: 1. **服务接口**:详细描述了提供的Web服务API,包括每个服务的名称、输入参数、返回值以及可能抛出的异常。 2...
XFire-WebService 开发基础教程主要围绕如何在MyEclipse环境中使用XFire框架开发Web服务进行讲解。XFire是一个基于Java的SOAP框架,它以轻量级的信息处理模块和STAX(Streaming API for XML)与SOAP消息交互。XFire...
本文对分布式通信框架-webservice 进行了深入的分析和讨论,涵盖了 webservice 的定义、特点、协议层、SOAP 协议、WSDL 文件、SEI 接口等方面。 一、webservice 的定义和特点 webservice 是一种轻量级的独立的通讯...
XFire是早期的一个流行的Java Web服务框架,它简化了创建和消费Web服务的过程。本篇文章将详细探讨XFire如何用于在MyEclipse环境中开发Web服务,以及它如何与Spring框架集成,同时也会讲解常用的数据格式映射。 1. ...
《Xfire Webservice实例详解与应用》 Xfire是一款强大的Java Web服务框架,它简化了创建、部署和消费Web服务的过程。在这个实例中,我们将会深入探讨如何利用Xfire快速构建一个可运行的Web服务,并了解其核心概念和...
6. **示例代码**: 在jsp-WebService子目录中,可能包含了创建和调用WebService的示例代码,包括Java源文件、配置文件以及相关的HTML页面(jsp)来展示如何通过Web浏览器调用这些服务。通过这些示例,你可以学习如何...
这篇博客“WebService--xfire中对集合的配置和操作”可能主要讨论了如何在XFire中处理集合类型的数据,包括数组、List或Set等。 在XFire中,配置是关键部分,它涉及到服务的定义、绑定以及数据的序列化和反序列化。...
【标题】"webService-xfire入门doc" 涉及的是Web服务技术中的XFire框架,这是一款用于构建和消费Web服务的开源Java库。XFire是早期流行的Web服务实现,它允许开发者轻松地将Java对象转换为Web服务,反之亦然。 ...
"Java 使用 XFire 调用 webService 接口" ...我们了解了服务端和客户端的开发步骤,并了解了使用 XFire 调用 webService 接口的优点。通过本文,我们可以更好地理解和应用 XFire 框架,提高 Web 服务的开发和集成效率。
xfire是一款基于Java的开源WebService框架,它提供了一个简单、灵活和高效的方式来开发和部署WebService。xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了一个基于annotation的...
XFire是Java平台上一个曾经流行的开源框架,专门用于构建和消费Web服务。本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建...
通过学习和分析这些文件,你可以更好地理解Spring和XFire如何协同工作,以及如何在实际项目中实现Web服务。 总之,Spring与XFire的结合提供了一种简洁、灵活的方式来创建和管理Web服务,使得开发者可以专注于业务...
webservice中用到的jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar,xfire-jaxws-1.2.6.jar
Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同的系统之间进行数据交换。XFire是Java平台上的一款轻量级Web服务框架,它提供了简单、高性能的方式来创建和消费Web服务。Spring则是一个广泛...
在“WebService之XFire开发文档和代码”压缩包中,包含了详细的开发文档,帮助开发者了解如何使用XFire创建、部署和测试WebService。同时,还提供了一些代码示例,可以帮助开发者快速上手实践。通过学习这些文档和...
“源码”标签暗示了文章可能深入到代码层面,讲解如何配置和自定义XFire的代码以满足特定需求。“工具”标签则表明XFire被当作一个开发工具来使用,帮助开发者快速地搭建和管理Web服务。 【压缩包子文件的文件名称...