`
生活的聆听者
  • 浏览: 16701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA RMI与EJB远程调用模型

    博客分类:
  • EJB
 
阅读更多
本人刚刚毕业半年,第一次写技术方面的文章,主要目的就是记录自己在工作中以及平时学习过程中对一些知识点的理解,与大家一起分享,肯定有写的不好的地方和错误,希望给位批评指出,大家一起成长,谢谢~~。下面是关于EJB调用与java  RMI方面的自己见解。
用过服务器的程序员应该都知道,在rich client 或者通过其他方式调用服务器端部署的EJB应用时一般都是在客户端调用lookup(“JndiName”)向服务器端发送一个lookup的jndi名称,然后服务器端存在这个JNDI名称的话会向客户端返回一个与JNDI绑定的ejb对象,最后客户端通过这个返回的EJB对象来调用业务方法。整个EJB的调用过程原理大体就是这样,但是对于EJB容器的具体实现还是比较复杂的,本人水平有限还达不到详述的水平。就整个这个EJB调用的过程而言,最基础的理论基础就是RMI,实际上EJB容器对于这些的具体实现就是RMI,


第一步:创建一个简单的远程接口
package com.rmi.demo;

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

public interface FirstRmiInterface extends Remote{
	public void sayHello() throws RemoteException;
}


第二步:对远程接口实现
package com.rmi.demo;

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

public class FirstRmiInterfaceImpl extends UnicastRemoteObject implements FirstRmiInterface{

	protected FirstRmiInterfaceImpl() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * 
	 */

	@Override
	public void sayHello() throws RemoteException {
		// TODO Auto-generated method stub
		System.out.println("HELLO WORLD FIRST RMI DEMO");
	}

}

第三步:创建一个远程服务端:
package com.rmi.demo;

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

public class RmiServer {
	public static void main(String args[]){
		try {
			LocateRegistry.createRegistry(1000);
			FirstRmiInterface rmiInterface = new FirstRmiInterfaceImpl();
			  Naming.bind("rmi://localhost:1000/rmiObject",rmiInterface);
			//在远程服务器端绑定远程对象的接口,供客户端进行远程调用。实际上这个简单的模型就是ejb远程调用的简单模型。这里的远程服务端绑定对象相当于在应用服务器(weblogic、glassfish等)端部署一个EJB应用,这时服务器的EJB容器就会将部署的EJB以JNDI的形式发布【也可以其他形式】,然后客户端就可以通过特定的方式进行远程EJB的调用访问。
			System.out.println("Rmi Bind Success");
			
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (AlreadyBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}



第四步:创建客户端,并访问远程端绑定的对象
package com.rmi.demo;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

public class RmiClient {
	public static void main(String args[]){
		FirstRmiInterface rmiInterface;
		try {
			rmiInterface = (FirstRmiInterface)Naming.lookup("rmi://localhost:1000/rmiObject");
			rmiInterface.sayHello();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}



分享到:
评论

相关推荐

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    8.3.1 开发远程调用的无状态 Session Bean 304 8.3.2 开发本地调用的无状态 Session Bean 311 8.4 发布Session Bean 314 8.4.1 打包EJB-JAR 315 8.4.2 Annotation与部署描述文件 315 8.5 开发有状态的Session Bean ...

    EJB初学者常有的十一个疑惑

    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB...

    非常值得下载的java笔试大汇总

    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...

    Java相关技术(详细资料)

    一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。  4、Java IDL(Java Interface Definition Language) ...

    从Java走向Java+EE+.rar

    第17章 JNDI和Java RMI远程调用 249 17.1 用Java RMI实现远程调用 250 17.2 利用JNDI定位资源 256 17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265...

    java 面试题 总结

    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...

    h_JAVA 2应用编程150例.rar

    实例57 远程方法调用 174 实例58 调用JINI方法 176 第5章 Java数据库编程 179 实例59 应用JDBC-ODBC桥 180 实例60 使用单独JDBC连接驱动程序 184 实例61 数据库基本操作 185 实例62 使用游标 189 实例63 使用事务 ...

    java应用软件程序设计

    Reply模式的JMS应用 421 实例120 使用Java IDL 426 实例121 EJB与CORBA的交互 430 实例122 基于EJB的真实世界模型 433 实例123 EJB的商业应用——定购单 447 第11章 Java 2 Platform Micro Edition...

    超级有影响力霸气的Java面试题大全文档

    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...

    J2EE应用开发详解

    第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用服务器 13 1.5 小结 16 第2章 建立...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    新手宝典J2EE专家起步图解

    简单的说,J2EE是一套商业应用系统模型或者说是一种规范,它包含java远程方法调用(RMI)、企业级javaBean(EJB)、java消息服务(JMS),java服务器页面(JSP)等等。利用J2EE的资源我们可以方便、迅速的创建一个...

    J2EE面试题

    d) public interface Demo extends Remote {public long test() throws java.rmi.RemoteException;} 参考答案 17) 下列选项中能获得UserTransaction的是ab a) 通过上下文的.getUserTransaction()方法拿到...

    Spring中文帮助文档

    14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL 14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 ...

    Spring API

    14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL 14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 ...

Global site tag (gtag.js) - Google Analytics