本人刚刚毕业半年,第一次写技术方面的文章,主要目的就是记录自己在工作中以及平时学习过程中对一些知识点的理解,与大家一起分享,肯定有写的不好的地方和错误,希望给位批评指出,大家一起成长,谢谢~~。下面是关于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();
}
}
}
分享到:
相关推荐
### EJB 基于Java的远程方法调用(RMI)技术 #### 一、EJB概述 **Enterprise JavaBeans (EJB)** 是一种基于Java的...此外,通过RMI技术的支持,EJB能够实现高效的远程调用,使得跨系统的组件交互变得更加简单高效。
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像调用本地方法一样。RMI系统的核心概念是客户端可以调用服务器端的对象上...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行远程对象的调用。RMI使得开发者可以像调用本地对象一样调用网络上的对象,极大地简化了...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于构建分布式应用程序的技术。它允许Java对象在不同的网络计算机之间进行交互,仿佛它们都在同一台机器上运行。这个压缩包“java_rmi.zip...
- 考虑使用缓存减少远程调用次数。 - 对于大量数据传输,考虑使用更高效的数据格式(如二进制)。 #### 七、结论 Java RMI 是一种强大且灵活的分布式编程模型,它为开发者提供了构建复杂分布式系统的手段。通过...
总的来说,基于Java RMI的分布式WebGIS模型是一种灵活、高效且易于维护的架构,它充分利用了Java的跨平台特性和RMI的远程调用能力,实现了地理信息在Web环境下的分布式共享和处理,为用户提供了一个便捷、强大的在线...
Java Remote Method Invocation (RMI) 是Java平台提供的一种强大的分布式计算技术,允许在不同网络节点上的Java对象之间进行远程调用。RMI是构建分布式Java应用程序的基础,它简化了跨网络通信的过程,使得开发者...
RMI(Remote Method Invocation,远程方法调用)是Java中的一种技术,允许一个Java对象调用另一个在不同JVM(Java虚拟机)上的对象的方法。RMI是Java分布式计算的基础,它使得Java程序可以在网络环境中进行通信和...
在实际应用中,RMI通常与其他技术结合使用,如EJB(Enterprise JavaBeans)或JMS(Java Message Service)来构建更复杂的企业级应用。虽然现代的Java开发中,RMI可能不是首选的分布式计算技术(例如,Spring框架的...
RMI使得Java对象能够调用远程对象的方法,而IIOP则是CORBA中的通信协议,它允许不同操作系统和网络环境下的对象进行互操作。这个源代码包显然为Java EJB(Enterprise JavaBeans)初学者提供了学习资源,特别是关于...
- **`java.rmi.RemoteException`**:远程调用异常。 综上所述,Java RMI是一种强大的分布式计算工具,它不仅能够简化分布式Java应用程序的开发,还能够在多种环境中实现高效的远程服务调用。然而,它的局限性也意味...
2. **创建Session Bean**: 如果是Session Bean,客户端通过Home接口的`create()`方法创建一个Remote接口实例,这个过程可能涉及远程方法调用(RMI)。 3. **调用业务方法**: 客户端通过Remote接口调用EJB的业务方法...
- **远程方法调用(Remote Method Invocation, RMI)**:客户端通过RMI调用EJB的接口,EJB容器负责透明地处理网络通信和对象序列化。 - **本地接口调用(Local Interface)**:当客户端和EJB在同一个JVM中运行时,...
具体来说,RMI只能支持客户端和服务器端都是Java程序的远程调用,无法与其他非Java语言编写的应用进行通信。 #### 4. RMI的使用限制 RMI要求客户端和服务器都使用Java编写,但只要确保双方运行在兼容版本的Java...
在实际应用中,可能需要优化RMI性能,如减少远程调用次数,使用批量调用,或者采用Java序列化之外的更高效的数据交换格式,如protobuf或JSON。 **RMI的局限性** 尽管RMI强大,但也有其局限性,比如只支持Java,跨...
- ** skeletons**:在远程服务器上,用于接收和执行远程调用的代理。 - **注册表**:RMI注册表(RMIREGISTRY)是服务发现机制,用于查找和绑定远程对象的引用。 2. **RMI工作流程** - **导出远程对象**:在...
EJB支持分布式计算,Bean可以通过RMI(Remote Method Invocation)进行远程调用,跨越网络边界。 8. **EJB与Web服务**: EJB可以作为Web服务暴露,使用JAX-WS(Java API for XML Web Services)来实现。 9. **...