以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 ...
随机推荐
- js 判断元素是否在列表中
/** * 使用循环的方式判断一个元素是否存在于一个数组中 * @param {Object} arr 数组 * @param {Object} value 元素值 */ function isInA ...
- 动态显示checkbox选中条数
<script> $('input[type=checkbox]').click( function () { $('span#cheak_len').empty(); var len = ...
- python 通过shutil实现文件后缀名判断及复制
In [18]: for file in os.listdir('.'): ...: if os.path.splitext(file)[1] == '.html': ...: print(file) ...
- OpenCV——HOG特征检测
API: HOGDescriptor(Size _winSize, ---:窗口大小,即检测的范围大小,前面的64*128 Size _blockSize,--- 前面的2*2的cell,即cell的 ...
- 七,ESP8266-UDP(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7533302.html 那天朋友问我为什么有UDP Sever 和 UDP Client ,,我说:每个人想的不一样,设 ...
- lucas定理的证明
http://baike.baidu.com/link?url=jJgkOWPSRMobN7Zk4kIrQAri8m0APxcxP9d-C6qSkIuembQekeRwUoEoBd6bwdidmoCR ...
- 【LeetCode234】Palindrome Linked List★
题目描述: 解题思路: 判断一个单向链表是否是回文链表,并且要求O(n)的时间复杂度和O(1)的空间复杂度. 方法有以下几种: 1.遍历整个链表,将链表每个节点的值记录在数组中,再判断数组是不是一个回 ...
- 20155218《网络对抗》Exp2 后门原理与实践
20155218<网络对抗>Exp2 后门原理与实践 常用后门工具实践 1.Windows获得Linux Shell: 在Windows下,先使用ipconfig指令查看本机IP,使用nc ...
- MAC下配置ssh让SourceTree通过秘钥访问远程仓库
问题描述 由于TortoiseGit没有MAC版本,我们使用了SourceTree来替代. 在帮同事解决Mac下的Git的时候,碰到一个问题:SourceTree无法使用ssh方式提交代码,这是由于没 ...
- Hadoop开发第3期---Hadoop的伪分布式安装
一.准备工作 1. 远程连接工具的安装 PieTTY 是在PuTTY 基础上开发的,改进了Putty 的用户界面,提供了多语种支持.Putty 作为远程连接linux 的工具,支持SSH 和telne ...