Hessian简介

Hessian

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据

目 录

1介绍

  1. 1.1 注意事项
  2. 1.2 服务器端
  3. 1.3 java客户端
  4. 1.4 创建客户端程序

2网游

  1. 2.1 简介
  2. 2.2 公开新的游戏内容

3矩阵

1介绍

注意事项

在进行基于Hessian的项目开发时,应当注意以下几点:
▲JAVA服务器端必须具备以下几点:
·包含Hessian的jar包
·设计一个接口,用来给客户端调用
·实现该接口的功能
·配置web.xml,配好相应的servlet
·对象必须实现Serializable 接口
·对于复杂对象可以使用Map的方法传递
▲客户端必须具备以下几点:
·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll
·具有和服务器端结构一样的接口。包括命名空间都最好一样
·利用HessianProxyFactory调用远程接口。
简单JAVA客户端例子:

服务器端

新建一个名EasyHession的webProject项目,将Hessian.jar放入web-inf下的lib中
创建接口:
package app.demo;
public interface BasicAPI {
public void setGreeting(String greeting);
public String hello();
public User getUser();
}
实现接口:
package app.demo;
public class BasicService implements BasicAPI {
private String _greeting = "Hello, world";
public void setGreeting(String greeting)
{
_greeting = greeting;
System.out.println("set greeting success:"+_greeting);
}
public String hello()
{
return _greeting;
}
public User getUser() {
return new User("prance", "meshow");
}
}
创建一个实现Serializable的projo类也可以是Bean。
package app.demo;
import java.io.Serializable;
public class User implements Serializable{
String userName ="snoopy";
String password ="showme";
public User(Stringuser, String pwd) {
this.userName =user;
this.password= pwd;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}
接下来是配置web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>app.demo.BasicService</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
为了测试可以在编辑一个简单的test.jsp
<%@ pageimport="com.caucho.hessian.client.HessianProxyFactory,
app.demo.BasicAPI"%>
<%@page language="java"%>
<%
HessianProxyFactory factory = newHessianProxyFactory();
String url = ("http://" +request.getServerName() + ":" +request.getServerPort() +
request.getContextPath() + "/hello");
out.println(url);
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class,url);
out.println("Hello: " + basic.hello());
out.println("Hello: " + basic.getUser() .getUserName() );
out.println("Hello: " +basic.getUser().getPassword() );
%>
将一切配置成功后,将项目发布到web 服务器上去,可以是Tomcat,Rain等等。
进入
结果如下:
Hello: Hello, world
Hello: snoopy
Hello: showme
说明服务器端已经编写成功。

java客户端

创建一个名为HessianClient的JAVAProject,载入hessian.jar包
创建与服务器端一样的接口,及基础类
public interface BasicAPI{
public void setGreeting(String greeting);
public String hello();
public User getUser();
}
import java.io.Serializable;
public class User implements Serializable{
String userName ="snoopy";
String password ="showme";
public User(Stringuser, String pwd) {
this.userName =user;
this.password= pwd;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}

创建客户端程序

importcom.caucho.hessian.client.HessianProxyFactory;
public class BasicClient {
public static void main(String[] args)
throwsException
{
String url ="http://127.0.0.1:8080/Hessian/hello";
HessianProxyFactory factory = new HessianProxyFactory();
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);
System.out.println("Hello:" + basic.hello());
System.out.println("Hello:" + basic.getUser().getUserName());
System.out.println("Hello:" + basic.getUser().getPassword());
basic.setGreeting("HelloGreeting");
System.out.println("Hello:" + basic.hello());
}
}
运行结果:
Hello: Hello, world
Hello: prance
Hello: meshow
Hello: Hello Greeting

转载于:https://www.cnblogs.com/yangkai-cn/p/4017257.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 以某个用户执行,Linux root用户肿么以制定的用户去执行某个程序。

chmod o-x m1说明&#xff1a;命令格式&#xff1a;chmod [options] mode files只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以who opcode permission形式表示。who是可选的&#xff0c;默认是a(所有用户)。只能选择一个opcode(操作码)。可指…

linux启动sh文件命令,Linux下如何写 .sh 脚本启动 项目

Linux下如何写 .sh 脚本启动 项目创建文件 mealcoupon.sh内容如下&#xff1a;#!/bin/bash#这里可替换为你自己的执行程序&#xff0c;其他代码无需更改APP_NAMExhqy_yzf-1.0.0.war#项目的路径(替换成你项目的路径)PROJECT_LOCATION/home/xpro/xhqy_jt#使用说明&#xff0c;用…

[wikioi]奇怪的梦境

http://wikioi.com/problem/2833/ 拓扑排序&#xff0c;居然1A&#xff0c;哈哈。 #include <cstdio> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <memory.h> #define MAX(a, b) a>b?a:b…

linux所有用户无法登录用户名和密码错误,为什么linux登录不了啊,用户名和密码都没问题,就是出现这个,有高手指点一下。...

为什么linux登录不了啊&#xff0c;用户名和密码都没问题&#xff0c;就是出现这个&#xff0c;有高手指点一下。关注:121 答案:6 mip版解决时间 2021-02-04 23:27提问者删除记忆里的你2021-02-04 04:27最佳答案二级知识专家那年夏天2021-02-04 05:19用户名肯定是root&#x…

