Hessian学习/使用总结
来源:百度文库 编辑:神马文学网 时间:2024/04/30 03:47:24
前阵子头儿让写一个webservice。说真的以前没有写过,还真是摸不着头脑。后来头儿就把hessian的地址给发了过来。给我指了一个方向。再学习2天后基本把项目要求的实现出来了。对于这种轻量级的东西还是很好学习也很容易上手的。 其实刚看到的时候也是自己先上网找了很多篇别人的学习笔记。基本写的都差不多,不过挺通俗易懂的。后来看官网的例子发现其实也很容易懂。 官方地址:http://hessian.caucho.com/ 下载的jar包也在这里。我使用的是hessian-3.2.0-src.jar。事实证明3.1.5和3.1.6都有很多的bug不推荐使用。 其实hessian很强大,但是我用的时候只用到了它很少的一部分功能,所以我也就说说这点吧。 还是先定义一个供客户端和服务器端使用的接口,里边放上应用需要的方法。---------------------------------------------------------------------------------------------------------- public interface IBasic { //返回用户的姓名,为了测试返回字符串 public String getUserName(); //返回一个用户的对象,用来测试返回对象 public User getUserInfo(); //添加新用户 public boolean AddUser(User u); }---------------------------------------------------------------------------------------------------------- 至于User就是一个标准的JAVABEAN。这里需要注意的一点是。因为在远程调用过程中两边都需要用到这个bean。所以这个bean一定要保持一样。继承序列的时候最好都一样的号。 然后来说一下服务器端的程序。这里要实现所有接口中的方法。---------------------------------------------------------------------------------------------------------- public class BasicService implements IBasic { //根据自己的逻辑来返回一个字符串给客户端 public String getUesrName() { String name = "hanxiaoyue"; return name; } //这里就可以获取一个User然后返回给客户端 public User getUserInfo() { User u = new User(); u.setUsername("hanxiaoyue"); u.setAge(22); return u; } //这里就可以通过用户传递过来的参数来进行操作 public boolean AddUser(User u) { String name = u.getUsername(); boolean res = false; if(name != null && !name.equals("")) { res = true; } return res; } }---------------------------------------------------------------------------------------------------------- ok,服务器端写好后就是客户端了。如果想在服务器端测试的话就写一个测试类就ok。其实跟在客户端唯一不同的就是地址不一样。---------------------------------------------------------------------------------------------------------- public class BasicClient { public static void main() throw Exception { //这里的端口号貌似是必须加上的。我当时加上就报错了。后边的TestHessian是项目名称。test/usertest就是servlet的名字了。在后边xml里配置一下就ok。 String url = http://localhost:80/TestHessian/test/usertest; HessianProxyFactory factory = new HessianProxyFactory(); //通过这里构建一个hessian的代理工厂来根据url和接口的类来返回给客户端。客户端就可以使用接口中定义的这些方法了。 IBasic basic = (IBasic)factory.create(IBasic.class,url); User u = basic.getUserInfo(); User u2 = new User(); u2.setUsername("hanxiaoyue"); boolean res = basic.AddUser(u2); String username = basic.getUserName(); } }---------------------------------------------------------------------------------------------------------- 最后我们来说说在web.xml里是如何配置的。其实很简单。---------------------------------------------------------------------------------------------------------- usertest com.caucho.hessian.server.HessianServlet home-class study.hessian.BasicService home-api study.hessian.IBasic usertest /test/usertest ---------------------------------------------------------------------------------------------------------- ok,到这里基本一套流程就都下来了。其实在实际用的时候比这个稍微复杂了一点。但是大概的流程都是一样的。这里特别要说的就是之前提到的3.1.5和3.1.6的bug。我发现的最严重的一个就是这两个版本在返回对象时候会出现异常。而且目前无法解决。所以选择了使用bug修改过后的3.2.0。网上很多关于hessian的文章没有提到这个事情是因为那些文章比较早,写的时候3.1.5和3.1.6都没有出来。 目前项目中使用hessian的部分还是比较稳定的。以后有新的总结会及时更新。 补充:---------------------------------------------------------------------------------------------------------- 2008-10-17为什么服务器端是List对象,到了客户端就是hashmap了呢?????
原因:我的list在上传前保存的是对象,经测试也不是map型,但到服务端从list获取的变成了map型,经分析是因为目录结构的原因,如果客户端和服务器端package的名字不一样的话,就会造成服务端反序列化时出现问题。所以在使用List的时候一定要让bean的package的名称在客户端和服务器端是一致的。
原因:我的list在上传前保存的是对象,经测试也不是map型,但到服务端从list获取的变成了map型,经分析是因为目录结构的原因,如果客户端和服务器端package的名字不一样的话,就会造成服务端反序列化时出现问题。所以在使用List的时候一定要让bean的package的名称在客户端和服务器端是一致的。
Hessian学习/使用总结
Hessian学习/使用总结
Hessian入门学习-1
Hessian 学习笔记
PHP学习使用资源简单总结
PHP学习使用资源简单总结
CSDN技术中心 PHP学习使用资源简单总结
CSDN技术中心 PHP学习使用资源简单总结
总结 GdiObject::DeleteObject()的使用 - TobyLin的学习之...
Vista新手学习: Vista初级使用技巧及故障总结
WORD使用技巧总结
powerpoint使用技巧总结
ppt幻灯片使用总结
TTS 使用总结
linux学习笔记总结
党课学习总结
小组学习总结
WebService学习,开发总结
我的学习总结
党课学习总结
小组合作学习总结
计算机编码学习总结
太阴病学习总结
宝宝 javaweb 学习总结