以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 ...
随机推荐
- Spring-AOP SpringBoot自动配置和启动Spring AOP
SpringBoot 会使用 @Conditional* 注解来进行判断是否需要自动启动 AOP,如果 classpath 下有 spring-aop 的 jar 和有 EnableAspectJAu ...
- vagrant up下载box慢的解决办法
即在运行vagrant up时得到其的下载路径,如: https://vagrantcloud.com/ubuntu/boxes/xenial64/versions/20190101.0.0/prov ...
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...
- 利用ngx_python模块嵌入到Python脚本
导读 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...
- 原生js switch语句
一.我们在流判断的时候,我们大多数的情况我使用if else 语句.但是对于一些大量的逻辑的判断的时候,我们不建议使用if elseif语句 这种语句的效率执行不高,因为他每个expression ...
- JavaScript模块化思想之入门篇
在写正文之前先写一点废话,从我大三下学期正式接触前端到现在,已经六个月了.自己从HTML,CSS,简单的JS验证开始,一点点开始走入前端的世界.越发的感觉前端这一领域散发着无穷的魅力,也许这和我真心喜 ...
- Hadoop集群nodes unhealthy解决方法
在搭建好Hadoop集群之后,所有服务均可正常启动,但是在运行MapReduce程序的时候,发现任务卡在7/09/07 22:28:14 INFO mapreduce.Job: Running job ...
- sql语句之随机查询记录和批量插入--基于mysql
本周遇到了好几次数据库方面的问题,一个是上一篇文章提到的因为要修改数据结构引起的在表间复制字段的需求,另一个就是这篇文章要写的:1,从某个数据表中按照某个字段不重复的随机选取几百条记录:2,然后把这些 ...
- MFC如何为程序添加图标
1.找几幅Ico格式的图片,可以在电脑中查找.ico一般都会找到.然后将ico文件放在工程目录下的res文件夹下. 2.点击菜单栏->编辑->添加资源->导入,选择res文件夹中将要 ...
- python基础学习1-变量定义赋值,屏幕输入输出
一.变量定义赋值 输入输出屏幕显示 : name = input("input is your name") age =int( input("input is your ...