Notes of the scrum meeting(2013/10/23)

ps&#xff1a;本来是10月23号周三下午开的会&#xff0c;这几天由于各种事情忙&#xff0c;忘记写博客了&#xff0c;现在补上。 软工项目组buaa_smile开始项目第一次scrum meeting meeting time:4:00~5:00p.m.,October 23th,2013 meeting place:主M202 attendees: 顾育豪 …

linux查用户的家目录,详解Linux误删用户家目录的恢复方法

在生产中可能会由于误操作而删除了某一用户的家目录&#xff0c;这时就需要把用户的家目录安装创建新用户时的模板文件&#xff0c;再恢复并且要跟之前的权限相同。1. 创建一个新的用户用于测试[rootcentos6 aubin]# useradd wangcai2. 新用户创建完成时会在/home下面自动创建同…

linux spring mvc tomcat配置,Spring MVC配置详解

一、Spring MVC处理流程1.Spring MVC将所有请求都交由DispatchServlet进行处理。2.DispatchServlet获取HandlerMapping(处理映射器)&#xff0c;然后找到对应的HandlerBean处理Controller请求&#xff0c;并返回一个ModelAndView对象。3.DispatchServlet查询一个或多个ViewReso…

这段时

这段时间通过与大家一起努力与研究&#xff0c;用新的技术框架重新构建了某集团销售统计系统。在这里总结一下项目心得。 技术—— EasyUI更好前端设计&#xff0c;通过json生成相应UI组件。并且风格统一大方&#xff0c;比较好的支持异步调用。MVC更好的将显示与控制分离&…

如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行

NCL基础讲解(二)——NCL安装与运行兰溪之水2015-11-04上一期已经给大家简单介绍了NCL的基本情况&#xff0c;既然NCL在科学数据分析和可视化方面有那么多优点&#xff0c;那还等什么&#xff0c;让我们一起“用”起来吧&#xff01;这一期给大家介绍NCL的安装与运行。关于NCL的…

C#值类型和引用类型的不同

1 C#中有两种类型&#xff1a; 值类型和引用类型&#xff1a; 值类型的变量直接包含他们的数据&#xff0c;引用类型存储对他们的数据的引用&#xff0c;后者称为对象&#xff1a; 简单说:值类型直接存储其值,引用类型存储对值得引用.引用类型分为引用和引用的对象。2…

linux malloc命令,减少 curl 中内存分配操作(malloc)

今天我在 libcurl 内部又做了一个小改动&#xff0c;使其做更少的 malloc。这一次&#xff0c;泛型链表函数被转换成更少的 malloc (这才是链表函数应有的方式&#xff0c;真的)。研究 malloc几周前我开始研究内存分配。这很容易&#xff0c;因为多年前我们 curl 中就已经有内存…

Linux与Windows中动态链接库的分析与对比

摘要&#xff1a;动态链接库技术实现和设计程序常用的技术&#xff0c;在Windows和Linux系统中都有动态库的概念&#xff0c;采用动态库可以有效的减少程序大小&#xff0c;节省空间&#xff0c;提高效率&#xff0c;增加程序的可扩展性&#xff0c;便于模块化管理。但不同操作…

flume linux 命令,flume启动命令 · Mr.Deng’s Blog

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;突然发现拖了很久的flume启动命令了&#xff0c;今天就简单讲讲flume的启动命令吧。如何启动flumeflume目录以上是安装flume的目录&#xff0c;flume的启动主要是在…

stm32 IAP + APP ==双剑合一

&#xff08;扩展-IAP主要用于产品出厂后应用程序的更新作用&#xff0c;上一篇博文详细的对IAP 升级程序做了详细的分析http://blog.csdn.net/yx_l128125/article/details/12992773&#xff0c;考虑到出厂时要先烧写IAP 再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“…

花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统

上个星期社区进行了一场直播&#xff0c;关于“新一代核心银行系统解决方案CBOD”——首个运行在Linux平台的核心银行系统。国外上线Linux核心系统的银行已经不少&#xff0c;例如花旗银行在主机系统上装载了Linux系统&#xff0c;处理所有信用卡交易和认证交易&#xff0c;但国…

360发布穿戴设备“儿童卫士”手环

10月29日下午消息&#xff0c;360今日召开发布会发布“儿童卫士”手环&#xff0c;可随时定位孩子位置&#xff0c;并具备安全区域预警、通话连接等功能。这款手环售价199元&#xff0c;将于12月开始销售。 据360透露&#xff0c;儿童卫士具备三大功能&#xff1a; 一、随时定位…

linux 内核 hrtimer,hrtimer在Linux内核中重复任务

我的目标是使用hrtimer结构在linux内核中创建一个定期任务.我希望它每500毫秒重复一次.但是,我对hrtimer在linux内核中的工作方式有点困惑(参见linux / hrtimer.h).我知道时间是指定的,回调应该返回HRTIMER_RESTART或HRTIMER_NORESTART.我在网上找到了一些资料,说明需要使用hrt…