- 浏览: 189580 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
syzyaccp:
其实也可以用下面的转译,就是xml的特殊符号,因为它的配置就是 ...
ibatis如何写小于等于 -
zjx158:
感谢楼主分享
flex air + java -
damoguying518:
楼主,麻烦问一下,关于第四个描述,我现在也不想要节点的双击效果 ...
Birdeye 中文支持 -
zhousheng_quiz:
写类似的构造边的类
Birdeye 中文支持 -
pangxin12345:
代理方式, 只要域配置文件为*就可以了!
Flex 沙箱问题解决与安全问题的全面解析
1.Hessian 介绍
Hessian 是一个轻量级的remoting on http 工具,使用简单的方法提供了RMI (Remote Method Invocation ,远程方法调用)的功能。采用的是二进制RPC (Remote Procedure Call Protocol ,远程过程调用协议)协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。它提供web 服务就像创建Servlet 一样简单. 使用服务就像使用JDK 代理接口一样简单。
hessian
类似于
Webservice
,但是它不使用
soap
协议,它把协议报文封装到
http
封包中,通过
HTTP
信道传输。是一种高效简洁的远程调用框架,它采用的是二进制
RPC
协议(
Binary
),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。
Hessian
是通过
servlet
提供远程服务,完全使用动态代理来实现的
,
推荐采用面向接口编程,因此,
Hessian
服务建议通过接口暴露。
hessian
已经支持
Java
,
Flash/Flex
,
Python
,
C++
,
.NET C#
,
D
,
Erlang
,
PHP
,
Ruby
,
Objective C
。它不需要我们与
xml“
打交道
”
,直接操作对象,省去了很多麻烦。
缺点
:
如果
service
层中返回的对象是复杂对象
,
使用它就会削弱
Hessian
的传输量小的优点,而且也会增加
Hessian
客户端的代码
量。既然它是把对象序列化为二进制流的形式在
http
信道中传输,那么对于安全性高的应用不应该采用
hessian(
比如网上支付等
)
、
2.Hessian-Demo
初步感受一个hessian 的运行.
1.Java 服务器端:环境:jdk1.6,Tomcat6.0 依赖的包:hessian-3.0.20.jar
<1>. 新建一个名为HessianServer 的web project 。将hessian-3.0.20.jar 放入WEB-INF/lib 文件夹中。
<2>. 接口:
package jay.demo.hessian.server; import jay.demo.User; public interface MyService { public void setName(String name); public String sayHello(); public User getUser(); }
<3>. 实现类:
package jay.demo.hessian.server.impl; import jay.demo.User; import jay.demo.hessian.server.MyService; public class MyServiceImpl implements MyService { private String name; public String sayHello() { return "Hello "+name; } public void setName(String name) { this.name=name; System.out.println("Hello "+name); } public User getUser() { return new User("Jay", "123456"); } }
<4>.创建User类,注意:一定要implements Serializable.
package jay.demo; import java.io.Serializable; public class User implements Serializable { String name = "server-jay"; String password = "server-pwd"; public User() {} public User(String name, String password) { super(); this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
<5>.配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>first</servlet-name> <servlet-class> com.caucho.hessian.server.HessianServlet </servlet-class> <init-param> <param-name>service-class</param-name> <param-value> jay.demo.hessian.server.impl.MyServiceImpl </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
将项目发布到tomcat服务器上
2. Java客户端:环境:jdk1.6,Tomcat6.0 依赖的包:hessian-3.0.20.jar
<1>.创建一个名为HessianClient的java project,导入hessian-3.0.20.jar。
<2>.创建与服务器一样的接口及User类,注意它们所在的包路径也要与服务器相同,否则会出现java.lang.ClassNotFoundException。
<3>.客户端:
package jay.client; import java.net.MalformedURLException; import jay.demo.hessian.server.MyService; import com.caucho.hessian.client.HessianProxyFactory; /** * * @author Jay.Sun 2010.10.12 * */ public class clientTest { public static void main(String[] args) throws MalformedURLException, ClassNotFoundException { String url = "http://localhost:8080/HessianServer/helloworld"; //String url = "http://localhost:8080/HessianServer/remote/helloSpring"; HessianProxyFactory factory = new HessianProxyFactory(); //MyService myservice = (MyService) factory.create(url); MyService myservice = (MyService) factory.create(MyService.class,url); myservice.setName("JaySun-test"); System.out.println(myservice.sayHello()); System.out.println(myservice.getUser().getName()); System.out.println(myservice.getUser().getPassword()); } }
启动tomcat,运行ClientTest。运行结果:
Hello JaySun-test
Jay
123456
后续加上整合Spring,今天先写到这里
- lib.rar (2.8 MB)
- 下载次数: 17
发表评论
-
反射获取泛型类型
2015-10-09 17:06 719Method app = T ... -
JAVA nio 学习笔记
2013-03-08 16:27 1009闲着没事学习了一下nio ... -
Hibernate2.1升级到Hibernate3.0
2012-12-04 15:36 1256Hibernate2.1升级到Hibernate3.0 ... -
split方法和转义字符
2012-04-11 15:59 1385public class split { publi ... -
网页变灰
2011-04-26 17:19 729body,td,tr,img,div,a,h1,h2,h3 ... -
四舍五入代码
2011-04-25 11:11 1172public static double seanRound ... -
Vector使用常见错误
2011-04-12 15:54 1209java.lang.ArrayIndexOutOfBounds ... -
经常用到的时间处理方法(java)
2011-03-17 09:36 908/** 日期类 * @date * @ver ... -
Spring 学习笔记
2010-04-16 18:05 1020所谓控制反转就是应用 ... -
arrayList 去重复
2010-03-23 09:31 2264去掉重复基本代码 public ArrayList diff ... -
jdbc 连接数据库
2010-03-10 08:57 987Java数据库连接(JDBC)由一组用 Java 编程语言编写 ... -
java反射笔记
2010-03-03 15:47 1032package com.tjpu.helen.test; i ... -
java调用Exe文件
2010-03-03 14:00 1322package com.tjpu.helen.test; p ... -
java SE5 新特性
2009-12-22 22:39 8921、静态导入:import static java.lan ... -
action跳iframe 超防Ajax
2009-12-22 22:36 2265说一下思路: 在页面中定义一个<iframe name ... -
单体模式
2009-12-22 22:25 851//看到了写下来! 备忘用滴 public class Si ... -
EL表达式截取字符串
2009-12-22 22:21 55935<%@ taglib prefix="fn&q ... -
java&windows斜杠问题
2009-12-22 21:38 886今天,遇到点问题。于是想学p处理。在p处理时候总是写错。 ... -
再学j2se新体会
2009-12-22 21:31 889容器:这个在spring中很重要,我们写的对象如何rem ...
相关推荐
在“Flex + Hessian 学习笔记(二)”中,我们可能涉及以下知识点: 1. **Flex应用的架构**:Flex应用通常包含三层结构:表现层(Presentation)、业务逻辑层(Business Logic)和数据访问层(Data Access)。Hessian...
**WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...
Hessian学习笔记 Hessian是一种基于Binary-RPC协议实现的远程通讯library,由Caucho提供。下面是Hessian的学习笔记: 一、简介 Hessian是基于Binary-RPC协议实现的远程通讯library,用于实现远程过程调用(RPC)...
Flex + Hessian 学习笔记(一) http://wangcheng.javaeye.com/blog/141382 Flex + Hessian 学习笔记(二) http://wangcheng.javaeye.com/blog/141539 Flex + Hessian 学习笔记(三) ...
【标题】:“Hessian笔记”主要探讨的是Hessian这一技术在IT领域的应用,尤其是与源码和工具相关的知识。Hessian是一种二进制的Remoting...这些资料对于学习和掌握Hessian技术,提升分布式系统开发能力具有很高的价值。
SSH的学习笔记通常涵盖以下几个主要方面: 1. **安装与配置**:在不同的操作系统(如Linux、macOS或Windows)上安装SSH客户端和服务端软件,例如OpenSSH。配置SSH服务,包括修改`sshd_config`文件以设置端口号、...
本篇文章将深入探讨“java后端学习笔记”中的关键知识点,包括消息队列(Message Queuing)服务如ActiveMQ和RabbitMQ、工作流引擎Activity、容器化技术Docker、分布式服务框架Dubbo、网络库Netty、RPC(Remote ...
在本篇深度学习笔记中,我们主要总结了Momentum、RMSProp和Adam三种优化方法,同时简要介绍了病态曲率和牛顿法等概念。 #### 病态曲率 在优化过程中,我们会遇到病态曲率的问题,它指的是损失曲面上某个区域沿某个...
深蓝学院的数值优化学习笔记提供了深入理解和掌握这一主题的关键资源。数值优化是寻找函数最小值或最大值的数学方法,它在路径规划中起到核心作用,帮助找到从起点到终点的最短或最优路径。 首先,我们要理解什么是...
根据提供的文件信息,华东师范大学陆吾生教授的讲义笔记主要围绕最优化理论和相关算法,...通过这门课程,学生们可以学习到最优化问题的理论基础和多种求解策略,为解决实际工程和科研中的最优化问题打下坚实的基础。
根据所提供的文件信息,该份文档是一份机器学习的笔记,涵盖了众多机器学习领域的基本概念和技术。下面,我们将详细解读文件中所提到的机器学习知识点: 1. CS229是斯坦福大学开设的一门机器学习课程编号,由Andrew...
这份深度学习数学笔记主要涵盖了深度学习中常用的数学概念和运算,包括向量、矩阵、张量、线性代数运算、微积分、概率和信息论等基础内容,这些都是理解和实现深度学习模型的关键。 1. 向量、矩阵与张量: - 向量...
《MyDubbo:Dubbo源码学习笔记》 在Java开发领域,Dubbo是一个非常知名的分布式服务框架,它由阿里巴巴开源并广泛应用于大型企业系统。本篇笔记将深入探讨Dubbo的核心概念、工作原理以及源码解析,帮助开发者更好地...
Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)为...学习和理解Spring的这些核心概念,对于提升Java开发技能和优化项目结构至关重要。