【RPC】使用Hessian构建RPC的简单示例
服务接口和实现
public interface HelloService {
    // 服务方法
    String sayHello(String name);
}
public class HelloServiceImpl implements HelloService {
    public String sayHello(String name) {
        return "RPC > Hello , " + name;
    }
}
Maven引用
<Hessian.version>4.0.38</Hessian.version>
<!--hessian start -->
	<dependency>
		<groupId>com.caucho</groupId>
		<artifactId>hessian</artifactId>
		<version>${Hessian.version}</version>
	</dependency>
<!--hessian end -->
web.xml配置
配置HessianServlet
<!--HessianServlet start -->
<servlet>
	<!-- 配置 HessianServlet -->
	<servlet-name>helloService</servlet-name>
	<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
	<!-- 配置接口的具体实现类 -->
	<init-param>
		<param-name>service-class</param-name>
		<param-value>com.ll.rpc.HelloServiceImpl</param-value>
	</init-param>
</servlet>
<!-- 映射 HessianServlet的访问URL地址 -->
<servlet-mapping>
	<servlet-name>helloService</servlet-name>
	<url-pattern>/helloService</url-pattern>
</servlet-mapping>
<!--HessianServlet end -->
Tomcat配置
- 下载Tomcat:使用版本6.0.51;
 - 配置环境变量:CATALINA_HOME=D:\xxx\apache-tomcat-6.0.51;
 - 配置Javaweb为tomcat默认项目:
修改server.xml,添加:可参见【Jersey】基于Jersey构建Restful Web应用 
<Context path="" docBase="D:\xxx\target\Javaweb" debug="0" reloadable="true"/>
Clinet客户端实现
package com.ll.rpc;
import java.net.MalformedURLException;
import com.caucho.hessian.client.HessianProxyFactory;
public class Client {
	public static void main(String[] args) {
		// 远程Hessian服务
		String url = "http://localhost:8080/helloService";
		try {
			// 利用hessianProxyFactory.create()方法创建一个代理对象
			HelloService helloService = (HelloService) (new HessianProxyFactory()
					.create(HelloService.class, url));
			// 调用服务方法
			System.out.println(helloService.sayHello("sssppp"));
		} catch (MalformedURLException e) {
		}
	}
}
输出结果测试:
RPC > Hello , sssppp
其他
参考链接:
完整的web.xml如下:
可参见【Jersey】基于Jersey构建Restful Web应用
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">
	<display-name>Java Web</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!--Spring 文件路径 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:conf/beans/beans-*.xml</param-value>
	</context-param>
	<!-- spring上下文监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>
	<!-- 解决中文乱码 -->
	<filter>
		<filter-name>SetCharacterEncoding</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>false</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>SetCharacterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- jersey Servlet start -->
	<servlet>
		<servlet-name>rest-inside</servlet-name>
		<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
		<init-param>
			<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
			<param-value>true</param-value>
		</init-param>
		<!-- 设置Restful实例的位置 -->
		<init-param>
			<param-name>com.sun.jersey.config.property.packages</param-name>
			<param-value>com.ll.jersey</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>rest-inside</servlet-name>
		<url-pattern>/jersey/rest/*</url-pattern>
	</servlet-mapping>
	<!-- jersey Servlet end -->
	<!--HessianServlet start -->
	<servlet>
		<!-- 配置 HessianServlet -->
		<servlet-name>helloService</servlet-name>
		<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
		<!-- 配置接口的具体实现类 -->
		<init-param>
			<param-name>service-class</param-name>
			<param-value>com.ll.rpc.HelloServiceImpl</param-value>
		</init-param>
	</servlet>
	<!-- 映射 HessianServlet的访问URL地址 -->
	<servlet-mapping>
		<servlet-name>helloService</servlet-name>
		<url-pattern>/helloService</url-pattern>
	</servlet-mapping>
	<!--HessianServlet end -->
</web-app>
												
											【RPC】使用Hessian构建RPC的简单示例的更多相关文章
- C# 构建XML(简单示例)
		
C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...
 - asp.net core系列 61 Ocelot 构建服务发现简单示例
		
一.概述 Ocelot允许指定服务发现提供程序,如Consul或Eureka. 这二个中间件是用来实现:服务治理或秒服务发现,服务发现查找Ocelot正在转发请求的下游服务的主机和端口.目前Ocelo ...
 - Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
		
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
 - [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
		
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
 - Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
		
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
 - RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化
		
序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果.服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用.然我们自己动手从0开始写一个rpc功能以及实 ...
 - 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)
		
一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...
 - Python Thrift 简单示例
		
本文基于Thrift-0.10,使用Python实现服务器端,使用Java实现客户端,演示了Thrift RPC调用示例.Java客户端提供两个字符串参数,Python服务器端计算这两个字符串的相似度 ...
 - dubbo简单示例
		
dubbo简单示例 2019-09-06 1 Zookeeper注册中心的搭建(windows单机) 下载zookeeper压缩包并解压到 D:\zookeeper\apache-zookeeper- ...
 
随机推荐
- flask中的request和response
			
1.request 1.request的常用成员 1.scheme : 获取请求方案(协议) 2.method : 获取本期请求的请求方式(重点) 3.args : 获取使用get请求方式提交的数据 ...
 - [LeetCode&Python] Problem 206. Reverse Linked List
			
Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...
 - 修改select样式
			
CSS就可以解决,原理是将浏览器默认的下拉框样式清除,然后应用上自己的,再附一张向右对齐小箭头的图片即可. select { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ ...
 - Redis 开发与运维
			
Getting Start 高性能 性能优势的体现 C语言实现的内存管理 epoll的I/O多路复用技术+IO连接/关闭/读写通过事件实现异步的非阻塞IO TCP协议 单线程架构,不会因为高并发对服务 ...
 - Java线程池 详解(图解)
			
来源:www.jianshu.com/p/098819be088c 拓展: 手动创建 new ThreadPoolExecutor 的使用: https://segmentfault.com/a/11 ...
 - 【BZOJ1497】【NOI2006】最大获利
			
最小割好劲啊 原题: 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项 ...
 - [转]SQL UNION 和 UNION ALL 操作符
			
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
 - spring boot 学习资料
			
spring boot 学习资料: 学习资料 网址 Spring Boot Cookbook-极客学院 http://wiki.jikexueyuan.com/project/spring-boot- ...
 - git push文件到远程github或者gitlab
			
Git global setup git config --global user.name "luozeng" git config --global user.email &q ...
 - java Collections.sort()
			
sort()是Collections中的静态方法,用于对List容器中的元素排序. 如容器list中存储的是Integer对象 List<Integer> list =Arrays.asL ...