Java操作HessianITeye - 众发娱乐

Java操作HessianITeye

2019年02月18日11时10分46秒 | 作者: 飞双 | 标签: 效劳,运用,客户端 | 浏览: 974

一、首要先说Hessian是什么?
  Hessian:hessian是一个轻量级的remoting onhttp东西,运用简略的办法供给了RMI的功用,比较WebService,Hessian更简略、方便。选用的是二进制RPC协议,由于选用了二进制协议,所以它很适合于发送二进制数据,Hessian首要作面向方针的音讯通讯。Hessian的初衷就是支撑动态类型,格局紧凑,跨言语Hessian是运用自己的序列化机制完结的编组和反编组,其支撑的数据类型是有约束的,不支撑杂乱的方针,可以穿透防火墙,在这儿不得不说一下RMI:RMI是一组用户开发分布式运用程序的API。他运用的是java序列化机制完结调用及返回值的编组于反编组。它运用Java言语接口界说了长途方针,它调集了Java序列化和Java长途办法协议(Java Remote Method Protocol)。他可以被看做是RPC的Java版别,由于传统的RPC并不能很好的运用于分布式方针体系。而Java RMI则支撑存储于不同地址空间的程序级方针之间互相进行通讯,完结长途方针之间的无缝长途调用。他也有它的缺陷,他只能经过RMI协议来进行拜访无法经过HTTP协议拜访,无法穿透防火墙。
  还有一种长途调用办法就是HttpInvoker:他也是将参数和返回值经过Java的序列化机制进行编组和反编组,它具有RMI的支撑一切可序列化方针的长处。试运用Http协议传输二进制流的,一起又具有Hessian、Burlap(传输xml文本)的长处。
二、写一个简略的hessian通讯所需求知道写哪些内容?
Hessian:写一个Hessian需求留意的问题:
  1、JAVA效劳器端有必要具有以下几点:
  包含Hessian的jar包
  规划一个接口,用来给客户端调用
  完结该接口的动能
  装备web.xml,装备相应的servlet
  方针有必要完结Serializable接口
  关于杂乱方针可以运用Map的办法传递
  2、客户端有必要具有以下几点:
  java客户端包含Hessian.jar包
  具有和效劳器端结构相同的接口和实体类。包含命名空间都最好相同。运用HessianProxyFactory调用长途接口
三、简略hessian实例:
1、在效劳端的接口:
public interface IHello {

  String sayHello();
 
}
2、在效劳端的完结类:
public class IHelloImpl extends HessianServlet implements IHello {

  @Override
  public String sayHello() {
  // TODO Auto-generated method stub
  return "Hello,I from HessianService";
  }

}
3、在客户端的类:
public class ClientTest {

  public static String url = "http://127.0.0.1:8080/HessianService/Hello";
  public static void  main(String[] args){
  HessianProxyFactory factory = new HessianProxyFactory();
  try {
  IHello iHello = (IHello) factory.create(IHello.class, url);
  System.out.println(iHello.sayHello());
  } catch (MalformedURLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
}
3、先将效劳器端的类link到客户端,或者是将效劳器端打包放到客户端,
4、在web.xml中进行装备:
效劳器端: servlet
  servlet-name Hello /servlet-name
  servlet-class com.caucho.hessian.server.HessianServlet /servlet-class
  init-param
  param-name home-class /param-name
  param-value com.kcpt.hessian.service.IHelloImpl /param-value
  /init-param
  init-param
  param-name home-api /param-name
  param-value com.kcpt.hessian.service.IHello /param-value
  /init-param
  load-on-startup 1 /load-on-startup
  /servlet
  servlet-mapping
  servlet-name Hello /servlet-name
  url-pattern /Hello /url-pattern
  /servlet-mapping

履行成功:输出Hello,I from HessianService,这是简略的hessian完结办法,看起来比较简略
四、hessian与spring结合.
在实践运用中,咱们不仅仅简略的只运用hessian来进行通讯的,假如办法多得话,还不如直接写在客户端来调用,但是:当hessian与spring结合后,大大减少了这些操作,将dao层的操作悉数放在hessian效劳端,将事务逻辑悉数放在hessian客户端,这样的话咱们的hessian客户端和效劳端彻底别离,因而咱们的事务逻辑和dao层就真实的达到了别离,就可以放在不同的效劳器上,当然hessian的通讯的效果不仅仅只要这些。
接口和完结和上边的相同:仅仅在web.xml中装备比较费事:
比如:
1、效劳器端:增加remoting-servlet.xml装备文件:用来装备bean,并将bean导出为hessian效劳:
?xml version = "1.0" encoding = "UTF-8" ?
beans xmlns = "http://www.springframework.org/schema/beans"
  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop = "http://www.springframework.org/schema/aop"
  xmlns:tx = "http://www.springframework.org/schema/tx"
  xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  
 
  ! 界说一般的bean实例
  bean id="Hello" /
  !  运用HessianServiceExporter 将一般bean导出成Hessian效劳
  bean name="/remoting"
  !  需求导出的方针bean
  property name="service" ref="Hello"/
  !  Hessian效劳的接口
  property name="serviceInterface" value="com.kcpt.hessian.service.IHello"/
  /bean
  /beans
2、web.xml文件的装备:
首要是监听器:spring的监听器
listener
listener-class org.springframework.web.context.ContextLoaderListener /listener-class !增加监听器
/listener
! 指定spring的装备文件在哪里,在这个装备文件中导出了Hessian效劳
context-param
  param-name contextConfigLocation /param-name
  param-value /WEB-INF/remoting-servlet.xml /param-value
/context-param
! Hessian经过Servlet供给长途效劳,需求将某个匹配的形式映射到hessian效劳中,spring的dispatcherServlet能完结此功用,DispatcherServlet可将匹配形式的恳求转发到Hessian效劳,web.xml仅仅界说了“恳求转发器”,该转发器将匹配/remoting/*的恳求截获,转发给context的bean处理。而HessianServiceExporter供给bean效劳。
servlet
  servlet-name remoting /servlet-name
  servlet-class org.springframework.web.servlet.DispatcherServlet /servlet-class
  load-on-startup 1 /load-on-startup
  /servlet
servlet-mapping
servlet-name remoting /servlet-name
url-pattern /remoting/* /url-pattern
/servlet-mapping
3、在客户端:
相同要加spring监听器和context-param指定bean的文件
声明bean的xml文件:
?xml version = "1.0" encoding = "UTF-8" ?
beans xmlns = "http://www.springframework.org/schema/beans"
  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop = "http://www.springframework.org/schema/aop"
  xmlns:tx = "http://www.springframework.org/schema/tx"
  xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  
bean id="myServiceClient"
property name="serviceUrl"   //hessian的地址和称号恳求转发的称号
value http://127.0.0.1:8080/HessianService/remoting /value
/property  
property name="serviceInterface"   //hessian所要调用的接口
value com.kcpt.hessian.service.IHello /value
/property
/bean
/beans
4、客户端的程序中要写:
ApplicationContext context = new ClassPathXmlApplicationContext("com/kcpt/hessian/client/remoting-client.xml");  //这儿仅仅你声明的bean的xml文件地点的途径
  IHello b = (IHello) context.getBean("myServiceClient");
来获取到ihello这个接口,然后就可以调用这个接口里的办法进行操作
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Java操作HessianITeye

    效劳,运用,客户端
  • 2

    排序算法众发娱乐

    排序,交流,冒泡排序
  • 3

    console for sinatra众发娱乐

    时分,合作,运用
  • 4

    javascipt目标众发娱乐

    目标,办法,函数
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

    Iteger intitjob

    办法,代码,目标