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

连接Oralce,连接类为DBConnection.java

package com.xtgd.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class DBConnection { private String driver="oracle.jdbc.driver.OracleDriver"; private String url="jdbc:oracle:thin:@localhost:1521:orcl"; private String username="scott"; private String pwd="tiger"; private Connection conn=null; public Connection getConn(){
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,username,pwd);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
} public void closeConn(ResultSet rs,PreparedStatement ps,Connection conn){
try {
if(rs!=null){
rs.close();
}
if(rs!=null){
rs.close();
}
if(rs!=null){
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
} } }

写好UserDao方法 UserDao.java

package com.xtgd.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; public class UserDao
{
DBConnection b = new DBConnection(); private PreparedStatement pre = null; private ResultSet rs = null; private Connection conn = null; /*
* 全查询
*/ public List<TUser> getAll()
{
List<TUser> ar = new ArrayList<TUser>();
try
{
String sql = "select * from t_user";
conn = b.getConn();
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
while (rs.next())
{
TUser user = new TUser();
user.setUId(rs.getInt("u_id"));
user.setUPersonid(rs.getString("u_personid"));
user.setUPersonname(rs.getString("u_personname"));
user.setUPassword(rs.getString("u_password"));
user.setUTel(rs.getString("u_tel"));
user.setUEmail(rs.getString("u_email"));
user.setUState(rs.getInt("u_state"));
user.setURemark(rs.getString("u_remark"));
ar.add(user);
} }
catch (Exception e)
{
e.printStackTrace();
}
finally
{
b.closeConn(rs, pre, conn);
}
return ar;
} }

实体类为TUser.entity

package com.xtgd.test;

import java.io.Serializable;

/**
* TUser entity.
*
* @author MyEclipse Persistence Tools
*/ public class TUser implements Serializable { // Fields private Integer UId;
private String UPersonid;
private String UPersonname;
private String UPassword;
private String UTel;
private String UEmail;
private int UState = 1;
private String URemark; // Constructors /** default constructor */
public TUser() {
} /** full constructor */
public TUser(String UPersonid, String UPersonname, String UPassword,
String UTel, String UEmail, int UState, String URemark) {
this.UPersonid = UPersonid;
this.UPersonname = UPersonname;
this.UPassword = UPassword;
this.UTel = UTel;
this.UEmail = UEmail;
this.UState = UState;
this.URemark = URemark;
} // Property accessors public Integer getUId() {
return this.UId;
} public void setUId(Integer UId) {
this.UId = UId;
} public String getUPersonid() {
return this.UPersonid;
} public void setUPersonid(String UPersonid) {
this.UPersonid = UPersonid;
} public String getUPersonname() {
return this.UPersonname;
} public void setUPersonname(String UPersonname) {
this.UPersonname = UPersonname;
} public String getUPassword() {
return this.UPassword;
} public void setUPassword(String UPassword) {
this.UPassword = UPassword;
} public String getUTel() {
return this.UTel;
} public void setUTel(String UTel) {
this.UTel = UTel;
} public String getUEmail() {
return this.UEmail;
} public void setUEmail(String UEmail) {
this.UEmail = UEmail;
} public int getUState() {
return UState;
} public void setUState(int state) {
UState = state;
} public String getURemark() {
return this.URemark;
} public void setURemark(String URemark) {
this.URemark = URemark;
} }

写好接口IUserService.java

package com.xtgd.test;

import java.util.List;
//Generated by MyEclipse public interface IUserService { public List<TUser> getAll();
}

实现类UserServiceImpl.java

package com.xtgd.test;

import java.util.List;

//Generated by MyEclipse

public class UserServiceImpl implements IUserService {

	private UserDao dao = new UserDao();

	/***************************************************************************
* 查询所有
*/
public List<TUser> getAll(){
return this.dao.getAll();
}
}

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

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

web.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<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">
<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> <!-- 添加mapping -->
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/XFireServlet/*</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

services.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>UserService</name>
<serviceClass>com.xtgd.test.IUserService</serviceClass>
<implementationClass>
com.xtgd.test.UserServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>

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

package com.xtgd.test;

import java.util.List;
import com.xtgd.test.*; import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory; public class Test { public static void main(String[] args) {
// 构建service
Service service = (Service) new ObjectServiceFactory()
.create(IUserService.class);
try {
// 获得自定义webservice接口
IUserService usersService = (IUserService) new XFireProxyFactory()
.create(service,
"http://localhost:8080/08_01_webservice/services/UserService");
// 调用该webservice中定义的getUsers()方法
List<TUser> list = usersService.getAll();
// 输出list长度
System.out.println(list.size());
// 遍历list
for (TUser users : list) {
System.out.println("personid:" + users.getUPersonid()
+ "\tpersonname:" + users.getUPersonname());
}
} catch (Exception e) {
e.printStackTrace();
}
} }

以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. 基于duxshop遍历无限级分销用户的纵向递归

    /**获取基准数据 * @param $ids 父id 多个逗号分隔 * @return array */ public function saleBase($ids) { $data=$this-& ...

  2. pyspider爬取数据存入es--2.测试数据库连通性

    写一个简单案例测试能否将数据写入es #!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2017-10-27 08:35:57 ...

  3. Docker学习3-CentOS安装Docker

    CentOS安装:Docker-ce ( Docker Community Edition ) 第一步:$ sudo yum install -y yum-utils device-mapper-pe ...

  4. 1.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——编辑命令

    在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...

  5. WFP loading 窗口显示 SplashScreen

    public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { Spl ...

  6. 20155235 《网络攻防》 实验九 Web安全基础

    20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

  7. [agc011C]Squared Graph-[二分图]

    Description 传送门 Solution 我们以下考虑的情况都是原图中非孤立的点. 题目要求新图的连通块个数.这个不好算,我们考虑计算新图的联通块内的特征点(x,y),即无法通过移动找到(t, ...

  8. Wannafly挑战赛26-F-msc的棋盘[最小割转化dp]

    题意 一个大小为 \(n*m\) 的棋盘,知道每一列放了多少棋子,求有多少摆放方案满足要求. \(n,m\leq 50\) . 分析 如果是求是否有方案的话可以考虑网络流,行列连边,列容量为 \(b_ ...

  9. MyBatis的一级缓存和二级缓存简介笔记

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  10. nginx 新增域名访问

    nginx 新增域名访问 1.申请阿里云域名 2.指向阿里云主机 3.配置nginx文件 server { listen 80; server_name zlx.test.com; set $root ...