Java学习之路-Hessian学习
Hessian是基于HTTP的轻量级远程服务解决方案,Hessian像Rmi一样,使用二进制消息进行客户端和服务器端交互。但与其他二进制远程调用技术(例如Rmi)不同的是,它的二进制消息可以移植其他非Java的语言中。
一、创建Hessian程序的4个步骤
1、定义一个远程接口的接口。
2、定义一个实现该接口的类。
3、在web.xml中定义导出Hessian服务需要的信息。
4、编写客户端访问代码。
二、程序的具体实现
一、首先我们先创建Web项目,并新建一个实体类,这个类需要实现Serializable接口。
package entity;
import java.io.Serializable;
public class Book implements Serializable {
private String name;
private double price;
public String getName() {
return name;
8 }
9 public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
二、创建一个接口
package service;
import java.util.List;
import entity.Book;
public interface BookService {
List<Book> getList();
}
三、创建一个类实现步骤二中的接口,并且这个类需要继承HessianServlet类(这里需要Hessian的jar文件可以到这个网站下载http://hessian.caucho.com/#Java)
package service.impl;
import java.util.ArrayList;
import java.util.List;
import service.BookService;
import com.caucho.hessian.server.HessianServlet;
import entity.Book;
public class BookServiceImpl extends HessianServlet implements BookService {
public List<Book> getList() {
List<Book> list=new ArrayList<Book>();
Book b1=new Book();
b1.setName("《信息简史》");
b1.setPrice(56);
Book b2=new Book();
b2.setName("《黑客与画家》");
b2.setPrice(48);
list.add(b1);
list.add(b2);
return list;
} }
四、到WEB-INF下的web.xml中配置信息
<servlet>
<servlet-name>book</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-api</param-name>
<param-value>service.BookService</param-value>
</init-param>
<init-param>
<param-name>home-class</param-name>
<param-value>service.impl.BookServiceImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>book</servlet-name>
<url-pattern>/book</url-pattern>
</servlet-mapping>
配置好之后,部署项目到Tomcat服务器,并启动服务。
五、编写客户访问代码
package test;
import java.util.List;
import service.BookService;
import com.caucho.hessian.client.HessianProxyFactory;
import entity.Book;
public class Test {
public static void main(String[] args) {
String url="http://127.0.0.1:8080/test/book";
HessianProxyFactory factory=new HessianProxyFactory();
try {
BookService bookService=(BookService) factory.create(BookService.class, url);
List<Book> list = bookService.getList();
for (Book book : list) {
System.out.println(book.getName()+",定价为:"+book.getPrice()+"元。");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行代码,控制台显示结果为
===========控制台============
《信息简史》,定价为:56.0元。
《黑客与画家》,定价为:48.0元。
=============================
接下来我们来讲一下Spring整合Hessian
Spring整合Hessian
注意事项:
Hassian 3.2.0采用了新的Hassian 2协议,而Spring2.5.6 只支持Hassian 1协议,所以spring 2.5.6所能支持的最大版本为Hassian 3.1.6,最好使用spring 2.5.6附带的版本Hassian 3.1.3,而对Hassian 2的支持,需要 Spring 3.0。
一、首先我们创建一个接口
package service;
import java.util.List;
import entity.Book;
public interface BookService {
List<Book> getList();
}
二、编写一个类,只需实现步骤一中的接口
package service.impl;
import java.util.ArrayList;
import java.util.List;
import service.BookService;
import entity.Book;
public class BookServiceImpl implements BookService {
public List<Book> getList() {
List<Book> list=new ArrayList<Book>();
Book b1=new Book();
b1.setName("《信息简史》");
b1.setPrice(56);
Book b2=new Book();
b2.setName("《黑客与画家》");
b2.setPrice(48);
list.add(b1);
list.add(b2);
return list;
}
}
三、我们在WEB-INF下的web.xml中配置SpringMVC需要的信息(spring整合hessian需要用到SpringMVC)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
四、在applicationContext.xml配置bean信息
<bean id="bookService" class="service.impl.BookServiceImpl"></bean> <bean id="BookService"
class="org.springframework.remoting.caucho.HessianServiceExporter"
p:service-ref="bookService"
p:serviceInterface="service.BookService"
/>
五、现在WEB-INF目录下新建springmvc-servlet.xml文件,并配置一下。(可以把applicationContext.xml拷到目录下改一下名字)
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/book">BookService</prop>
</props>
</property>
</bean>
六、接下我们应该在客户端程序applicationContext.xml中配置获取服务的bean信息(我这里是在同一个applicationContext.xml文件中编写,但不影响测试功能)
<bean id="getBookService"
class="org.springframework.remoting.caucho.HessianProxyFactoryBean"
p:serviceUrl="http://127.0.0.1:8080/test/book"
p:serviceInterface="service.BookService"
/>
七、现在我们编写一下测试代码,在运行下面代码之前需要把项目部署到Tomcat中,并运行Tomcat
package test;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.BookService;
import entity.Book;
public class Test {
public static void main(String[] args) {
ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService=(BookService) cxt.getBean("getBookService");
List<Book> list = bookService.getList();
for (Book book : list) {
System.out.println(book.getName()+",定价为:"+book.getPrice()+"元。");
}
} }
运行代码,控制台显示结果为
===========控制台============
《信息简史》,定价为:56.0元。
《黑客与画家》,定价为:48.0元。
=============================
到这里我们已经学习spring和怎么整合hessian了。
Java学习之路-Hessian学习的更多相关文章
- 《Hadoop学习之路》学习实践
(实践机器:blog-bench) 本文用作博文<Hadoop学习之路>实践过程中遇到的问题记录. 本文所学习的博文为博主“扎心了,老铁” 博文记录.参考链接https://www.cnb ...
- Java学习之路-Burlap学习
今天我们来学一下Burlap. Burlap是一种基于XML远程调用技术,但与其他基于XML的远程技术(例如SOAP或者XML-RPC)不同,Burlap的消息结构尽可能的简单,不需要额外的外部定义语 ...
- (转)java web 学习之路(学习顺序)
第一步:学习HTML和CSS HTML(超文本标记语言)是网页的核心,学好HTML是成为Web开发人员的基本条件.HTML很容易学习的,但也很容易误用,要学精还得费点功夫. 随着HTML5的发展和普及 ...
- Java学习之路-RMI学习
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...
- 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]
这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...
- 《Hadoop学习之路》学习实践二——配置idea远程调试hadoop
背景:在上篇文章中按照大神“扎心了老铁”的博客,在服务器上搭建了hadoop的伪分布式环境.大神的博客上是使用eclipse来调试,但是我入门以来一直用的是idea,eclipse已经不习惯,于是便摸 ...
- Linux学习之路--shell学习
shell基础知识 什么是Shell Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
随机推荐
- vs code 快捷键中英文对照
常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick O ...
- x-www-form-urlencoded与multipart/form-data区别
转载声明: http://blog.chinaunix.net/uid-7210505-id-329700.html 在Flex中,UrlRequest中的contentType默认值为 applic ...
- PowerDesigner数据库设计PDM基于Excel的导入导出总结
经常用到pdm来管理代码,一两张表,手写一下还凑合,一旦表多了,就慌了.于是,开始学习用vbs进行Excel的来快速导入导出操作PDM就变得很紧急了,搜罗了网络上的很多vbs脚本,各有各的优点,但对于 ...
- spring boot与kafka
1.项目搭建 2.关键代码与配置 3.性能调优 注意,本项目基于spring boot 1,如果是spring boot 2有可能会报错.相应的包需要更新 1.项目搭建 kafka版本:kafka_2 ...
- Mysql获取最大自增ID(auto_increment)的五种方式及其特点
在关系型数据库的表结构中,一般情况下,都会定义一个具有‘AUTO_INCREMENT’扩展属性的‘ID’字段,以确保数据表的每一条记录都有一个唯一标识. 而实际应用中,获取到最近最大的ID值是必修课之 ...
- IP地址在mysql的存储(IP地址和int的转换)
PHP echo ip2long('192.168.1.38'); 输出:3232235814 MYSQL SELECT INET_ATON('192.168.1.38'); 输出:323223581 ...
- unity 5.3 以后加载场景
记录下官方建议的加载场景的方法: StartCoroutine(LoadYourAsyncScene()); IEnumerator LoadYourAsyncScene() { // The App ...
- 基于Schema配置切面
使用基于Schema的切面定义后,切点.增强类型的注解信息从切面类中剥离出来,原来的切面类也就蜕变为真正意义上的POJO了. 1.一个简单切面的配置 基于Schema配置的切面示例: < ...
- J - Network of Schools
来源poj1236 A number of schools are connected to a computer network. Agreements have been developed am ...
- 6.1 Pandora 实操 - 数据收集
添加机器 添加机器命令,在 linux 机器上执行此命令 添加成功 添加收集器 采集机器数据 解析数据 转换数据 发送数据 接着,下一步即,成功创建收集任务. 分发机器 确认收集人物,绑定到机器上. ...