Hessian知识学习总结(二)——Hessian的helloworld
一、下载Hessian
可在hessian官网http://hessian.caucho.com/ 或者http://download.csdn.net/detail/wodediqizhang/9543682下载jar包。
此处用的是hessian-4.0.3.jar
二、 搭建Hessian的Server
2.1.新建一个web项目,HessianTest,如图1。将hessian-4.0.3.jar放在lib下。
2.2.提供服务接口HessianService,代码如下:
- package com.cn.wjztr.service;
- import com.cn.wjztr.model.HelloWorld;
- /**
- *
- *
- * 类名称:HessianService
- * 类描述: 定义对外提供服务的接口
- * 创建人:wodediqizhang@163.com
- * 修改时间:2016-6-7 下午4:39:33
- * Modification History:
- * =============================================================================
- * Author Date Description
- * ------------ ---------- ---------------------------------------------------
- * ghb<span style="font-family: Arial, Helvetica, sans-serif;"> 2016-6-7 创建文档 </span>
- * =============================================================================
- * @version 1.0.0
- *
- */
- public interface HessianService {
- public HelloWorld sayHelloWorld();
- }
2.3.HessianService接口要使用HelloWorld对象,HelloWorld代码如下:
- package com.cn.wjztr.model;
- import java.io.Serializable;
- public class HelloWorld implements Serializable{
- /**
- * serialVersionUID:TODO(用一句话描述这个变量表示什么)
- *
- * @since 1.0.0
- */
- private static final long serialVersionUID = 2303638650074878501L;
- /**
- * 名字
- */
- private String name;
- public HelloWorld() {
- }
- public HelloWorld(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
2.4.实现HessianService接口,实现类为HessianServiceImpl:
- package com.cn.wjztr.service.impl;
- import com.cn.wjztr.model.HelloWorld;
- import com.cn.wjztr.service.HessianService;
- /**
- *
- *
- * 类名称:HessianServiceImpl
- * 类描述:对外提供服务的接口的实现
- * 创建人:<span style="font-family: Arial, Helvetica, sans-serif;">wodediqizhang@163.com</span>
- * 修改时间:2016-6-7 下午4:47:40
- * Modification History:
- * =============================================================================
- * Author Date Description
- * ------------ ---------- ---------------------------------------------------
- * ghb 2016-6-7 创建文档
- * =============================================================================
- * @version 1.0.0
- *
- */
- public class HessianServiceImpl implements HessianService {
- @Override
- public HelloWorld sayHelloWorld() {
- // TODO Auto-generated method stub
- return new HelloWorld("hello,World");
- }
- }
2.5.配置web.xml,添加对HessianServlet的配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="3.0"
- 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_3_0.xsd">
- <display-name></display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <servlet>
- <!-- 配置 HessianServlet,Servlet的命名任意-->
- <servlet-name>ServiceServlet</servlet-name>
- <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
- <!-- 配置接口的具体实现类 ,param-name命名任意-->
- <init-param>
- <param-name>service-class</param-name>
- <param-value>com.cn.wjztr.service.impl.HessianServiceImpl</param-value>
- </init-param>
- </servlet>
- <!-- 映射 HessianServlet的访问URL地址-->
- <servlet-mapping>
- <servlet-name>ServiceServlet</servlet-name>
- <url-pattern>/ServiceServlet</url-pattern>
- </servlet-mapping>
- </web-app>
此时,Hessian Server的配置已经完成了,接下来将应用部署在tomcat并启动。访问链接http://127.0.0.1:8081/HessianTest/ServiceServlet,得到信息如下:
三、实现Hessian的client
调用Hessian的客户端,创建HessianTestClient类,代码如下:
- package com.cn.wjztr.controller;
- import java.net.MalformedURLException;
- import com.caucho.hessian.client.HessianProxyFactory;
- import com.cn.wjztr.model.HelloWorld;
- import com.cn.wjztr.service.HessianService;
- /**
- *
- *
- * 类名称:HessianTestClient
- * 类描述:
- * 创建人:wodediqizhang@163.com
- * 修改时间:2016-6-7 下午4:57:11
- * Modification History:
- * =============================================================================
- * Author Date Description
- * ------------ ---------- ---------------------------------------------------
- * ghb 2016-6-20 创建文档
- * =============================================================================
- * @version 1.0.0
- *
- */
- public class HessianTestClient {
- public static void main(String[] args) {
- //在服务器端的web.xml文件中配置的HessianServlet映射的访问URL地址
- String url = "http://127.0.0.1:8081/HessianTest/ServiceServlet";
- HessianProxyFactory factory = new HessianProxyFactory();
- HessianService service = null;
- try {service = (HessianService) factory.create(HessianService.class, url);}
- catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();}
- //创建IService接口的实例对象
- HelloWorld helloWorld = service.sayHelloWorld();
- //调用Hessian服务器端的ServiceImpl类中的getUser方法来获取一个User对象
- System.out.println(helloWorld.getName());}}
- }
- }
- <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 运行这个类,会得到“hello,World”信息:</span>
后记:这篇博是借鉴了孤傲苍狼(http://www.cnblogs.com/xdp-gacl/p/3897534.html)这篇文章的内容实现的,不过他是将server和client分开,并将server的接口打了jar包给client,在client项目里面引用jar包里的接口实现对server的调用。这里我觉得理解原理就好,所以就我在这里就写一起了。
再后记:上个后记都说了借鉴,那这篇文章还设为转载吧。就这样。
Hessian知识学习总结(二)——Hessian的helloworld的更多相关文章
- 客户端相关知识学习(二)之h5与原生app交互的原理
前言 现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次 ...
- Unity基础知识学习笔记二
1,object Instantiate(object original,Vector3 position,Quaternion rotation) 克隆原始物体,并返回克隆物体. ...
- Java基础知识学习(二)
Java语法基础 数据类型.类型转换.运算符.逻辑运算符.参考C#,基本一致 输入输出 输出 System.out.print("abc"); System.out.printf( ...
- 服务端相关知识学习(二)之Zookeeper可以干什么
Zookeeper主要可以干哪些事情 配置管理,名字服务,提供分布式同步以及集群管理.那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookee ...
- Hessian学习总结(一)——Hessian入门
一.远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, http . ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- Hessian探究(一)Hessian入门示例
一.hessian的maven信息: [html] view plain copy print? <dependency> <groupId>com.caucho</gr ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
随机推荐
- Codeforces Round #562 (Div. 2) B. Pairs
链接:https://codeforces.com/contest/1169/problem/B 题意: Toad Ivan has mm pairs of integers, each intege ...
- HDU-2119-Matrix(最大匹配)
链接:https://vjudge.net/problem/HDU-2119#author=Smilencer 题意: 众所周知,tyz是一个写bug小能手,以至于如果没有队友的帮助,就ac不了程序. ...
- 练习三十二:用python实现:按相反的顺序输出列表的每一位值
用python实现:按相反的顺序输出列表的每一位值 1. 使用list[::-1] list1 = ["one","two","three" ...
- 宝塔面板安装的mysql5.5用命令行kill -9后启动不了
1.查看mysql版本方法一:status;方法二:select version(); 2.Mysql启动.停止.重启常用命令a.启动方式1.使用 service 启动:[root@localhost ...
- WebStorm技巧-常用快捷键
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*-*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 Ctrl+D 复制行 Ctrl+G 查找行 Ctrl+Shift+ ...
- P4874 回形遍历 —模拟
思路: 写完后信心满满,结果超时. 我很不解,下了个数据结果——,z竟然是大于1e10的,跟题目给的不一样啊 原来如此,正解是一行一行的走的... 注意当到两边一样近时,应优先向下和右!!!!!! 这 ...
- c#基础-构造函数 this new
构造函数作用:帮助我们初始化对象(给对象的每个属性依次的赋值)构造函数是一个特殊的方法:1).构造函数没有返回值,连void也不能写.2).构造函数的名称必须跟类名一样. 创建对象的时候会执行构造函数 ...
- Android studio 3.1.1 找不到DDMS
先找到AndroidStudio配置的SDK路径: 在SDK的/tools/路径下[就是和配置ADB一样的路径]有个monitor.bat 的批处理文件: 鼠标连续点击两下monitor.bat这个批 ...
- virtualapk爬坑心得
1.宿主和插件的工程build.gradle必须是 com.android.tools.build:gradle:2.1.3 gradle-wrapper 必须是 gradle-2.14.1-all ...
- CoordinatorLayout使用笔记
CoordinatorLayout的使用笔记 首先第一个子控件是AppBarLayout存放首部控件,里面放了一个CollapsingToolbarLayout.代码如下: <android.s ...