您的位置:首页 > 其它

Lync Server 2010 安装详解

2011-05-23 17:12 246 查看
一、 Hessian原理简介:

          
Hessian

是由
caucho

提供的一个

基于
Binary-RPC

协议实现

的远程通讯
library

。在使用过程中,请求端

通过
Hessian

本身提供的
API

来向服务端发起请求,

Hessian

通过其自定义的串行化机制将请求信息进行序列化,产生二进制流,然后

用Http

协议进行传输。

响应端根据
Hessian

提供的
API

来接收请求,

而后,Hessian

根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。

处理完毕后直接返回,
hessian

将结果对象进行序列化,传输至调用端。

 

二、 Hessian

调用实例

    1. 服务端实体类:

 

package com.shhx.model;

import java.io.Serializable;

public class PlaneBean implements Serializable {

private String color;
private String length;
private String owner;

private static final long serialVersionUID = 1L;

public PlaneBean() {
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public String getLength() {
return length;
}

public void setLength(String length) {
this.length = length;
}

public String getOwner() {
return owner;
}

public void setOwner(String owner) {
this.owner = owner;
}

}

 2.服务端接口:

 

package com.shhx.service;

import com.shhx.model.PlaneBean;

public interface IBasic {

public String getAirLine();

public PlaneBean getPlaneBean();
}

   3.服务端接口实现类:

 

package com.shhx.service;

import com.caucho.hessian.server.HessianServlet;
import com.shhx.model.PlaneBean;

public class IBasicImpl extends HessianServlet implements IBasic {

private String airline= "Shanghai - Shenzhen";

public String getAirLine() {
return airline;
}

public PlaneBean getPlaneBean() {
PlaneBean plane = new PlaneBean();
plane.setColor("silver");
plane.setLength("30");
plane.setOwner("MU");

return plane;
}

}

 
      4. web.xml中的配置:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd"> 
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/remoting-servlet.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.shhx.service.IBasicImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.shhx.service.IBasic</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>

</web-app>

   5.  WEB-INF下 remoting-servlet.xml 的配置:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--  定义普通bean实例-->
<bean id="iBasicImpl" class="com.shhx.service.IBasicImpl" />

<!--  使用HessianServiceExporter 将普通bean导出成Hessian服务-->
<bean name="/HessianRemoting" class="org.springframework.remoting.caucho.HessianServiceExporter">

<!--  需要导出的目标bean-->
<property name="service" ref="iBasicImpl" />

<!--  Hessian服务的接口-->
<property name="serviceInterface" value="com.shhx.service.IBasic" />
</bean>
</beans>

  6. 客户端要有对应的实体类和接口,客户端代码:

 

package com.shhx.service;

import java.net.MalformedURLException;

import com.caucho.hessian.client.HessianProxyFactory;
import com.shhx.model.PlaneBean;

public class BasicClient {

/**
* @param args
*/
public static void main(String[] args) {
String url = "http://127.0.0.1:8080/hessianDemo/hessian";
HessianProxyFactory factory = new HessianProxyFactory();

try {
IBasic basic = (IBasic) factory.create(IBasic.class, url);
System.out.println(basic);
System.out.println("airline: " + basic.getAirLine());

PlaneBean plane = basic.getPlaneBean();
System.out.println("color: " + plane.getColor());
System.out.println("length: " + plane.getLength());
System.out.println("owner: " + plane.getOwner());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}

}

   客户端运行结果如下:

      HessianProxy[http://127.0.0.1:8080/hessianDemo/hessian]

      airline: Shanghai - Shenzhen

      color: silver

      length: 30

      owner: MU

 

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

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

                -包含Hessian的jar包;

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

                -实现该接口的功能;

                -配置web.xml,配好相应的servlet;  

                -对象必须实现Serializable 接口; 

                -对于复杂对像可以使用Map的方法传递;  

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

                -java客户端包含Hessian.jar的包; 

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

            -利用HessianProxyFactory调用远程接口。

四、   Hessian特点总结:

                -整个jar很小,200多K,3.1版本的,当然,我下载的for java的版本;

                -配置很简单,基本上不需要花什么经历就配置出来了;

                -功能强大,可以将soap抛开,也可以把EJB抛开,采用二进制来传递对象;

                -拥有多种语言支持,python c++  .net 甚至 flex 都可以做为client。

            下载地址: http://hessian.caucho.com/


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: