首先搭建好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(); } } }
相关推荐
5. **代码示例**:描述中提到“本代码可以直接运行,有注释”,这意味着可能有一个完整的Java项目,包含了一个WebService客户端和服务器端。客户端调用服务接口,服务器端返回一个包含泛型List的响应。代码注释将...
本实例中的`GetList`方法返回了一个`List<string>`类型的泛型集合,这意味着该方法返回的是一个字符串列表。 #### JSON和XML数据格式 在Web服务通信中,JSON和XML是最常用的数据格式。XML(可扩展标记语言)是一种...
编写方法时,如果需要用到列表(如List、Map等),记得使用泛型,例如`List<String>`、`List<UserInfo>`、`Map, String>`、`Map, UserInfo>`。 7. **部署与测试** - 完成功能拓展后,无需额外配置,可以直接部署并...
- 注意:如果方法涉及到 List 或 Map 类型的参数,建议使用泛型。 ##### 7. 重新部署并测试 - 在 Tomcat 中重新部署项目。 - 通过浏览器访问 `...
例如,假设我们有一个返回List的WebService方法`getItems()`,可以这样处理结果: ```actionscript service.getItems_result = function(event:ResultEvent):void { var items:ArrayCollection = event.result as...
为了在服务端和客户端之间传递集合,我们需要将集合对象转换为这些格式的字符串,然后在接收端再将其还原为对象。对于XML,可以使用XMLSerializer或DataContractSerializer;对于JSON,可以使用Json.NET或其他类似的...
例如,如果你的.NET Web服务返回一个泛型列表`List<T>`,在Android端你可以创建一个对应的Java类,然后使用如Gson或Jackson这样的库进行反序列化。 例如,假设.NET Web服务返回一个`List<User>`,其中`User`类有`...
- `Service`类是Apache Axis的核心,用于创建一个服务代理,可以理解为与Web服务交互的客户端代理。 - `Call`接口代表一个具体的SOAP调用,通过它设置调用的参数、端点地址、操作名称等。 3. **调用Web服务的步骤...
这些数据类型在客户端以JSON对象的形式呈现,其键值为字母d。例如,当返回一个对象时,可以在jQuery的回调函数中通过`result.d`访问到返回的对象数据。 ### jQuery与WebService结合的实现步骤 1. **编写WebService...
正确的写法应为:`List<T> list = new List();`,其中T是类型参数,例如:`List<string> list = new List();`。 ### 7. 委托与事件的区别 委托是一种引用类型,可以存储对函数的引用,进而调用该函数。它是实现回...
`List`、`Set`、`Map`都是`Collection`接口的扩展,分别用于有序列表、无重复元素集和键值对映射。 #### 25. MVC设计模式解析 MVC(Model-View-Controller)将应用程序分为模型(数据)、视图(界面)和控制器...
处理结果集。 6. 关闭连接。 #### 11. 实现排序和比较 - **排序算法**:如冒泡排序、快速排序等。 - **比较接口**:实现`Comparable`接口或使用`Comparator`。 #### 12. JSP中动态INCLUDE与静态INCLUDE的区别 ...
26.2.1 WebService页面指令946 26.2.2 查看Web服务的 基类文件946 26.2.3 把定制的数据集 显示为SOAP948 26.2.4 XML Web服务接口950 26.3 使用简单的XML Web服务953 26.3.1 添加Web引用953 26.3.2 在客户应用...
12.2.3 多个活动的结果集(MARS) 388 12.2.4 命令的异步执行 394 12.2.5 异步连接 415 12.3 小结 416 第13章 使用XML 417 13.1 XML基础 417 13.1.1 XML InfoSet 419 13.1.2 XSD/XML模式定义 420 13.1.3 在...
- 注意 `ArrayList` 类型已不再推荐使用,建议使用泛型集合如 `List<T>` 来替代,这样类型安全性更高,性能也更好。 ##### 4. 字符串与 StringBuilder - **区别**:字符串(`string`)在.NET中是不可变的,这意味...
113 <br>5.6 其他应用技巧 114 <br>0189 如何判断年份是否为闰年 114 <br>0190 如何根据年份判断十二生肖 114 <br>0191 如何根据IP地址获取本机域名 115 <br>0192 如何获取“我的文档”系统...
- **泛型**:理解泛型的概念及其在实际编程中的应用。 - **Attribute**:学习如何使用特性来增强代码的元数据信息。 - **委托**:掌握委托的基本概念及如何使用事件。 - **匿名方法**:介绍匿名方法的使用场景。...
- **泛型**:使用泛型来编写类型安全的代码。 - **注解**:了解注解的作用和使用方法。 - **自动装箱和拆箱**:掌握基本类型和包装类型的自动转换。 - **枚举类**:学习如何定义和使用枚举类型。 - **可变参数与返回...