首先搭建好webService,添加XFire1.2Core Libraries 和XFire1.2HTTP Client Libraries,连接上数据库,下例以oracle为数据库。

连接Oralce,连接类为DBConnection.java

  1. package com.xtgd.test;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7.  
  8. public class DBConnection {
  9.  
  10. private String driver="oracle.jdbc.driver.OracleDriver";
  11.  
  12. private String url="jdbc:oracle:thin:@localhost:1521:orcl";
  13.  
  14. private String username="scott";
  15.  
  16. private String pwd="tiger";
  17.  
  18. private Connection conn=null;
  19.  
  20. public Connection getConn(){
  21. try {
  22. Class.forName(driver);
  23. conn=DriverManager.getConnection(url,username,pwd);
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. return conn;
  28. }
  29.  
  30. public void closeConn(ResultSet rs,PreparedStatement ps,Connection conn){
  31. try {
  32. if(rs!=null){
  33. rs.close();
  34. }
  35. if(rs!=null){
  36. rs.close();
  37. }
  38. if(rs!=null){
  39. rs.close();
  40. }
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44.  
  45. }
  46.  
  47. }

写好UserDao方法 UserDao.java

  1. package com.xtgd.test;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. public class UserDao
  10. {
  11. DBConnection b = new DBConnection();
  12.  
  13. private PreparedStatement pre = null;
  14.  
  15. private ResultSet rs = null;
  16.  
  17. private Connection conn = null;
  18.  
  19. /*
  20. * 全查询
  21. */
  22.  
  23. public List<TUser> getAll()
  24. {
  25. List<TUser> ar = new ArrayList<TUser>();
  26. try
  27. {
  28. String sql = "select * from t_user";
  29. conn = b.getConn();
  30. pre = conn.prepareStatement(sql);
  31. rs = pre.executeQuery();
  32. while (rs.next())
  33. {
  34. TUser user = new TUser();
  35. user.setUId(rs.getInt("u_id"));
  36. user.setUPersonid(rs.getString("u_personid"));
  37. user.setUPersonname(rs.getString("u_personname"));
  38. user.setUPassword(rs.getString("u_password"));
  39. user.setUTel(rs.getString("u_tel"));
  40. user.setUEmail(rs.getString("u_email"));
  41. user.setUState(rs.getInt("u_state"));
  42. user.setURemark(rs.getString("u_remark"));
  43. ar.add(user);
  44. }
  45.  
  46. }
  47. catch (Exception e)
  48. {
  49. e.printStackTrace();
  50. }
  51. finally
  52. {
  53. b.closeConn(rs, pre, conn);
  54. }
  55. return ar;
  56. }
  57.  
  58. }

实体类为TUser.entity

  1. package com.xtgd.test;
  2.  
  3. import java.io.Serializable;
  4.  
  5. /**
  6. * TUser entity.
  7. *
  8. * @author MyEclipse Persistence Tools
  9. */
  10.  
  11. public class TUser implements Serializable {
  12.  
  13. // Fields
  14.  
  15. private Integer UId;
  16. private String UPersonid;
  17. private String UPersonname;
  18. private String UPassword;
  19. private String UTel;
  20. private String UEmail;
  21. private int UState = 1;
  22. private String URemark;
  23.  
  24. // Constructors
  25.  
  26. /** default constructor */
  27. public TUser() {
  28. }
  29.  
  30. /** full constructor */
  31. public TUser(String UPersonid, String UPersonname, String UPassword,
  32. String UTel, String UEmail, int UState, String URemark) {
  33. this.UPersonid = UPersonid;
  34. this.UPersonname = UPersonname;
  35. this.UPassword = UPassword;
  36. this.UTel = UTel;
  37. this.UEmail = UEmail;
  38. this.UState = UState;
  39. this.URemark = URemark;
  40. }
  41.  
  42. // Property accessors
  43.  
  44. public Integer getUId() {
  45. return this.UId;
  46. }
  47.  
  48. public void setUId(Integer UId) {
  49. this.UId = UId;
  50. }
  51.  
  52. public String getUPersonid() {
  53. return this.UPersonid;
  54. }
  55.  
  56. public void setUPersonid(String UPersonid) {
  57. this.UPersonid = UPersonid;
  58. }
  59.  
  60. public String getUPersonname() {
  61. return this.UPersonname;
  62. }
  63.  
  64. public void setUPersonname(String UPersonname) {
  65. this.UPersonname = UPersonname;
  66. }
  67.  
  68. public String getUPassword() {
  69. return this.UPassword;
  70. }
  71.  
  72. public void setUPassword(String UPassword) {
  73. this.UPassword = UPassword;
  74. }
  75.  
  76. public String getUTel() {
  77. return this.UTel;
  78. }
  79.  
  80. public void setUTel(String UTel) {
  81. this.UTel = UTel;
  82. }
  83.  
  84. public String getUEmail() {
  85. return this.UEmail;
  86. }
  87.  
  88. public void setUEmail(String UEmail) {
  89. this.UEmail = UEmail;
  90. }
  91.  
  92. public int getUState() {
  93. return UState;
  94. }
  95.  
  96. public void setUState(int state) {
  97. UState = state;
  98. }
  99.  
  100. public String getURemark() {
  101. return this.URemark;
  102. }
  103.  
  104. public void setURemark(String URemark) {
  105. this.URemark = URemark;
  106. }
  107.  
  108. }

写好接口IUserService.java

  1. package com.xtgd.test;
  2.  
  3. import java.util.List;
  4. //Generated by MyEclipse
  5.  
  6. public interface IUserService {
  7.  
  8. public List<TUser> getAll();
  9. }

实现类UserServiceImpl.java

  1. package com.xtgd.test;
  2.  
  3. import java.util.List;
  4.  
  5. //Generated by MyEclipse
  6.  
  7. public class UserServiceImpl implements IUserService {
  8.  
  9. private UserDao dao = new UserDao();
  10.  
  11. /***************************************************************************
  12. * 查询所有
  13. */
  14. public List<TUser> getAll(){
  15. return this.dao.getAll();
  16. }
  17. }

在IUserService.java同级目录下添加IUserService.aegis.xml,命名规则为"接口名.aegis.xml"

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. 该文件用来描述IUsersService接口中getAll()方法返回值的类型
  4. 该文件必须与IUsersService位于同一目录中,且该文件遵循如下命名规则
  5. webservice接口名.aegis.xml 如本文件IUsersService.aegis.xml
  6. -->
  7.  
  8. <mappings>
  9. <method name="getAll">
  10. <return-type componentType="#users"/>
  11. </method>
  12. <!-- 映射getAll()方法返回值类型 -->
  13. <mapping>
  14. <component name="users" class="com.xtgd.test.TUser" componentType="com.xtgd.test.TUser"/>
  15. </mapping>
  16. </mappings>

web.xml的配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  3. <servlet>
  4. <servlet-name>XFireServlet</servlet-name>
  5. <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
  6. <load-on-startup>0</load-on-startup>
  7. </servlet>
  8. <servlet-mapping>
  9. <servlet-name>XFireServlet</servlet-name>
  10. <url-pattern>/services/*</url-pattern>
  11. </servlet-mapping>
  12.  
  13. <!-- 添加mapping -->
  14. <servlet-mapping>
  15. <servlet-name>XFireServlet</servlet-name>
  16. <url-pattern>/services/XFireServlet/*</url-pattern>
  17. </servlet-mapping>
  18.  
  19. <welcome-file-list>
  20. <welcome-file>index.jsp</welcome-file>
  21. </welcome-file-list>
  22. </web-app>

services.xml的配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://xfire.codehaus.org/config/1.0">
  3. <service>
  4. <name>UserService</name>
  5. <serviceClass>com.xtgd.test.IUserService</serviceClass>
  6. <implementationClass>
  7. com.xtgd.test.UserServiceImpl
  8. </implementationClass>
  9. <style>wrapped</style>
  10. <use>literal</use>
  11. <scope>application</scope>
  12. </service>
  13. </beans>

成功发布到tomcat上之后,下面开始测试,测试类为Test.java,注意导入正确的包!

  1. package com.xtgd.test;
  2.  
  3. import java.util.List;
  4. import com.xtgd.test.*;
  5.  
  6. import org.codehaus.xfire.client.XFireProxyFactory;
  7. import org.codehaus.xfire.service.Service;
  8. import org.codehaus.xfire.service.binding.ObjectServiceFactory;
  9.  
  10. public class Test {
  11.  
  12. public static void main(String[] args) {
  13. // 构建service
  14. Service service = (Service) new ObjectServiceFactory()
  15. .create(IUserService.class);
  16. try {
  17. // 获得自定义webservice接口
  18. IUserService usersService = (IUserService) new XFireProxyFactory()
  19. .create(service,
  20. "http://localhost:8080/08_01_webservice/services/UserService");
  21. // 调用该webservice中定义的getUsers()方法
  22. List<TUser> list = usersService.getAll();
  23. // 输出list长度
  24. System.out.println(list.size());
  25. // 遍历list
  26. for (TUser users : list) {
  27. System.out.println("personid:" + users.getUPersonid()
  28. + "\tpersonname:" + users.getUPersonname());
  29. }
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. }
  34.  
  35. }

以webService为客户端获取List泛型结果集的更多相关文章

  1. 动态生成WebService的客户端

    给定了WebService地址和调用接口后动态的生成DLL,第二次再请求时会先判断DLL是否存在,以提高执行效率 核心代码下: /// <summary> /// 动态生成WebServi ...

  2. 利用wsdl2java工具生成webservice的客户端代码

    1.JDK环境  2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME ...

  3. webservice -- cxf客户端调用axis2服务端

    背景: 有个项目, 需要由第三方提供用户信息, 实现用户同步操作, 对方给提供webservice接口(axis2实现)并也使用axis2作主客户端调用我方提供的webservice接口 起初, 由于 ...

  4. Atitit 动态调用webservice与客户端代理方式调用

    Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke  直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...

  5. nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

    最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...

  6. 客户端获取服务端自定义类数据 z

    客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...

  7. WCF学习心得--客户端获取服务端自定义类数据

    因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...

  8. webservice axis2客户端设置代理方法(公司网络通过代理访问时)

    webservice axis2客户端设置代理方法(公司网络通过代理访问时)   UploadProcessInServiceStub stub = new UploadProcessInServic ...

  9. 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据

    这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

随机推荐

  1. [2011山东ACM省赛] Mathman Bank(模拟题)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/24187925 Mathman Bank ni ...

  2. Java 回调函数例子

    首先定义一个类Caller,按照上面的定义就是程序员A写的程序a,这个类里面保存一个接口引用. public class Caller { private MyCallInterface callIn ...

  3. php请求API接口方法

    thinkphp下直接放入公共函数即可. /** * 通过URL获取页面信息 * @param string $url 地址 * @return string 返回页面信息 */ function g ...

  4. Python2.7-datetime

    datetime 模块用于操作日期时间模块内定义了5个类:date,time,datetime,timedelta,tzinfo 1.timedelta对象,代表一个时间间隔datetime.time ...

  5. openJDK环境搭建编译(fedora)

    1.安装VMware  VMware-workstation-full-10.0.7-2844087.exe    破解码:HY06L-F334P-9Z6H9-6R2XM-23C6J  安装完成之后, ...

  6. (转)JVM调优常用命令(jstat、jmap、jstack)

    原文:https://www.cnblogs.com/ityouknow/p/5714703.html 一.jstat jstat(JVM statistics Monitoring)是用于监视虚拟机 ...

  7. ansible 常用方法

    测试:用shell执行一个脚本很麻烦的,用script执行 1)推送脚本过去,并授权 ansible george -m copy -a "src=/tmp/test.sh dest=/tm ...

  8. Linux常用系统信息查看命令

    [转]http://yulans.cn/linux/linux%E5%B8%B8%E7%94%A8%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF%E6%9F%A5%E7%9C ...

  9. 汽车为什么选择了CAN总线技术?

    汽车为什么选择了CAN总线技术? 围绕“汽车为什么选择了CAN总线技术?汽车CAN总线技术到底是怎么一回事?采用汽车CAN总线技术有哪些优点?汽车总线的发展趋势”等问题作了一个浅短的介绍: 1. 汽车 ...

  10. 20155334 《网络攻防》 Exp6 信息搜集与漏洞扫描

    20155334 Exp6 信息搜集与漏洞扫描 一.实验问题回答 哪些组织负责DNS,IP的管理? 答:互联网名称与数字地址分配机构 ICANN ,该机构决定了域名和IP地址的分配.负责协调管理DNS ...