使用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
分享到:
相关推荐
信息熵是描述一个随机变量不确定性的度量,由Claude Shannon在信息论中首次提出。对于离散随机变量X,其熵H(X)定义为所有可能值的负概率对数的期望值。熵越大,表示随机变量的不确定性越高。 在"wine.txt"这个文件...
文档首次发布于1997年2月10日,由Sun Microsystems公司版权所有。Sun Microsystems公司授予用户一个全球性的、非独家的、不可转让的、无限期的许可,允许用户创建和分发符合本规范的“干净房间”实现。这种实现必须...
这个实验报告的主题是“分布式系统实验报告之一”,显然,它涵盖了初次接触分布式系统时可能会遇到的一些基本概念、设计原则以及实现技术。下面将详细讨论相关知识点。 一、分布式系统基础 1. 定义:分布式系统是由...
这个项目主要是为了学习目的而创建的,尽管在技术深度上可能相对初级,但作为开发者初次尝试的成果,它涵盖了基本的网络编程和系统集成概念。 RMI是Java平台中的一个重要特性,它允许一个Java对象在一台机器上执行...
- **预加载**:RMIwarmup可能涉及预加载远程对象和相关类,以减少首次调用时的延迟。 - **连接池**:使用连接池可以复用已建立的连接,减少创建和销毁连接的开销。 - **并发控制**:优化并发策略,如使用线程池,...
8. **缓存预热**:在系统启动时,将常用的数据加载到缓存中,以减少首次访问的延迟,这被称为缓存预热。可以通过编写特定的预热程序实现。 9. **缓存的持久化**:ehCache支持将缓存数据存储到硬盘上,以在应用重启...
Ehcache是一款广泛使用的开源Java缓存系统,自2003年10月首次发布以来,不断发展壮大。随着用户的增加,Ehcache逐渐增加了许多被频繁请求的功能,使其功能更加完善。目前,Ehcache已应用于多个领域,包括Hibernate...
在JDK 5.0及更高版本中,RMI不再需要预生成的stub,而是直接使用动态代理,简化了RMI的使用。同样,许多J2EE容器,尤其是那些基于EJB的技术,也广泛使用动态代理来实现安全性和事务管理,因为拦截器(interceptors)...
5. **JEP 360: Remove the RMI Activation System**:RMI激活系统在现代Java应用中很少使用,因此在OpenJDK 14中被移除,以减少不必要的复杂性。 6. **JEP 361: macOS/AArch64 Port**:首次支持MacOS在ARM64架构上...
外围区域允许在多台服务器间分发缓存数据,而远程区域通过RMI实现跨服务器的缓存管理。JCS的可插入控制器使得使用多个缓存区域变得简单,开发者可以专注于数据的获取和设置。 3. **缓存整合与选择**:对于基于...
- **RMI和JNDI**:远程方法调用(RMI)和Java命名目录接口(JNDI)的简介。 - **审查关系型数据库**:对关系型数据库的基础知识进行回顾。 - **注解参考**:EJB 3.0中使用的注解列表及其含义。 - **部署描述符参考**:...
它支持Java RMI(远程方法调用)和EJB(企业级JavaBean)技术,使得开发者能够轻松构建跨网络的应用。通过Jbuilder,你可以设计服务端和客户端的交互,调试远程方法,以及管理和部署EJB组件,从而实现分布式系统的...
- **远程方法调用(Remote Method Invocation, RMI)**:客户端通过RMI调用EJB的接口,EJB容器负责透明地处理网络通信和对象序列化。 - **本地接口调用(Local Interface)**:当客户端和EJB在同一个JVM中运行时,...
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的安装,它支持多个操作...
通过使用JMS(Java Message Service)或RMI(Remote Method Invocation)通信协议,oscache可以在集群中的不同节点之间同步缓存状态,确保数据的一致性。 在实际应用中,oscache通常与Spring框架集成,以实现更灵活...
2. **激活(Activation)**:对象可以被客户端动态地激活,即当客户端首次请求时,服务器端会创建该对象。这分为两种方式:早期绑定(Early Binding)和晚期绑定(Late Binding)。 3. **透明性(Transparency)**...
1. **初始化设置**:在首次使用评估板之前,需要根据具体的使用环境进行必要的配置,如选择正确的接口模式(MII 或 RMII)。 2. **硬件连接**:根据所需连接类型(RJ45 或光纤),将相应的线缆连接到评估板上。 3....
这一过程对于数据持久化、跨进程通信(如RMI,Remote Method Invocation)以及分布式计算等场景至关重要。下面将详细介绍Java对象的序列化和反序列化过程。 1. **序列化(Serialization)**: - **概念**:序列化是...