`

最小的RMI例子(jdk6)

 
阅读更多

编写了一个最小的RMI例子(JDK1.6)

服务器端

package stg.server;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Service extends Remote {
	String echo(String client) throws RemoteException;
}

 

 

package stg.server;

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

public class ServiceImpl extends UnicastRemoteObject implements Service {

	protected ServiceImpl() throws RemoteException {
		super();
	}

	public String echo(String client) throws RemoteException{
		return "From rmi Server: Hello! " + client;
	}
}

 

package stg.server;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Deploy {

	/**
	 * @param args
	 * @throws NamingException 
	 * @throws RemoteException 
	 */
	public static void main(String[] args) throws NamingException, RemoteException {
		Service service = new ServiceImpl();
		//registry		
		LocateRegistry.createRegistry(25002);
		//context
		Context namingCtx = new InitialContext();
		//bind
		namingCtx.bind("rmi://localhost:25002/service", service);			
	}
}

 客户端

 

package stg.client;

import javax.naming.Context;
import javax.naming.InitialContext;

import stg.server.Service;

public class Client {

	public static void main(String[] args) throws Exception {
		Context namingCtx = new InitialContext();
		Service service = (Service)namingCtx.lookup("rmi://192.168.8.2:25002/service");
		String echo = service.echo("StoneGreen");
		System.out.println(echo);
	}
}

  

分享到:
评论
1 楼 gpogpogpo 2012-03-25  
Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.MarshalException: error marshalling arguments; nested exception is: 
	java.io.NotSerializableException: com.ccl.rmi.util.ServiceImpl]
	at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:126)
	at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:208)
	at javax.naming.InitialContext.bind(InitialContext.java:400)
	at com.ccl.rmi.util.Deploy.main(Deploy.java:30)
Caused by: java.rmi.MarshalException: error marshalling arguments; nested exception is: 
	java.io.NotSerializableException: com.ccl.rmi.util.ServiceImpl
	at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
	at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:120)
	... 3 more
Caused by: java.io.NotSerializableException: com.ccl.rmi.util.ServiceImpl
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
	... 5 more

相关推荐

    java RMI 详解,实例加原理,想不理解都难

    这是java RMI 详解,通过例子加原理的解说,分步骤,通过简单的代码行行解释,看完想不会都难

    RMI学习例子

    附件分成rmi服务端及客户端两部分,使用jdk1.5,故无需使用rmic命令生成stub及sken文件

    RMI - Java远程方法调用

    Java RMI 远程方法调用的一个小例子

    java教程.rar

    JAVA平台:JDK 1.6 Servlet:Tomcat 5.5 数据库:Access数据库(仅数据库章节需要) 2.本书所附光盘范例 第2章 示例描述:演示简单Java语言基础。 BianLiang.java 一个局部变量的例子 第3章 示例描述:本章...

    Java项目开发与毕业设计指导

    public——public目录包含了Agent的一些例子,而且还应该包含我们自己编写的Agent的根目录。 lib——lib目录包含了Aglet的库文件和其他Aglet技术所需要的库文件。 (2)Aglet的安装 为了安装Aglet平台需要使用...

    java后端源码部署-JavaTutorial:Java教程:基础、中级、高级;常用的工具和Servlet容器使用说明

    注:部分例子基于JDK8。 关键字 数据结构 定时器 数据库 XML 序列化与反序列化 Gson 单元测试 EasyMock WireMock Mockito 网络&I/O RMI HTTP Netty 4.0.x 线程&并发 反射&代理 AOP 脚本语言 加密解密 开源组件 ...

    J2EE应用开发详解

    17 2.1 构建开发环境 17 2.1.1 安装JDK 17 2.1.2 安装Tomcat 21 2.1.3 安装Eclipse 23 2.2 配置开发环境 23 2.3 小结 26 第3章 Java的反射机制 27 3.1 Java反射API 27 3.2 加载类的实例 29 3.2.1 加载class对象的两...

    Think in Java(中文版)chm格式

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业...

    Java初学者入门教学

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    JAVA_Thinking in Java

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    ThinkInJava

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    java 编程入门思考

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    thinkinjava

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    Thinking in Java简体中文(全)

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    java联想(中文)

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    D.2.2 JDK性能评测[2] D.2.3 特殊工具 D.2.4 性能评测的技巧 D.3 提速方法 D.3.1 常规手段 D.3.2 依赖语言的方法 D.3.3 特殊情况 D.4 参考资源 D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 ...

    Spring 2.0 开发参考手册

    17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为Hessian配置DispatcherServlet 17.3.2. 使用...

    spring chm文档

    7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9. 使用“自动...

    Spring-Reference_zh_CN(Spring中文参考手册)

    7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9. 使用“自动代理...

Global site tag (gtag.js) - Google Analytics