以webService为客户端获取List泛型结果集
首先搭建好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泛型结果集的更多相关文章
- 动态生成WebService的客户端
给定了WebService地址和调用接口后动态的生成DLL,第二次再请求时会先判断DLL是否存在,以提高执行效率 核心代码下: /// <summary> /// 动态生成WebServi ...
- 利用wsdl2java工具生成webservice的客户端代码
1.JDK环境 2.下载apache-cxf发布包:http://cxf.apache.org/download.html 目前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME ...
- webservice -- cxf客户端调用axis2服务端
背景: 有个项目, 需要由第三方提供用户信息, 实现用户同步操作, 对方给提供webservice接口(axis2实现)并也使用axis2作主客户端调用我方提供的webservice接口 起初, 由于 ...
- Atitit 动态调用webservice与客户端代理方式调用
Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke 直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...
- nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token
最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...
- 客户端获取服务端自定义类数据 z
客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...
- WCF学习心得--客户端获取服务端自定义类数据
因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...
- webservice axis2客户端设置代理方法(公司网络通过代理访问时)
webservice axis2客户端设置代理方法(公司网络通过代理访问时) UploadProcessInServiceStub stub = new UploadProcessInServic ...
- 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据
这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...
随机推荐
- ATP学姐的模拟赛
ATPの水题大赛 声明:不是我觉得这题水,这就是本场模拟赛的名称. T1:求所有的$n$位数中有几个数满足:每一位要么是$A$要么是$B$,并且这个$n$位数的每一位加起来是$A$或$B$的倍数. $ ...
- Nowcoder 提高组练习赛-R1
https://www.nowcoder.com/acm/contest/172#question 单人报名300元,五人合报免费,于是就和学弟同学学长们组了一个三世同堂的队伍,高一的学长wzhqwq ...
- BZOJ2893:征服王(费用流)
Description 虽然春希将信息传递给了雪菜,但是雪菜却好像完全不认得春希了.心急如焚的春希打开了第二世代机能,对雪菜的脑内芯片进行了直连-hack. 进入到雪菜内部的春希发现(这什么玩意..) ...
- C++的技术探究
C++深究 函数指针 double pam(int, double); // prototype double (*pf)(int, double); // declare function poin ...
- Mac下用户名、计算机名、个人目录名修改
1.修改mac用户名 [系统偏好设置]->[用户与群组]->点开左下方的小锁->解锁后再用户头像右击,进入到高级选项->进行设置即可 2.修改mac计算机名 [系统偏好设置]- ...
- Spring 整合Mybatis实例
演示样例下载地址:http://download.csdn.net/detail/geloin/4506640 本文基于Spring 注解,让Spring跑起来.本文使用Mysql数据库. (1) 导 ...
- Android Studio常用快捷键 - 转
Android Studio常用快捷键 1. Ctrl+D: 集合了复制和粘贴两个操作,如果有选中的部分就复制选中的部分,并在选中部分的后面粘贴出来,如果没有选中的部分,就复制光标所在的行,并在此行的 ...
- 20155216 Exp4 恶意代码分析
20155216 Exp4 恶意代码分析 实践内容 使用schtasks指令监控系统运行 先在C盘目录下建立一个netstatlog.bat文件和netstatlog.txt文件,将记录的联网结果格式 ...
- 20155232《网络对抗》Exp5 MSF基础应用
20155232<网络对抗>Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode. exploit:就是利用可能存在的漏洞对目标进行攻击 ...
- POJ 3349&&3274&&2151&&1840&&2002&&2503
(今天兴致大发学了Markdown,第一篇博客) 这次的主要都是hash的题目(当然这就意味这可以用map) hash的方式也有很多: 普通hash hash挂链 双hash以及自然溢出等 当然我还是 ...