首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 网络编程,RMI,EJB其间那些屁事(一)

2012-12-18 
java 网络编程,RMI,EJB之间那些屁事(一)?????????? 在java的开发中不可避免的遇到java网络编程,RMI,EJB的

java 网络编程,RMI,EJB之间那些屁事(一)

?????????? 在java的开发中不可避免的遇到java网络编程,RMI,EJB的使用,他们的关系是什么呢? RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。RMI的基于特定接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。

RMI基本原理

????????? 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有http、tcp、udp等等,http、tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输协议,网络IO,主要有bio、nio、aio三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。

?????? 由此可知RMI底层采用网络编程的,既RMi基于套接字编程的,RMI是EJB远程调用的基础,仅用RMI技术就可以实现远程调用,使用EJB是为了实现组件,事物,资源池,集群等功能。

下面RMI学习:

服务接口:

package com.easyway.space.basic.network.sockets.rmi;import java.net.MalformedURLException;import java.rmi.Naming;import java.rmi.NotBoundException;import java.rmi.RemoteException;import java.util.HashMap;import java.util.Map;/** * Rmi监控的客户端的服务 *  * 客户端查找远程对象,并调用远程方法 *  * @author longgangbai * */public class RmiMonitorClient {//用户缓存使用的实例public Map<Class,Object> serviceMap=new HashMap<Class,Object>();public RmiMonitorService monitorService;public String ip="localhost";public int port=8889;public int interactive(int funindex ,String param){  try { if(monitorService==null) { monitorService=getMonitorService(RmiMonitorService.class); }return monitorService.interactive(funindex, param);} catch (RemoteException e) {e.printStackTrace();}return 0;}    /**     * 查找服务对象的应用     * @param clazz     * @return     */public RmiMonitorService  getMonitorService(Class clazz){try {Object object=serviceMap.get(clazz);if(object==null){monitorService=(RmiMonitorService)Naming.lookup("rmi://"+ip+":"+port+"/monitor");serviceMap.put(RmiMonitorService.class, monitorService);}else{   monitorService=(RmiMonitorService)serviceMap.get(clazz);}return monitorService;} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NotBoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return monitorService;}public static void main(String[] args) {RmiMonitorClient  client=new RmiMonitorClient();int result=client.interactive(9, "i love you");System.out.println("result ="+result);}}

?

1 楼 空谷悠悠 2011-01-12   非常的失望!
这里似乎服务程序和客户端程序都必须运行在本机,假如如客户端运行在其它机器上呢?LZ尝试或将localhost改为其它机器的IP吗?如果行,又该怎么操作,求解答
2 楼 longgangbai 2011-01-17   晕死,兄弟,EJB的分布式与ip没有关系的,不知道哥们怎么想的?ip改为非localhost如果不行,怎么还是分布式呢?空谷悠悠 写道非常的失望!
这里似乎服务程序和客户端程序都必须运行在本机,假如如客户端运行在其它机器上呢?LZ尝试或将localhost改为其它机器的IP吗?如果行,又该怎么操作,求解答

晕死,兄弟,EJB的分布式与ip没有关系的,不知道哥们怎么想的?ip改为非localhost如果不行,怎么还叫分布式呢?
3 楼 lhc1986 2012-06-21   rmi貌似不是基于套接字编程的吧,虽然都是通过ip+端口形式 4 楼 longgangbai 2012-07-04   lhc1986 写道rmi貌似不是基于套接字编程的吧,虽然都是通过ip+端口形式
貌似是的,个人简介纯属个人简介。

热点排行