以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(); } } }