首页 > 其他分享 >hessian使用

hessian使用

时间:2023-01-12 14:02:58浏览次数:50  
标签:Web Java hessian 使用 RMI com Hessian

友情提示:这篇文章要回到原始开发,要回想出很多东西,末尾介绍hessian!

一、准备

前言: 如今使用hessian没有maven jar包 所以得手动下载
官网:http://hessian.caucho.com/
hessian使用_Java

二、搭建项目

  1. 需要搭建一个JAVA原始Web项目 保持这种层级关系(接口实现类) 创建服务端
    hessian使用_hessian_02
  2. 配置web.xml
    hessian使用_RPC_03
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <!--name名字 class是hession jar包的路径 报红添加依赖 要jar包路径-->
        <servlet-name>hessian</servlet-name>
        <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
        <!-- 当服务调用方请求当前这个servlet 的时候,
        我让IweatherService的WearcherService实现类提供服务 -->
        <init-param>
            <!--home-api:键  HessianServlet初始化的参数 value就是接口-->
            <param-name>home-api</param-name>
            <param-value>com.czxy.hession.IWeatherService</param-value>
        </init-param>
        <init-param>
            <!--home-class:值  value就是实现类-->
            <param-name>home-class</param-name>
            <param-value>com.czxy.hession.WeatherService</param-value>
        </init-param>
    </servlet>
    <!--访问路径-->
    <servlet-mapping>
        <servlet-name>hessian</servlet-name>
        <url-pattern>/hessian</url-pattern>
    </servlet-mapping>

</web-app>
  1. 部署项目到Tomcat
    hessian使用_hessian_04

hessian使用_hessian_05

  1. 访问端口测试是否发布成功
http://localhost:8089/hessian 

hessian使用_hessian与httpclient区别_06
(服务已经发布成功,但是提醒的意思是:Hessian的服务必须使用POST的请求方式)

  1. 客户端的开发
    hessian使用_RPC_07

注意:hessian开发客户端 接口的包名接口名必须与服务端一致!
然后写个测试类

package com.czxy.hessian.test;

import com.caucho.hessian.client.HessianProxyFactory;
import com.czxy.hessian.IWeatherService;

public class InvokingHessian {

	public static void main(String[] args) throws Exception, ClassNotFoundException {
		// 调用HessianServer服务器端
		//1 创建调用工厂
		HessianProxyFactory proxy= new HessianProxyFactory();
		//2 请求远程预付
		IWeatherService ws = (IWeatherService)proxy.create("http://localhost:8089/hessian ");
		//3像调用本地方法一样,调用远程方法
		String w = ws.getName("北京");
		System.out.println(w);	
	}
}

运行结果 然后你可以把这个客户端搭建成对外服务器
hessian使用_hessian_08

Hessian的概述

Hessian是什么

官网介绍:

The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.

Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议。和其他Web服务的实现框架不同的是,Hessian是一个使用二进制格式传输的Web服务协议的框架,相对传统soap web service,更轻量,更快速。它的好处在于免除了一大堆附加的API包,例如XML的处理之类的jar包,这也就是为什么说它是一个轻量级的Web服务实现框架的原因,这个原因还在于手机上的应用程序可以通过Hessian提供的API很方便的访问Hessian的Web服务。

目前已经支持N多语言(跨语言平台的特性):
1.RMI
RMI(Remote Method Invocation,远程方法调用)是Java在JDK1.2中实现的, Java RMI 支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。(即它能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法)

【优点】:
Java RMI具有Java的"Write Once,Run Anywhere"的优点,是分布式应用系统的百分之百纯Java解决方案。用Java RMI开发的应用系统可以部署在任何支持JRE(Java Run Environment Java,运行环境)的平台上。

【缺点】:
RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信。

在大力鼓吹Web Service、SOA的时代,是不是每个应用都应该选用笨拙的Web Service组件来实现,通过对比测试后,RMI是最简单的,在一些小的应用中是最合适的。

hessian和Httpclient区别

hessian使用_Hessian使用_09

祝你幸福
送你一首歌《Your Bones》Of Monsters And Men
附图:BBC 11-12新纪录片《王朝》 豆瓣9.7

hessian使用_RPC_10

标签:Web,Java,hessian,使用,RMI,com,Hessian
From: https://blog.51cto.com/u_15939406/6004107

相关文章

  • Redis安装使用
    在开发网页的时候我们难免要发送短信做页面判断Redis就是一个外置存储仓库使用安装Redis安装百度云链接:https://pan.baidu.com/s/1Mvfaxw3J5SOg39V0aZOrHA提取码:n7......
  • @Data注解使用/注解getset不起作用
    讲个小工具Idea创建对象时不用写getset方法导入maven坐标<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency......
  • 5分钟掌握画布元素的使用
    画布(canvas)是HTML5中新增加的一个非常重要的元素,使用它的API,我们可以通过绘制的方式实现图形、线条和文字的显示。目标使用画布元素,快速绘制一个中小学教学使用的工具,效果如......
  • 使用Android 调试桥(ADB)卸载手机自带软件
    今天忍受不了手机自带的应用商店广告过多,打算卸载了,结果在应用管理页面中这个软件没有卸载按钮,后面查找了可以使用ADB命令行卸载,这里做一些简单记录。1.准备1.1硬件准......
  • Springboot使用JPA配置多数据源
    Springboot使用JPA配置多数据源https://zhuanlan.zhihu.com/p/299055754本人在最近的项目中,需要使用JPA配置两个数据源来完成一些功能,以此记录配置过程。方便以后使用:第......
  • echarts柏拉图,柱状图和折线图结合使用,双纵坐标轴展示
    效果如图:          //柏拉图分析lineOption2:{tooltip:{trigger:'axis',axisPointer:{......
  • Ubuntu 使用SSH root 登陆系统
    ubuntu默认情况是无法用root进行ssh登录的,要登录需要如下配置:1.执行以下命令,设置root密码。sudopasswdroot输入root的密码,按Enter2.执行以下命令,打开 ss......
  • C++ 使用 new 创建二维数组
    C++使用new创建二维数组最直接的方法就是 ​​newT[M][N]​​​。返回的指针类型是 ​​T(*)[N]​​​,它是指向数组的指针,可以直接使用数组下标形式访问元素。释放内......
  • 如何使用IDEA工具开发Scala程序?
    如何使用IDEA工具开发Scala程序,具体步骤如下。(1)创建工程。在IDEA工具主界面中单击【CreateNewProject】创建工程,效果如图1所示。图1创建Scala工程在图1中可以看出,选择“......
  • RenderDoc 学习使用(二):Android平台真机环境下对特殊项目进行截帧分析
    修改真机debuggable值使用RenderDoc在真机环境进行调试,需要项目:debuggable=true。除了每个apk中指定的debuggable外,这个值还可以在系统中全局指定。换句话说,只要把系统值......