`
songsong
  • 浏览: 11560 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

初次使用RMI

阅读更多
使用RMI远程调用,可以减少客户端与服务端对数据的转化过程
直接使用对象存放数据,但同时引了了些复杂问题
对RMI远程调用应该使用动态代理模式,而不是单纯的直接调用接口
还在对bean的管理问题,是否能与spring很好的接合?

Rem.java
/*
 * Created 2005-1-8
 * (c); songsong  zoday@hotmail.com
 */
package com.zoday.beans;
import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * @author songsong
 */
public interface Rem extends Remote {
	
	public String getMessage(); throws RemoteException;

}



RemClient.java
/*
 * Created 2005-1-8
 * (c); songsong  zoday@hotmail.com
 */
package com.zoday.client;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import com.zoday.beans.*;

/**
 * @author songsong
 */
public class RemClient {

	public static void main(String[] args); {
		try {
			String host = "192.168.0.251";
			Rem remObject=(Rem);Naming.lookup("rmi://" + host + "/Rem");;
			System.out.println(remObject.getMessage(););;
		} catch (MalformedURLException e); {
			e.printStackTrace();;
		} catch (RemoteException e); {
			e.printStackTrace();;
		} catch (NotBoundException e); {
			e.printStackTrace();;
		}
	}
}


RemImpl.java
/*
 * Created 2005-1-8
 * (c); songsong  zoday@hotmail.com
 */
package com.zoday.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import com.zoday.beans.*;

/**
 * @author songsong
 */
public class RemImpl extends UnicastRemoteObject implements Rem {

	public RemImpl(); throws RemoteException {

	}

	public String getMessage(); throws RemoteException {
		return ("hello songsong");;
	}

}


RemServer.java
/*
 * Created 2005-1-8
 * (c); songsong  zoday@hotmail.com
 */
package com.zoday.server;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;


/**
 * @author songsong
 */
public class RemServer {

	public static void main(String[] args); {
		System.out.println("start");;
		try {
			RemImpl localObject = new RemImpl();;
			Naming.rebind("//127.0.0.1/Rem", localObject);;
		} catch (RemoteException e); {
			e.printStackTrace();;
		} catch (MalformedURLException e); {
			e.printStackTrace();;
		}
		System.out.println("RMI start success");;
	}
}


使用rmic 生成stub 程序和 skeleton
客户端只需要用到RemClient.java和Rem.java

http://forum.iteye.com/viewtopic.php?t=3832&postdays=0&postorder=asc&start=0
分享到:
评论

相关推荐

    RMI_newmark_rmi_TheInformation_源码

    信息熵是描述一个随机变量不确定性的度量,由Claude Shannon在信息论中首次提出。对于离散随机变量X,其熵H(X)定义为所有可能值的负概率对数的期望值。熵越大,表示随机变量的不确定性越高。 在"wine.txt"这个文件...

    编程语言JavaRMI入门教程.pdf

    文档首次发布于1997年2月10日,由Sun Microsystems公司版权所有。Sun Microsystems公司授予用户一个全球性的、非独家的、不可转让的、无限期的许可,允许用户创建和分发符合本规范的“干净房间”实现。这种实现必须...

    分布式系统实验报告之一

    这个实验报告的主题是“分布式系统实验报告之一”,显然,它涵盖了初次接触分布式系统时可能会遇到的一些基本概念、设计原则以及实现技术。下面将详细讨论相关知识点。 一、分布式系统基础 1. 定义:分布式系统是由...

    火车票售票系统(网络版)

    这个项目主要是为了学习目的而创建的,尽管在技术深度上可能相对初级,但作为开发者初次尝试的成果,它涵盖了基本的网络编程和系统集成概念。 RMI是Java平台中的一个重要特性,它允许一个Java对象在一台机器上执行...

    RMIwarmup

    - **预加载**:RMIwarmup可能涉及预加载远程对象和相关类,以减少首次调用时的延迟。 - **连接池**:使用连接池可以复用已建立的连接,减少创建和销毁连接的开销。 - **并发控制**:优化并发策略,如使用线程池,...

    ehCache 使用例子

    8. **缓存预热**:在系统启动时,将常用的数据加载到缓存中,以减少首次访问的延迟,这被称为缓存预热。可以通过编写特定的预热程序实现。 9. **缓存的持久化**:ehCache支持将缓存数据存储到硬盘上,以在应用重启...

    EhcacheUserGuide

    Ehcache是一款广泛使用的开源Java缓存系统,自2003年10月首次发布以来,不断发展壮大。随着用户的增加,Ehcache逐渐增加了许多被频繁请求的功能,使其功能更加完善。目前,Ehcache已应用于多个领域,包括Hibernate...

    Java理论与实践:用动态代理进行修饰

    在JDK 5.0及更高版本中,RMI不再需要预生成的stub,而是直接使用动态代理,简化了RMI的使用。同样,许多J2EE容器,尤其是那些基于EJB的技术,也广泛使用动态代理来实现安全性和事务管理,因为拦截器(interceptors)...

    OpenJDK14U-jdk_x64_windows_hotspot_14_36.zip

    5. **JEP 360: Remove the RMI Activation System**:RMI激活系统在现代Java应用中很少使用,因此在OpenJDK 14中被移除,以减少不必要的复杂性。 6. **JEP 361: macOS/AArch64 Port**:首次支持MacOS在ARM64架构上...

    JAVAWEB缓存技术

    外围区域允许在多台服务器间分发缓存数据,而远程区域通过RMI实现跨服务器的缓存管理。JCS的可插入控制器使得使用多个缓存区域变得简单,开发者可以专注于数据的获取和设置。 3. **缓存整合与选择**:对于基于...

    Manning.EJB.3.0.in.Action

    - **RMI和JNDI**:远程方法调用(RMI)和Java命名目录接口(JNDI)的简介。 - **审查关系型数据库**:对关系型数据库的基础知识进行回顾。 - **注解参考**:EJB 3.0中使用的注解列表及其含义。 - **部署描述符参考**:...

    Jbuilder速成(4)

    它支持Java RMI(远程方法调用)和EJB(企业级JavaBean)技术,使得开发者能够轻松构建跨网络的应用。通过Jbuilder,你可以设计服务端和客户端的交互,调试远程方法,以及管理和部署EJB组件,从而实现分布式系统的...

    基于Java的各种EJB之间的调用示例.zip

    - **远程方法调用(Remote Method Invocation, RMI)**:客户端通过RMI调用EJB的接口,EJB容器负责透明地处理网络通信和对象序列化。 - **本地接口调用(Local Interface)**:当客户端和EJB在同一个JVM中运行时,...

    TongWeb6.1快速使用手册.pdf

    TongWeb6.1支持多种Java EE规范标准,包括但不限于JSP 2.2、Servlet 3.0、JSF 2.0、JSTL 1.2、EJB 3.1等,同时也支持JTA、JDBC、HTTP、JMS、RMI等资源和服务协议的安全特性。 对于TongWeb6.1的安装,它支持多个操作...

    oscache对象缓存

    通过使用JMS(Java Message Service)或RMI(Remote Method Invocation)通信协议,oscache可以在集群中的不同节点之间同步缓存状态,确保数据的一致性。 在实际应用中,oscache通常与Spring框架集成,以实现更灵活...

    一步一步学习Remoteing

    2. **激活(Activation)**:对象可以被客户端动态地激活,即当客户端首次请求时,服务器端会创建该对象。这分为两种方式:早期绑定(Early Binding)和晚期绑定(Late Binding)。 3. **透明性(Transparency)**...

    KSZ8041评估板

    1. **初始化设置**:在首次使用评估板之前,需要根据具体的使用环境进行必要的配置,如选择正确的接口模式(MII 或 RMII)。 2. **硬件连接**:根据所需连接类型(RJ45 或光纤),将相应的线缆连接到评估板上。 3....

    Java对象的序列化与反序列化Java开发Java经验技巧

    这一过程对于数据持久化、跨进程通信(如RMI,Remote Method Invocation)以及分布式计算等场景至关重要。下面将详细介绍Java对象的序列化和反序列化过程。 1. **序列化(Serialization)**: - **概念**:序列化是...

Global site tag (gtag.js) - Google Analytics