EJB

EJB(Enterprise Java Beans) ,企业Java Beans。EJB实现原理就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。

EJB 可以理解为是运行在独立服务器上的一组执行指定任务的类的集合(组件),客户端是通过网络(例如:rmi://localhost:8111/user)对EJB 对象进行调用的。

RMI

RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个 Server 端和一个 Client 端。

Server端:Server 端通常会创建一个对象,并使之可以被远程访问。这个对象被称为远程对象。Server 端需要注册这个对象可以被 Client 远程访问。

package com.wilhelm.rmi.server;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class RmiServer {

    public static void main(String[] args) {
        try {
            UserService userService = new UserServiceImpl(); //实例化业务对象
            LocateRegistry.createRegistry(8111); //注册服务端口号
            Naming.rebind("rmi://localhost:8111/user",userService); //绑定server业务对象访问的uri
            System.out.println("start server, port is 8111");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行结果
在这里插入图片描述
注:
Client 端:Client 端调用可以被远程访问的对象上的方法,Client 端就可以和 Server 端进行通信并相互传递信息。

package com.wilhelm.rmi.client;

import com.wilhelm.rmi.server.User;
import com.wilhelm.rmi.server.UserService;

import java.rmi.Naming;

public class RmiClient {

    public static void main(String[] args) {
	// write your code here
        User result;
        String userId = "1";
        try {
            UserService access = (UserService) Naming.lookup("rmi://localhost:8111/user"); //连接server端对象
            result = access.findUser(userId); //调用server端对象方法
            System.out.println("query: " + userId);
            System.out.println("result: " + result );
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}

执行结果
在这里插入图片描述

EJB与RMI的关系

EJB的基础是RMI(Remote Method Invocation)技术。EJB通过RMI把组件创建为远程对象,客户端就能通过网络调用远程的EJB对象了。EJB 虽然用了RMI 技术,但是却只需要定义远程接口而无需生成他们的实现类,这样就将RMI 技术中的一些细节问题屏蔽了。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