Hessian :轻量级的remoting onhttp工具

更新时间:2023-09-25 14:53

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

注意事项

在进行基于Hessian的项目开发时,应当注意以下几点:

JAVA服务器端必须具备以下几点:

包含Hessian的jar包。

设计一个接口,用来给客户端调用。

实现该接口的功能。

配置web.XML,配好相应的servlet。

由于使用二进制RPC协议传输数据,对象必须进行序列化,实现Serializable接口。

对于复杂对象可以使用Map的方法传递。

客户端必须具备以下几点:

Java客户端包含Hessian.jar的包。C♯中引用hessianC♯dll。

具有和服务器端结构一样的接口。包括命名空间都最好一样。

利用HessianProxyFactory调用远程接口。

服务器端

新建一个名EasyHessian的webProject项目,将Hessian.jar放入web-inf下的天秤座

创建接口:

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

\u003c?xml version="1.0"encoding="UTF-8"?\u003e

\u003cweb-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/XML/ns/j2ee/web-app_2_4.xsd"\u003e

\u003cservlet\u003e

\u003cservlet-name\u003ehello\u003c/servlet-name\u003e

\u003cservlet-class\u003ecom.caucho.hessian.server.HessianServlet\u003c/servlet-class\u003e

\u003cinit-param\u003e

\u003cparam-name\u003eservice-class\u003c/param-name\u003e

\u003cparam-value\u003eapp.demo.BasicService\u003c/param-value\u003e

\u003c/init-param\u003e

\u003c/servlet\u003e

\u003cservlet-mapping\u003e

\u003cservlet-name\u003ehello\u003c/servlet-name\u003e

\u003curl-pattern\u003e/hello\u003c/url-pattern\u003e

\u003c/servlet-mapping\u003e

\u003c/web-app\u003e

为了测试可以在编辑一个简单的test.jsp

\u003c%@pageimport="com.caucho.hessian.client.HessianProxyFactory,

app.demo.BasicAPI"%\u003e

\u003c%@page language="java"%\u003e

\u003c%

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());

%\u003e

将一切配置成功后,将项目发布到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

网游

简介

韩国首款线上军事TPS游戏《Hessian》,经过8月份的首次测试后,将于10月28日~11月1日展开二次测试,并且公开新的游戏内容。

《Hessian》号称能够忠实地呈现军事战争,让玩家有战略和战术的规划;世界观设定为近未来发生的石油大战,采用真实性极高的游戏角色,透过次世代的游戏引擎,重现真实的战争场景。

一般的FPS游戏画面,只会显示枪口和枪,而本款号称新型态TPS,摆脱FPS中的单纯作战方式,采用全面性的战争模式,玩家可以从直升机的空对地攻击到自行火炮的远距离炮击等多种战术和战略的运用,更展现真实战场的风貌。游戏中的武器分多个种类的部件,玩家可以进行装备改装,制定自己想要的武器。

《Hessian》不同于既有FPS的内容,有高度真实感,尤其是利用掩蔽物躲避敌人攻击,以预测射击或牵制射击等分散敌人主力,扭断脖子等多种真实动作,都做得非常地有真实性。

游戏需求游戏配置为CPU P4 3.0GHz,RAM 2G,VGA Geforce7600GT,属于中等级的要求。

公开新的游戏内容

新内容1:独创的战斗方式,通过CTS体验的近战战斗乐趣

《Hessian》中的武器分为主武器、辅助武器、投掷武器、近战武器。其中,最独特的就是近战武器。与一般FPS游戏的折刀概念不同,进入对方无法反抗的特定攻击状态。

一测中公开的悄悄靠近敌人身后的‘夹头(HeadLock)’,受到玩家关注。此次二测将公开的近战武器具有射击游戏中所没有的独创战斗方式近战战术支援(CTS:Close Tactical Support)。近战侦察、近战支援型的战略游戏成为可能。

「近战支援CTS」是以标记(红色烟雾弹)指定坐标,后方多个地域发射迫击炮给予支援的系统。

「近战侦察CTS」是配备有红外线传感器无人机(UAV)搜索指定区域,向我方传递敌人位置信息的系统。

新内容2:新游戏任务「空袭任务」

一测时,《Hessian》公开歼灭任务和个人任务,二测将添加新游戏任务「空袭任务」。玩家为成功完成各种任务,歼灭敌人,在指定的地方铺设炸弹,同时为在战场中生存下来,与佣兵展开决战。

空袭任务是在限定时间内,将中转装置GDT安装在指定的区域,以成功完成导引空中攻击的任务。安装地区有2个区域,各区域安装的阵营已指定。该任务以先胜制进行,特定阵营获得整体一半以上场数的胜利,即视为获胜,游戏结束。

新内容3:使用第3人称视角的多种演出

与既有FPS游戏不同,《Hessian》中的游戏角色具有利用地形地物的掩蔽,使用绳索移动于建筑物之间,通过固定武器攻击敌人等多种攻击。

新内容4:电影般的演出

单机游戏中的视频截取(Cut Scene)在《Hessian》中实现。摆脱FPS游戏的第1人称视角,玩家能在游戏中饰演动作/战争电影中的主人公,过足战斗瘾。

新内容5:新游戏角色安东尼奥

意大利出身的佣兵安东尼奥将在二测中登场。安东尼奥是意大利北部城市都灵的一个平凡地方公务员家庭的独生子,在罗马体育大学所学专业为历史学,不明原因进入意大利国家宪兵队(Carabinieri)反恐怖特别行动勤务组/大队(GIS),成为一名PMC特工。

除新游戏角色外,《Hessian》还将公开SMG冲锋枪(冲锋枪)、AR(突击步枪)、SR(狙击来复枪)、防御武器、防具、STOG等新道具,玩家通过多种武器使用各种战略战术,体验更为逼真的游戏。

矩阵

在数学中,海赛矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下:

如果f所有的二阶导数都存在,那么f的海赛矩阵即:

H(f)ij(x)=DiDjf(x)

其中,即

(也有人把海色定义为以上矩阵的行列式)海赛矩阵被应用于牛顿法解决的大规模优化问题。

混合偏导数和海赛矩阵的对称性

海赛矩阵的混合偏导数是海色矩阵主对角线上的元素。假如他们是连续的,那么求导顺序没有区别,即

上式也可写为

在正式写法中,如果f函数在区域D内连续并处处存在二阶导数,那么f的海赛矩阵在D区域内为对称矩阵。

在R^2→R的函数的应用

给定二阶导数连续的函数,海色矩阵的行列式,可用于分辨f的临界点是属于鞍点还是极值

对于f的临界点(x0,y0)一点,有,然而凭一阶导数不能判断它是鞍点、局部极大点还是局部极小点。海赛矩阵可能解答这个问题。

H\u003e0:若,则(x0,y0)是局部极小点;若,则(x0,y0)是局部极大点。

H\u003c0:(x0,y0)是鞍点。

H=0:二阶导数无法判断该临界点的性质,得从更高阶的导数以泰勒公式考虑。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: