首页

如何注册使用Hessian实现最简单rpc服务(包含客户端调用示例)

标签:远程过程调用,soa,webservice,ws,RPC,demo,HessianProxyFactory,代理工厂,hessian-4.0.7.jar     发布时间:2016-08-04   

一、工程简介

这是一个实现Hession服务端和客户端调用的Web示例项目,包含完整的代码和依赖包,如需工程请到源码页“相关下载”进行下载工程或源码,在线javadoc文档进入其他页,工程结构如下所示

如何注册使用Hessian实现最简单rpc服务(包含客户端调用示例)

二、源码分析

1. 首先在项目的web.xml注册SearchServiceImpl的实现类服务,配置如下

<?xml version="1.0" encoding="UTF-8"?>@b@<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">@b@<web-app>@b@    <servlet>@b@        <servlet-name>SearchService</servlet-name>@b@        <display-name>SearchRpcService</display-name>@b@        <servlet-class>com.xwood.search.service.impl.SearchServiceImpl </servlet-class>@b@        <init-param>@b@            <param-name>home-api</param-name>@b@            <param-value>com.xwood.search.service.ISearchService</param-value>@b@        </init-param>@b@        <init-param>@b@            <param-name>home-class</param-name>@b@            <param-value>com.xwood.search.service.impl.SearchServiceImpl</param-value>@b@        </init-param>@b@    </servlet>@b@    <servlet-mapping>@b@        <servlet-name>SearchService</servlet-name>@b@        <url-pattern>/search</url-pattern>@b@    </servlet-mapping>     @b@</web-app>

2. 如上对应的home-api、home-class对应搜索接口及服务实现类(必须继承com.caucho.hessian.server.HessianServlet),如下所示

ISearchService.java接口

package com.xwood.search.service;@b@public interface ISearchService {@b@    String invoke(String kword);@b@}

SearchServiceImpl.java服务实现类

package com.xwood.search.service.impl;@b@@b@import com.caucho.hessian.server.HessianServlet;@b@import com.xwood.search.service.ISearchService;@b@@b@public class SearchServiceImpl extends HessianServlet implements ISearchService {@b@    @Override@b@    public String invoke(String kwords) {@b@        return kwords+" 搜索结果:************";@b@    }@b@}

3. 客户端远程调用类(SearchClientTest.java)测试基于HessianProxyFactory代理工厂类统一调用服务开发接口,具体如下

package com.xwood.search.client;@b@@b@import java.net.MalformedURLException;@b@@b@import com.caucho.hessian.client.HessianProxyFactory;@b@import com.xwood.search.service.ISearchService;@b@@b@public class SearchClientTest {@b@    @b@    public static void main(String[] args) throws MalformedURLException {@b@             String remoteUrl = "http://localhost:8080/HessionRpcService/search";@b@            HessianProxyFactory factory = new HessianProxyFactory();@b@            ISearchService  searcher = (ISearchService) factory.create(ISearchService.class, remoteUrl);@b@            System.out.println(searcher.invoke("小木人"));@b@    }@b@@b@}

运行后结果如下所示

小木人 搜索结果:************
@b@