hessian

Java拾遗:004

为君一笑 提交于 2019-12-09 16:39:45
JDK序列化 在分布式架构中,序列化是分布式的基础构成之一,我们需要把单台设备上的数据通过序列化(编码、压缩)后通过网络传输给网络中的其它设备,从而实现信息交换。 JDK对Java中的对象序列化提供了支持,原生的Java序列化要求序列化的类必须实现 java.io.Serializable 接口,该接口是一个标记接口(不包含任何方法)。 下面定义一个POJO类(仅用于演示,没有任何实际意义),它将被序列化和反序列化 public class Data implements Serializable { private Integer a; private Long b; private Float c; private Double d; private Boolean e; private Character f; private Byte g; private Short h; private int a0; private long b0; private float c0; private double d0; private boolean e0; private char f0; private byte g0; private short h0; private String i; private Date j; // getter / setter ... }

dubbo所用到的技术

天涯浪子 提交于 2019-12-09 00:27:29
服务注册:zookeeper 协议:dubbo Hessian Rmi 网络编程:netty 动态代理:jdk和Javassist 序列化:Hessian Dubbo Json Java Service Provider Interface: JDK 标准的 SPI (Service Provider Interface) 扩展点 从这些依赖可以看出所用的技术栈: netty-all 4.0.35.Final mina: 1.1.7 grizzly: 2.1.4 httpclient: 4.5.3 hessian_lite: 3.2.1-fixed fastjson: 1.2.31 zookeeper: 3.4.9 jedis: 2.9.0 xmemcached: 1.3.6 hessian: 4.0.38 jetty: 6.1.26 hibernate-validator: 5.4.1.Final zkclient: 0.2 curator: 2.12.0 cxf: 3.0.14 thrift: 0.8.0 servlet: 3.0 [5] validation-api: 1.1.0.GA [5:1] jcache: 1.0.0 [5:2] javax.el: 3.0.1-b08 [5:3] kryo: 4.0.1 kryo-serializers: 0.42 fst: 2.48

简单的Hessian接口开发实例

China☆狼群 提交于 2019-12-07 16:40:04
需要的jar包 ‍ ‍ hessian-4.0.7.jar ‍ ‍ #客户端 接口 package com.test; public interface Printer { public String print(String a); public String say(); } 2.实现该接口 package com.test; public class PrinterService implements Printer { public String print(String a) { return a; } public String say() { return "nihao"; } } 3.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>aaa</servlet-name> <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> <init

HessianConnectionException: (HTTP) 500 error when using Hessian 4.0.7 & Spring 3.1.1

眉间皱痕 提交于 2019-12-07 10:55:15
问题 Ok, can't figure this one out at all! I'm using Spring 3.1.1 and Hessian 4.0.7 deploying into Tomcat 6.0.29 I've created a simple Hessian remote interface but my test keeps failing with; Exception in thread "main" com.caucho.hessian.client.HessianConnectionException: 500: java.io.IOException: Server returned HTTP response code: 500 for URL: http://localhost:8080/client/remote/RemoteService at com.caucho.hessian.client.HessianURLConnection.sendRequest(HessianURLConnection.java:142) at com

writing hessian service

帅比萌擦擦* 提交于 2019-12-07 10:43:34
问题 I am new to Spring and Hessian and never used them before. I want to write a small Hello World Program which clearly shows how this service works. I am using Maven for list project details and dependencies. The resources for hessian available online are not complete step-by-step guide. would appreciate if I get help form someone who has worked writing hessian services 回答1: The steps for implementing a Hessian-callable service are: Create a Java interface defining methods to be called by

Testing Hessian remoting-servlet.xml

大兔子大兔子 提交于 2019-12-07 08:13:23
问题 We are using Hessian for communication between a rich client and a server. Due to moving and renaming it happens from time to time that the entries in the remoting-servlet.xml don't match the actual class names. Therefor I'm looking for an easy way to test the remoting xml. Is there an easy way to do that? Preferable without manually parsing the xml and trying to instantiate all classes mentioned in there. 回答1: We now create a Spring BeanFactory in a test: private final BeanFactory factory =

序列化协议Hessian使用实例

主宰稳场 提交于 2019-12-07 03:23:52
Hessian 是一个序列化协议, 他的优点在于比 Java 原生的对象序列化/反序列化速度更快, 序列化出来以后的数据更小. 序列化协议跟应用层协议无关, 可以将 Hessian 序列化以后的数据放在 HTTP Body 里, 也可以放在 DUBBO 里, 或者直接用 Socket 传输 下面是一个使用 Hessian 实现的 Hessian web service 的例子 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>hessian-test</groupId> <artifactId>hessian-test</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>hessian-test Maven Webapp<

java中两种常见的序列化方式

感情迁移 提交于 2019-12-07 03:23:41
在远程调用中,需要把参数和返回值通过网络传输,这个使用就要用到序列化将对象转变成字节流,从一端到另一端之后再反序列化回来变成对象。 既然前面有一篇提到了hessian,这里就简单讲讲Java序列化和hessian序列化的区别。 首先,hessian序列化比Java序列化高效很多,而且生成的字节流也要短很多。但相对来说没有Java序列化可靠,而且也不如Java序列化支持的全面。而之所以会出现这样的区别,则要从它们的实现方式来看。 先说Java序列化,具体工作原理就不说了,Java序列化会把要序列化的对象类的元数据和业务数据全部序列化从字节流,而且是把整个继承关系上的东西全部序列化了。它序列化出来的字节流是对那个对象结构到内容的完全描述,包含所有的信息,因此效率较低而且字节流比较大。但是由于确实是序列化了所有内容,所以可以说什么都可以传输,因此也更可用和可靠。 而hessian序列化,它的实现机制是着重于数据,附带简单的类型信息的方法。就像Integer a = 1,hessian会序列化成I 1这样的流,I表示int or Integer,1就是数据内容。而对于复杂对象,通过Java的反射机制,hessian把对象所有的属性当成一个Map来序列化,产生类似M className propertyName1 I 1 propertyName S stringValue(大概如此

hessian BigDecimal反序列化异常

会有一股神秘感。 提交于 2019-12-06 13:00:09
用hessian时BigDecimal反序列化时有的版本报上述异常如hessian4.0.7,有的版本反序列化结果是0,原因是服务端和客户端没有加序列化和反序列化配置,在服务提供方jar包里加上hessian的配置就可以了,如下: deserializers文件内容: java.math.BigDecimal=com.caucho.hessian.io.BigDecimalDeserializer java.sql.Date=com.caucho.hessian.io.SqlDateDeserializer java.util.Date=com.caucho.hessian.io.DateDeserializer serializers文件内容: java.math.BigDecimal=com.caucho.hessian.io.StringValueSerializer java.sql.Date=com.caucho.hessian.io.SqlDateSerializer java.util.Date=com.caucho.hessian.io.DateSerializer 来源: oschina 链接: https://my.oschina.net/u/959/blog/519173

Dubbo 支持哪些序列化协议?

蓝咒 提交于 2019-12-06 12:59:56
面试题 dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的? 面试官心理分析 上一个问题,说说 dubbo 的基本工作原理,那是你必须知道的,至少要知道 dubbo 分成哪些层,然后平时怎么发起 rpc 请求的,注册、发现、调用,这些是基本的。 接着就可以针对底层进行深入的问问了,比如第一步就可以先问问序列化协议这块,就是平时 RPC 的时候怎么走的? 面试题剖析 序列化 ,就是把数据结构或者是一些对象,转换为二进制串的过程,而 反序列化 是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。 dubbo 支持不同的通信协议 dubbo 协议 默认 就是走 dubbo 协议,单一长连接,进行的是 NIO 异步通信,基于 hessian 作为序列化协议。使用的场景是:传输数据量小(每次请求在 100kb 以内),但是并发量很高。 为了要支持高并发场景,一般是服务提供者就几台机器,但是服务消费者有上百台,可能每天调用量达到上亿次!此时用长连接是最合适的,就是跟每个服务消费者维持一个长连接就可以,可能总共就 100 个连接。然后后面直接基于长连接 NIO 异步通信,可以支撑高并发请求。 长连接,通俗点说,就是建立连接过后可以持续发送请求,无须再建立连接。 而短连接,每次要发送请求之前