在可选的java远程通讯中,比较有名的就是hessian了。根据我的了解应该是其性能是最好的。RMI已经逐渐被抛弃了。web service在性能上比hessian差很多,毕竟是以XML为媒介传播的。但是可以基于多语言的平台。hessian应该说算是面向java的远程通 讯框架了。
下面简单的实现hessian实现RPC的demo。
hessian是基于http协议的,发布服务需要依靠servlet容器来发布。因此其服务端就是一个web服务。先简单的实现业务接口和实现类,服务端的。
接口:HelloService.java
public interface HelloService{
// Hessian接口测试
public String test();
}
业务实现:HelloServiceImpl.java
public class HelloServiceImpl implements HelloService{
public String test(){
return "This is a hessian test!";
}
}
然后来发布服务,随便一个web的project,在其web.xml中来发布我们的服务servlet。
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">
<servlet>
<!-- 配置Servlet名,后面根据该名完成远程服务映射 -->
<servlet-name>helloService</servlet-name>
<!-- Hessian远程服务需要HessianServlet暴露 -->
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<!-- 使用init-param配置服务的实现类 -->
<init-param>
<param-name>home-class</param-name>
<param-value>
com.taylor.service.HelloServiceImpl
</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.taylor.service.HelloService</param-value>
</init-param>
<!-- 随应用启动而启动 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 映射Servlet的url,该Servlet的url就是Hessian服务名 -->
<servlet-mapping>
<servlet-name>helloService</servlet-name>
<url-pattern>/service/helloService.service</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
其中将对应的接口和实现类都配置上,用HessianServlet
来进行实现。
这样就算是成功发布了hessian的服务了。
客户端:
更简单,采用hessian提供的客户端proxy即可。
public class Test {
public static void main(String[] argv) throws Exception {
// Hessian服务的url
String url = "http://localhost:8080/standalone-webconsole/service/helloService.service";
// 创建HessianProxyFactory实例
HessianProxyFactory factory = new HessianProxyFactory();
// 获得Hessian服务的远程引用
Hello hello = (Hello) factory.create(Hello.class, url);
// 调用远程服务。
System.out.println("下面调用Hessian服务: " + hello.testHello());
}
}
通过hessian的代理工厂HessianProxyFactory来得到我们的代理远程服务类,然后进行调用。
下一篇,准备自己写个servlet来实现类似的hessian功能。
分享到:
相关推荐
通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Java中,如果一个类实现了Serializable接口,那么该类...
Java面试中的Dubbo专题主要涉及分布式服务框架Dubbo的核心概念、设计原理以及在实际应用中的问题与解决方案。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它提供了服务治理、负载均衡、容错处理等关键...
**WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...
在这个案例中,提供的"压缩包子文件的文件名称列表"——"hessian使用案例",很可能包含了服务器端和客户端的代码示例。这些示例可能包括了服务器端的服务接口和实现、web.xml配置、客户端的HessianProxyFactory使用...
2. 学习如何在Java项目中配置和使用Hessian客户端和服务端。 3. 掌握如何通过Hessian源码调试和优化性能。 4. 熟悉Hessian与其他通信协议(如HTTP、SOAP)的对比,以便根据项目需求选择最佳方案。 总结,Hessian ...
通过学习和研究这个示例项目,开发者可以更好地理解Hessian的工作流程,以及如何在自己的项目中部署和使用Hessian RPC。 总结,Hessian作为一种轻量级的RPC解决方案,以其高效、简单和易于集成的特性在分布式系统中...
- **特点**:采用JDK标准的RMI协议实现,传输参数和返回参数对象需实现Serializable接口,使用Java标准序列化机制,使用阻塞式短连接。 - **传输协议**:TCP - **序列化方式**:Java标准序列化 - **应用场景**:适用...
【标题】"provider——consumer 程序源码"指的是一个使用Java开发的分布式服务框架Dubbo中的核心组件——提供者(Provider)和消费者(Consumer)的源代码。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务治理框架...
本文将深入探讨如何利用Java技术进行远程调用,特别是针对WebService和RESTful接口的调用,以及一个常用的工具——SoapUI。 首先,让我们了解什么是远程调用。远程调用(Remote Procedure Call,RPC)是一种在...
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...
6. 序列化框架:默认使用Hessian序列化,了解其他如Java自带序列化等。 7. 服务失效踢出原理:服务健康检查失败后,服务提供者会从注册中心中移除服务实例。 8. 服务上线不影响旧版本:Dubbo支持服务降级和分组等...
标题为《阿里大牛眼中——Dubbo 的过去、现在以及未来》,描述提到了阿里巴巴技术专家马昕曦(小马哥)将会分享有关Dubbo的历史、现状以及未来展望。其中提到了分布式系统和微服务架构,特别强调了对于Java程序员的...
"JAVA工具factory.rar"这个压缩包很可能包含了与Java开发相关的工具、库或框架,而"springcloud dubbo"标签则指向了两个重要的微服务技术——Spring Cloud和Dubbo。 Spring Cloud是基于Spring Boot构建的一套完整的...
Spring框架是Java应用程序开发中的一个核心库,它提供了一种模块化和简化的方式来构建和管理应用程序的组件。Spring框架的核心特点在于它的Inversion of Control (IoC)和Dependency Injection (DI)原则,允许开发者...
本实例源码是基于Java实现的高性能RPC框架——nfs-rpc,专为分布式系统设计,以提高服务之间的通信效率和可靠性。以下是关于这个框架的一些关键知识点: 1. **RPC基础**:RPC的核心思想是调用远程服务就像调用本地...
Dubbo作为一款著名的Java RPC框架,广泛应用在分布式系统中,简化了服务间的通信。 RPC的核心思想在于提供透明的远程调用体验,就像调用本地方法一样简单。在RPC框架中,通常包含以下几个关键组件: 1. **客户端...
本文将深入探讨如何将Spring与Hessian整合,以创建一个高效的远程服务客户端——"jinrongjuClient"。 首先,理解Hessian的核心特性至关重要。Hessian的主要优点在于其高效性和简洁性,它能够将Java对象序列化为二...
本教程将深入探讨基于Java实现的高性能RPC框架——nfs-rpc,它旨在提供高效、易用且可扩展的解决方案。 一、RPC框架的核心概念 1. 客户端(Client):发起RPC调用的一方,通常在本地系统上运行,需要调用远程服务...
除了Java标准库提供的序列化机制外,还有其他流行的序列化框架,如Hessian和Apache Mina。这些框架提供了更高效的序列化和反序列化机制,适用于高性能网络通信场景。 #### 工作中需要注意的点 在实际开发中,使用...