编写发布Hessian接口

目录

[TOC]

不使用Spring

所需jar包:

hessian-4.0.7.jar

步骤

  1. 服务端编写接口和实现类
  1. 服务端编写web.xml
  1. 将接口所在包打包导出并发布服务

  2. 客户端导入接口对应jar包

  1. 客户端编写测试类

服务端编写接口和实现类

接口:
public interface HessianTest {
    public String sayHello(String name);
}

实现类:
import com.xxx.hessiantest.HessianTest;

public class HessianTestImpl implements HessianTest {

    public String sayHello(String name) {
        return "hello " + name;
    }
}

服务端编写web.xml

HessianServlet以及对应的初始化参数home-class,home-api写法固定。其中,home-class对应实现类全包名,home-api对应接口全报名。

  <servlet>
    <servlet-name>hessiantest</servlet-name>
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    <init-param>
        <param-name>home-class</param-name>
        <param-value>com.xxx.hessiantestimpl.HessianTestImpl</param-value>
    </init-param>
    <init-param>
        <param-name>home-api</param-name>
        <param-value>com.xxx.hessiantest.HessianTest</param-value>
    </init-param>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>hessiantest</servlet-name>
    <url-pattern>/hessian</url-pattern>
  </servlet-mapping>

打成jar包,发布服务

只需要将接口所在的包打成jar包即可。

客户端导入jar包客户端编写测试类

import com.caucho.hessian.client.HessianProxyFactory;
import com.xxx.hessiantest.HessianTest;

public class TestHessianInterface {

    public static void main(String[] args) throws Exception {
        
        String url = "http://localhost:8080/Hessian_Server/hessian";
        HessianProxyFactory factory = new HessianProxyFactory();
        HessianTest hessianTest = (HessianTest) factory.create(HessianTest.class, url);
        String hello = hessianTest.sayHello("阿紫");
        System.out.println(hello);
    }
}

打印输出结果

hello 阿紫

使用Spring

所需要jar包

aopalliance-1.0.jar
commons-logging-1.1.1.jar
hessian-4.0.7.jar
junit-4.10.jar
spring-aop-3.2.5.RELEASE.jar
spring-beans-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE.jar
spring-orm-3.2.5.RELEASE.jar
spring-test-3.2.5.RELEASE.jar
spring-web-3.2.5.RELEASE.jar
spring-webmvc-3.2.5.RELEASE.jar

步骤

  1. 服务端编写接口和实现类

  2. 服务端编写web.xml

  3. 服务端编写spring的配置文件hessian-server.xml

  4. 服务端将接口所在的包打包发布服务

服务端编写接口和实现类

服务端接口

public interface HessianTest {
    public String sayHello(String name);
}

服务端实现类

import com.xxx.hessiantest.HessianTest;

public class HessianTestImpl implements HessianTest {

    public String sayHello(String name) {
        return "hello " + name;
    }
}

服务端编写web.xml

  <servlet>
    <servlet-name>hessian</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:hessian-server.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>hessian</servlet-name>
    <url-pattern>/hessian/*</url-pattern>
  </servlet-mapping>

服务端编写hessian-server.xml文件

其中bean的name与web.xml中的URL拼接成hessian接口的路径地址。
property中name属性固定

<?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:context="http://www.springframework.org/schema/context"  
  xsi:schemaLocation="http://www.springframework.org/schema/beans   
  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  http://www.springframework.org/schema/aop   
  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
  http://www.springframework.org/schema/context  
  http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  
  <bean id="hessianTestImpl" class="com.xxx.hessiantestimpl.HessianTestImpl"></bean>
  <bean name="/hello" class="org.springframework.remoting.caucho.HessianServiceExporter">
    <property name="service" ref="hessianTestImpl"></property>
    <property name="serviceInterface" value="com.xxx.hessiantest.HessianTest"></property>
  </bean>
</beans>

打成jar包并发布服务

客户端编写测试代码

不带spring

import com.caucho.hessian.client.HessianProxyFactory;
import com.xxx.hessiantest.HessianTest;

public class TestHessianInterface {

    public static void main(String[] args) throws Exception {
        
        String url = "http://localhost:8080/Hessian_Server/hessian/hello";
        HessianProxyFactory factory = new HessianProxyFactory();
        HessianTest hessianTest = (HessianTest) factory.create(HessianTest.class, url);
        String hello = hessianTest.sayHello("阿紫");
        System.out.println(hello);
    }
}

带Spring

客户端spring的配置文件:
<?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:context="http://www.springframework.org/schema/context"  
  xsi:schemaLocation="http://www.springframework.org/schema/beans   
  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
  http://www.springframework.org/schema/aop   
  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd  
  http://www.springframework.org/schema/context  
  http://www.springframework.org/schema/context/spring-context-4.0.xsd">
  
    <bean id="testHessian" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        <property name="serviceUrl" value="http://localhost:8080/Hessian_Server/hessian/hello"></property>
        <property name="serviceInterface" value="com.xxx.hessiantest.HessianTest"></property>
    </bean> 
</beans>


测试类:
    @Test
    public void testHessian(){
        
        ApplicationContext context = new ClassPathXmlApplicationContext("hessian-client.xml");
        HessianTest bean = (HessianTest) context.getBean("testHessian");
        String sayHello = bean.sayHello("阿紫");
        System.out.println(sayHello);
    }

输出结果

hello 阿紫
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 1.如何应对APP版本升级,数据结构随之变化? 2.常用的设计模式 3.单例会有什么弊端? 4.编程题:简述「Sn...
    Forever進阅读 601评论 0 0
  • 每年的双十一,都是一次购物者和商家的集体狂欢。打开关注店铺的列表,看着一个个准备上新和优惠折扣的店家,内心便有了一...
    戎意阅读 203评论 0 0
  • 刘云帆的听觉敏锐的很,他早就注意到,在大门里面的客厅没有什么人守候,所以才肆无忌惮的走进去。 他估计那些保镖,应该...
    飄雲阅读 343评论 0 1
  • XIB中 ( A label B label ) 如何约束A是B的二倍?
    失忆的程序员阅读 320评论 0 1