`
shen211
  • 浏览: 47433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jdk1.5的rmi

    博客分类:
  • java
阅读更多
接口IRmi
import java.rmi.Remote;
import java.rmi.RemoteException;

import org.dom4j.Document;



public interface IRmi extends Remote {
	public Document getDocument() throws RemoteException;
}

IRmi的实现类
import java.io.File;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class TestRmi extends UnicastRemoteObject implements IRmi, Serializable {
	protected TestRmi() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	Document document = null;

	// private static Rmi instance = new Rmi();

	public Document getDocument() {
		File file = new File("config/flatRMI.xml");
		SAXReader saxReader = new SAXReader();
		try {
			document = (Document) saxReader.read(file);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return document;
	}

	private static TestRmi rmi;

	public static void main(String[] args) throws RemoteException,
			MalformedURLException {
		LocateRegistry.createRegistry(9930);
		rmi = new TestRmi();
		Naming.rebind("//localhost:" + 9930 + "/" + "Rmi", rmi);
	}

}

测试rmi类
import java.rmi.Naming;

import org.dom4j.Document;
import org.dom4j.Element;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			IRmi rmi = (IRmi) Naming.lookup("rmi://localhost:9930/Rmi");
			Document doc = rmi.getDocument();
			Element list = (Element) doc.selectSingleNode("//location");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

将上面的接口和实现类放在一个工程里运行,然后将接口和测试代码放在另外的一个工程里运行,或者在两台机器上分别部署两个工程运行。启动服务,然后通过test里访问,成功。

疑问:
在jdk1.4里运行rmi需要用rmic进行编译生成实现类的stub和skel文件,然后将stub拷贝到client端也就是上面的接口和test那个工程里,然后才能访问。可是,jdk1.5里却直接这样,完全不用生成文件就可以直接访问了。
可是,jdk1.5里依然提供了rmic的编译命令,提供两个版本v1.1,v1.2。前面那个老版本是1.4里的能生成stub和skel两个文件,而1.2里只能生成一个stub文件。
但是现在不生成也能进行远程访问,那还要那个stub文件干什么呢?
关于不生成即能进行远程访问,搜索了下说是动态生成stub文件,然后访问的时候传输到客户端。
动态机制不是很清楚,看到此文章,知道的朋友请留言解说解说。
另外,在eclipse里原来是用builder来进行rmic编译,现在居然配置编译老是报错。
查了下,居然是有个什么完成包涵的东东,看不懂。
问题:
jdk1.5怎么部署好?生成stub还是不生成?
分享到:
评论

相关推荐

    RMI网络编程开发之二 如何搭建基于JDK1.5的分布式JAVA RMI 程序

    本篇将深入探讨如何利用JDK 1.5版本搭建一个基本的分布式Java RMI程序。RMI是Java在分布式计算领域的重要工具,它简化了网络应用的开发,使得开发者可以像操作本地对象一样操作远程对象。 首先,我们需要了解RMI的...

    基于Java—RMI分布式技术的应用研究.pdf

    JDK 1.5版本后,RMI框架会在运行时自动为远程对象生成存根和骨架。 4. RMI的应用 RMI在分布式系统的开发中有着广泛的应用。通过对RMI的工作原理、系统结构、互相操作机制和分布式技术的分析,给出了RMI分布式技术...

    用RMI实现的QQ聊天室(带注册和传文件功能)

    用JavaRMI框架实现,组合了JProgressBar,注意服务器启动用Start.jar不要用Service.jar,客户端是Client.jar可开多个,已经进行过局域网测试(JDK1.5)。注册功能,但要先建个邮件服务器,其中建立一个域,建一个...

    JMX以RMI方式连接的场景示例

    在我们的示例中,我们使用JDK 1.5或更高版本,使用RMI连接方式来连接MBeanServer和Client。我们在机器23上实现了Router类,并在机器26上实现了Client,用于远程访问Router类提供的管理功能。 Router类是一个简单的...

    java网络编程_part2

    本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java网络编 程的基础知识、套接字编程、非阻塞通信、创建HTTP服务器与客户程序、 数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、...

    Jconsole JDK自带的监控程序

    JConsole是一款由Sun Microsystems(现已被Oracle收购)开发并集成于JDK 1.5及以上版本中的图形化监控工具。它能够帮助开发者及运维人员监测和诊断运行中的Java应用程序的性能问题。与市面上的商业监控工具相比,...

    RMI创建及部署教程1

    对于`rmic`命令,它在JDK 1.5及以上版本中只生成`_Stub`类,而在1.4及以下版本会生成`_Stub`和`_Skel`两个文件。虽然`_Skel`文件不再生成,但不影响RMI的正常工作。 4. **客户端准备**: 客户端需要`...

    RMI学习笔记

    在JDK 1.5版本中,RMI的使用变得更加简化,避免了手动编译生成桩(stub)和骨架(skeleton)的过程。本教程将介绍一个基础的RMI HelloWorld应用,以及如何在Spring环境下配置RMI。 首先,我们要创建一个Server端...

    使用Jconsole对java的内存使用情况(JVM)进行监控参照.pdf

    JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。下面我们将详细...

    (完整版)基于JAVA的餐饮管理系统毕业论文.pdf

    在技术选型方面,本系统采用Tomcat5.0作为Web服务器,JDK1.5作为Java开发环境,以及mssql2005数据库管理系统。开发中主要采用JSP、JavaScript和Java技术。此外,通过JSP与数据库的交互实现数据的动态管理。这些技术...

    JAVA课件(老师自己做的)

    JDK从1.0版本开始,随着时间推移,不断引入新特性,如JDK1.1加入了内部类、JavaBean等,JDK1.2引入了Swing和集合框架,JDK1.5添加了泛型,而JDK1.6则包含更多的性能改进和新功能。 Java程序有两种主要类型:应用...

    Java课件及源代码

    Java的发展历程中,经历了多次版本迭代,从JDK1.0到JDK1.5(J2SE5.0),再到后来的Java SE、ME和EE的划分。Java的特点主要包括: 1. **面向对象**:Java是一种纯面向对象的语言,强调对象的封装、继承和多态。它...

    初识JVM – JVM概念.pdf

    - **2004年**:JDK 1.5(也称为J2SE 5或Java 5)带来了泛型、枚举、可变参数等重要改进。 ##### 当代JVM - **2011年**:JDK 7正式发布,包含了G1垃圾收集器、动态语言支持以及64位系统下的压缩指针等新技术。 - **...

    2018年JAVA架构师面试后的问题汇总-word范文 (2页).pdf

    1. **JDK1.5新增功能**:JDK1.5引入了泛型、自动装箱/拆箱、枚举类型、变长参数、可变数组、枚举注解、增强的for循环(foreach)、静态导入、try-with-resources语句等,这些特性提高了代码的可读性和效率。...

    JAVA网络编程.第3版.哈诺德著.扫描版.含源码

    本书讨论了JDK1.4和1.5(现在已命名为J2SE5)中所做的所有修改和增补。本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDPsocket、服务器socket、URL和URI、组播以及...

    Java技术的现状和发展.doc

    10. Annotation(Java注解):自JDK 1.5引入,注解提供了一种将元数据与程序元素关联的方式,影响编译器和运行时行为。 Java与C++相比,具有以下优势: - 它沿用了C/C++的语法基础,易于学习和理解。 - 强制垃圾...

Global site tag (gtag.js) - Google Analytics