接口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还是不生成?
分享到:
相关推荐
本篇将深入探讨如何利用JDK 1.5版本搭建一个基本的分布式Java RMI程序。RMI是Java在分布式计算领域的重要工具,它简化了网络应用的开发,使得开发者可以像操作本地对象一样操作远程对象。 首先,我们需要了解RMI的...
JDK 1.5版本后,RMI框架会在运行时自动为远程对象生成存根和骨架。 4. RMI的应用 RMI在分布式系统的开发中有着广泛的应用。通过对RMI的工作原理、系统结构、互相操作机制和分布式技术的分析,给出了RMI分布式技术...
用JavaRMI框架实现,组合了JProgressBar,注意服务器启动用Start.jar不要用Service.jar,客户端是Client.jar可开多个,已经进行过局域网测试(JDK1.5)。注册功能,但要先建个邮件服务器,其中建立一个域,建一个...
在我们的示例中,我们使用JDK 1.5或更高版本,使用RMI连接方式来连接MBeanServer和Client。我们在机器23上实现了Router类,并在机器26上实现了Client,用于远程访问Router类提供的管理功能。 Router类是一个简单的...
本书的范例都基于最新的JDK 1.5版本,书中内容包括:Java网络编 程的基础知识、套接字编程、非阻塞通信、创建HTTP服务器与客户程序、 数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、...
JConsole是一款由Sun Microsystems(现已被Oracle收购)开发并集成于JDK 1.5及以上版本中的图形化监控工具。它能够帮助开发者及运维人员监测和诊断运行中的Java应用程序的性能问题。与市面上的商业监控工具相比,...
对于`rmic`命令,它在JDK 1.5及以上版本中只生成`_Stub`类,而在1.4及以下版本会生成`_Stub`和`_Skel`两个文件。虽然`_Skel`文件不再生成,但不影响RMI的正常工作。 4. **客户端准备**: 客户端需要`...
在JDK 1.5版本中,RMI的使用变得更加简化,避免了手动编译生成桩(stub)和骨架(skeleton)的过程。本教程将介绍一个基础的RMI HelloWorld应用,以及如何在Spring环境下配置RMI。 首先,我们要创建一个Server端...
JDK1.5提供了JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。下面我们将详细...
在技术选型方面,本系统采用Tomcat5.0作为Web服务器,JDK1.5作为Java开发环境,以及mssql2005数据库管理系统。开发中主要采用JSP、JavaScript和Java技术。此外,通过JSP与数据库的交互实现数据的动态管理。这些技术...
JDK从1.0版本开始,随着时间推移,不断引入新特性,如JDK1.1加入了内部类、JavaBean等,JDK1.2引入了Swing和集合框架,JDK1.5添加了泛型,而JDK1.6则包含更多的性能改进和新功能。 Java程序有两种主要类型:应用...
Java的发展历程中,经历了多次版本迭代,从JDK1.0到JDK1.5(J2SE5.0),再到后来的Java SE、ME和EE的划分。Java的特点主要包括: 1. **面向对象**:Java是一种纯面向对象的语言,强调对象的封装、继承和多态。它...
- **2004年**:JDK 1.5(也称为J2SE 5或Java 5)带来了泛型、枚举、可变参数等重要改进。 ##### 当代JVM - **2011年**:JDK 7正式发布,包含了G1垃圾收集器、动态语言支持以及64位系统下的压缩指针等新技术。 - **...
1. **JDK1.5新增功能**:JDK1.5引入了泛型、自动装箱/拆箱、枚举类型、变长参数、可变数组、枚举注解、增强的for循环(foreach)、静态导入、try-with-resources语句等,这些特性提高了代码的可读性和效率。...
本书讨论了JDK1.4和1.5(现在已命名为J2SE5)中所做的所有修改和增补。本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDPsocket、服务器socket、URL和URI、组播以及...
10. Annotation(Java注解):自JDK 1.5引入,注解提供了一种将元数据与程序元素关联的方式,影响编译器和运行时行为。 Java与C++相比,具有以下优势: - 它沿用了C/C++的语法基础,易于学习和理解。 - 强制垃圾...