Java RMI通讯实例

服务接口

 

import java.rmi.Remote;

import java.rmi.RemoteException;

/**

 * 接口继承Remote,并且方法抛出RemoteException

 * @author sihang

 *

 */

public interface IHelloService extends Remote{

    

    public String helloWorld() throws RemoteException;

    

    public String hello(String name) throws RemoteException;

}

 

服务实现类

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

public class HelloServiceImpl extends UnicastRemoteObject implements IHelloService{

    /**

     * 

     */

    private static final long serialVersionUID = 165569370270920178L;

    /**

     * 构造方法必须抛RemoteException异常

     * @throws RemoteException

     */

    public HelloServiceImpl() throws RemoteException{

    }

    @Override

    public String helloWorld() throws RemoteException

    {

        return "Hello Java RMI";

    }

    @Override

    public String hello(String name) throws RemoteException

    {

        return "Hello," + name;

    }

}

 

服务端程序

import java.net.MalformedURLException;

import java.rmi.AlreadyBoundException;

import java.rmi.Naming;

import java.rmi.RemoteException;

import java.rmi.registry.LocateRegistry;

/**

 * Java RMI服务端

 * @author sihang

 *

 */

public class RMIServer {

    

    public static void main(String[] args) throws RemoteException{

        IHelloService helloService = new HelloServiceImpl();

        try

        {

            //本地远程调用对象注册表,指定端口8082

            LocateRegistry.createRegistry(8082);

            //将服务绑定到注册表中

            Naming.bind("rmi://localhost:8082/helloService", helloService);

        } catch (RemoteException e)

        {

            e.printStackTrace();

        } catch (MalformedURLException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (AlreadyBoundException e)

        {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

}

 

客户端程序

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){

        try

        {

            IHelloService helloService = (IHelloService) Naming.lookup("rmi://localhost:8082/helloService");

            

            System.out.println(helloService.helloWorld());

            System.out.println(helloService.hello("haha"));

        } catch (MalformedURLException e)

        {

            e.printStackTrace();

        } catch (RemoteException e)

        {

            e.printStackTrace();

        } catch (NotBoundException e)

        {

            e.printStackTrace();

        }

        

    }

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值