`

RMI的问题.

阅读更多
做了一个简单的RMI例子,但是一直有问题, 接口:
 
package rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface MyRemote extends Remote {
	
	public String sayHello() throws RemoteException;
	
}

实现类
 
package rmi;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class MyRemoteImp extends UnicastRemoteObject implements MyRemote {

	protected MyRemoteImp() throws RemoteException {

	}

	public String sayHello() throws RemoteException {
		// TODO 自动生成方法存根
		return "Server says,'hey'";
	}

	public static void main(String[] args) {
		try {
			// 产生远程对象
			MyRemote service = new MyRemoteImp();
			// 注册服务
			Naming.rebind("RemoteHello", service);
			System.out.println("++++++++++++++");
		} catch (Exception e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();

		}

	}

}


客户端类:
 
package rmi;

import java.net.MalformedURLException;
import java.rmi.*;

public class MyRemoteClient {
	public static void main(String args[]) {
		new MyRemoteClient().go();
	}

	public void go() {
		try {
			 MyRemote service=(MyRemote)Naming.lookup("rmi:192.168.0.107//RemoteHello");
			 String s=service.sayHello();
			 System.out.println(s);

		} catch (MalformedURLException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
	}
}


在DOS窗口编译成功后执行:
rmic rmi.MyRemoteImp(生成stub文件)
start rmiregistry (打开注册服务)
java rmi.MyRemoteImp(注册)
都顺利执行

打开另一DOS窗口:
执行:java rmi.MyRemoteClient 出现下面错误
Exception in thread "main" java.lang.ClassCastException: sun.rmi.registry.RegistryImpl_Stub
at rmi.MyRemoteClient.go(MyRemoteClient.java:19)
at rmi.MyRemoteClient.main(MyRemoteClient.java:8)

根据提示找到这行:
MyRemote service=(MyRemote)Naming.lookup("rmi:192.168.0.107//RemoteHello");

出现了ClassCastException异常.
Naming.lookup返回的是Remote类.

why????
在网上看了很多贴子,也有人发生一样样的问题,但是没有找到解决办法,大家有没有思路啊?
分享到:
评论

相关推荐

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    这些方法通常抛出`java.rmi.RemoteException`,因为网络通信中可能出现的各种问题。 2. **实现远程对象**:创建一个实现远程接口的类,实现接口中声明的方法。这些方法将被序列化并通过网络传输。 3. **注册远程...

    rmi.rar_Java RMI_RMI java_RMI policy.all_rmi

    6. **部署和运行**:使用RMI时,需要将远程对象导出(`java.rmi.Naming.rebind()`),然后客户端可以通过`java.rmi.Naming.lookup()`查找并调用远程对象。在实际应用中,还需要配置JVM的RMI端口和其他网络参数。 在...

    RMI原理.xls

    RMI原理.xls

    TutorialsPoint Java RMI 教程.epub

    TutorialsPoint Java RMI 教程.epub

    数学方法论RMI方法.pptx

    数学方法论RMI方法.pptx

    [Java RMI].zip

    在"[Java RMI].zip"这个压缩包中,包含了一本关于Java RMI的经典学习资料——"Java RMI.pdf"。这本书详细介绍了如何利用Java RMI来实现远程调用,是Java开发者必备的参考书籍。 **Java RMI的基本概念:** 1. **...

    synaptics_i2c_rmi4.rar_Synaptics_physical

    《Synaptics RMI4 I2C物理层驱动详解》 Synaptics是一家知名的触摸技术供应商,其产品广泛应用于各种电子设备中。在本压缩包文件"synaptics_i2c_rmi4.rar_Synaptics_physical"中,主要包含了针对Synaptics RMI4...

    如何在Spring框架中使用RMI技术.zip

    这个接口需要继承`java.rmi.Remote`接口,并抛出`java.rmi.RemoteException`。 2. **实现远程接口**:创建一个实现远程接口的类,其中包含具体业务逻辑。确保该类的方法与接口中声明的一致,并处理可能抛出的异常。...

    Java RMI Tutorial.pdf

    import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws RemoteException; } ``` 这个接口定义了一个名为`Hello`的远程接口,继承自`Remote`接口。这表明任何实现`...

    java_rmi.rar_RMI java_java.rmi

    2. **实现远程接口**:然后,创建一个实现远程接口的类,该类通常需要继承自`java.rmi.Remote`接口,并且抛出`java.rmi.RemoteException`。在这个实现类中,你需要实现远程接口中的所有方法。 3. **创建并注册远程...

    RMI服务端.zip

    本工程用于研究RMI技术——为RMI服务端 本工程编码方式:UTF-8 参考博客地址:http://blog.csdn.net/gaohuanjie/article/details/38338765

    分布式实验报告RMI.docx

    分布式实验报告 RMI.docx 本实验报告主要介绍了 Java RMI(Remote Method Invocation,远程方法调用)的基本概念和实现步骤。RMI 是一种分布式对象通讯机制,允许运行在一个 Java 虚拟机的对象调用运行在另一个 ...

    javaRMI规范.pdf

    Java Remote Method Invocation (RMI) 是Java平台上的一个核心特性,用于实现分布式对象通信。RMI使得编写和使用能够在不同Java虚拟机(JVM)之间进行交互的程序变得简单易行,无论这些JVM是在同一台计算机还是在多台...

    J2SE.RMI.IIOP.application.design.code.rar_code rmi_rmi iiop

    3. **导出远程对象**:使用`java.rmi.Naming.bind()`方法将远程对象注册到RMI注册表。 4. **创建存根和Skeleton**:对于RMI-IIOP,需要使用`rmic -iiop`命令生成IIOP兼容的存根和Skeleton。 5. **客户端调用**:...

    Java-远程方法调用RMI参数详解.docx

    1. sun.rmi.dgc.checkInterval 这个参数定义了Java RMI运行时检查过期DGC(分布式垃圾收集)租约的时间间隔,单位是毫秒。默认值是`java.rmi.dgc.leaseValue`的一半。调整此参数可以平衡内存管理和网络通信。如果值...

    java_rmi.zip

    接口需要使用`java.rmi.Remote`作为其父接口,并且所有方法必须抛出`java.rmi.RemoteException`。 3. **RMIServer**:实现了RMI接口的服务器端。服务器通过`java.rmi.registry.Registry`注册其服务,使客户端能够...

    2021新能源行业研究报告:企业可再生能源采购在中国的市场现状(RMI).pdf

    2021新能源行业研究报告:企业可再生能源采购在中国的市场现状(RMI).pdf

    rmi.rar_Java RMI_RMI source code_java RMI simple_rmi

    1. **远程接口(Remote Interface)**:这是定义远程方法的Java接口,它标记为`java.rmi.Remote`的子接口。这些接口声明了可以在远程对象上执行的操作。 2. **远程实现(Remote Implementation)**:实现了远程接口...

    rmi.rar_rmi

    接口必须继承自`java.rmi.Remote`,并且它的方法必须抛出`java.rmi.RemoteException`。 2. **远程对象实现**:服务端需要实现上述接口,并创建其实例。这个实例就是远程对象,它负责处理客户端的调用请求。 3. **...

    RMI客户端.zip

    本工程用于研究RMI技术 为RMI客户端 本工程编码方式:UTF 8 参考博客地址:http: blog csdn net gaohuanjie article details 38338765

Global site tag (gtag.js) - Google Analytics