`

Spring RMI 笔记

阅读更多
一,服务器端
1.真正的业务interface
package cn.com.legendapl.spring.service;

public interface OperationService {

	public int add(int a, int b);
	
	public int sub(int a, int b);
	
	public int mul(int a, int b);
	
	public int div(int a, int b);
}


2.RMI interface
需要特别注意的是RMI interface 与真正的业务interface所定义的方法是一样的。
但是每个方法都应声明抛出异常(java.rmi.RemoteException)。
package cn.com.legendapl.spring.rmi.service;

import java.rmi.RemoteException;

public interface OperationServiceRmiInterface extends java.rmi.Remote{
	public int add(int a, int b) throws RemoteException;
	
	public int sub(int a, int b) throws RemoteException;
	
	public int mul(int a, int b) throws RemoteException;
	
	public int div(int a, int b) throws RemoteException;
}


3.ServiceImpl
业务实现必须同时实现两个接口。
package cn.com.legendapl.spring.service;

import cn.com.legendapl.spring.rmi.service.OperationServiceRmiInterface;

public class OperationServiceImpl
	implements OperationService, OperationServiceRmiInterface {

	public int add(int a, int b) {
		return a + b;
	}

	public int div(int a, int b) {
		return a / b;
	}

	public int mul(int a, int b) {
		return a * b;
	}

	public int sub(int a, int b) {
		return a - b;
	}
}


4.spring 配置文件
<beans>
	<bean id="service" class="cn.com.legendapl.spring.service.OperationServiceImpl" />

	<bean id="rmiService" class="org.springframework.remoting.rmi.RmiServiceExporter">
		<property name="service" ref="service" />
		<property name="serviceInterface" 
<!-- 这个地方的接口是实际的业务接口,不是那个继承自Remote接口的接口 -->
value="cn.com.legendapl.spring.service.OperationService" />
		<property name="serviceName" value="operation" />
		<property name="registryPort" value="8899" />
	</bean>
<beans>


5.启动服务代码
这里也有地方不甚了解,spring怎么帮我把当前线程阻塞的?下列代码中的日志是有效的,
而记录完成后,进程并不会结束。
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Start {

	public static void main(String[] args) {
		new ClassPathXmlApplicationContext("applicationContext.xml");
                LOG.debug("start...");
	}

}


二,客户端
1.配置文件
	<bean id="rmi" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
		<property name="serviceInterface" value="cn.com.legendapl.spring.service.OperationService" />
		<property name="serviceUrl" value="rmi://localhost:8899/operation" />
	</bean>


2.使用远程模块
当然了,客户端工程里也要有业务接口的定义才行的。
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.com.legendapl.spring.service.OperationService;

public class TestCase {

	@Test
	public void case1() {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		OperationService os = (OperationService) context.getBean("rmi");
		System.out.println(os.mul(12, 3));
	}
}
1
0
分享到:
评论

相关推荐

    RMI学习笔记

    本教程将介绍一个基础的RMI HelloWorld应用,以及如何在Spring环境下配置RMI。 首先,我们要创建一个Server端项目。在Eclipse中,创建一个新的项目,并定义一个远程接口`UserManagerInterface`,它需要继承`Remote`...

    spring学习笔记

    Spring支持RMI、HTTP、Hessian和 Burlap等协议的远程服务调用,使分布式系统间的通信变得更加简单。 **7. Spring MVC** Spring MVC是Spring提供的Web层框架,用于构建RESTful风格的Web应用。它简化了MVC模式的实现...

    spring培训学习笔记

    - **远程调用**:Spring支持多种远程调用技术,如RMI、EJB、JAX-RPC等。 #### 七、Web层设计 - **设计目标**:Spring的Web层设计目标是提供一个灵活且可扩展的MVC架构。 - **集成Struts**:Spring可以很容易地与...

    SpringCloud微服务笔记

    ### SpringCloud微服务基础知识解析 #### 一、项目架构演进概述 在现代软件开发过程中,随着业务复杂度和技术需求的不断提升,项目架构也经历了从单点系统到分布式架构的演变。下面我们将深入探讨其中的关键知识点...

    吴天雄--Spring笔记.doc

    【Spring框架简介】 Spring是一个轻量级的企业级应用开发框架,由Rod Johnson创建并在2003年首次发布。它的核心目标是使开发过程变得简单,通过POJO(Plain Old Java Object)编程模型来促进良好的编程实践。Spring...

    hessian与spring整合的jar包

    在IT行业中,Hessian是一种高效的远程方法调用(Remote Method Invocation, RMI)协议,它由Caucho Technology开发。Hessian提供了一种二进制的序列化格式,使得网络通信更加高效,减少了数据传输量。它支持Java、...

    Java demo 算法笔记

    Java提供了RMI(远程方法调用)、JMS(Java消息服务)以及近年来流行的微服务框架如Dubbo、Spring Cloud等,用于构建分布式应用。理解这些技术的基本原理和使用方式,有助于开发者构建可扩展、高可用的系统。 代码...

    j2ee精华学习笔记

    **J2EE精华学习笔记** J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的框架。本学习笔记旨在深入解析J2EE的核心概念和技术,帮助读者全面掌握J2EE开发的关键知识。 ...

    Java分布式应用学习笔记

    Spring Boot和Spring Cloud为Java微服务提供了强大的支持,包括服务发现、配置中心、熔断器等。 9. 容器化与编排 Docker容器化技术简化了应用的部署和管理,而Kubernetes(K8s)作为容器编排工具,可以管理和调度...

    Java【分布式】学习笔记01分布式Java应用

    从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...

    J2EE框架_笔记_事例_程序

    **J2EE笔记要点** 1. **MVC模式**:在J2EE开发中,Model-View-Controller(模型-视图-控制器)模式广泛应用于Web层,帮助分离业务逻辑、视图展示和用户交互。 2. **EJB3.0**:EJB3.0引入了注解,大大减少了XML配置...

    EJB学习笔记2

    【EJB学习笔记2】 EJB,全称Enterprise JavaBeans,是Java EE(现在被称为Jakarta EE)平台的一部分,主要用于构建可复用的、安全的、可伸缩的服务器端应用程序。EJB标准定义了一组规范,使得开发者可以创建分布式...

    Java全相关的漏洞以及技术demo(完整项目及相关代码)

    原生Java、Fastjson、Jackson、Hessian2、XML反序列化漏洞利用和Spring、Dubbo、Shiro、CAS、Tomcat、RMI、Nexus等框架\中间件\功能的exploitsJava Security Manager绕过、Dubbo-Hessian2安全等实践代码。...

    JavaLearnVulnerability:Java漏洞学习笔记 Deserialization Vulnerability

    fastjson漏洞分析 jackson漏洞分析 rmi、ldap spring漏洞分析目前所有文章分析都在博客 后期会转到项目下,所有的分析文章写完之后统一转入。项目优势:1. 每一个漏洞环境都支持单独运行,方便分析2. 漏洞都有分析...

    Java分布式应用学习笔记01分布式Java应用和SOA

    3. **RMI(Remote Method Invocation)**:Java RMI允许对象通过网络调用另一个对象的方法,如同调用本地方法一样。 4. **JMS(Java Message Service)**:Java消息服务提供了一种与语言无关的API,用于在分布式环境...

    Dubbo视频资料

    6. **协议与序列化**:Dubbo支持多种通信协议,如Dubbo、HTTP、RMI等,以及各种序列化方式,如Hessian、FastJSON等。这部分内容将帮你理解不同协议和序列化方式的特点和适用场景。 7. **服务治理**:包括服务的版本...

    最新dubbo视频教程.zip

    "最新dubbo视频教程.txt"可能是课程大纲或者笔记,包含了每个章节的重点和案例,方便学习者按照步骤进行实践。通过这个文本文件,你可以更清晰地了解整个教程的结构和内容。 总的来说,这个教程不仅涵盖了Dubbo的...

Global site tag (gtag.js) - Google Analytics