windows 下 zeroc ice java的使用

首先,去https://zeroc.com/download.html下载安装包 (我下载的是Ice-3.6.0-WebInstaller.exe)并安装

安装完成后,配置环境变量 在path变量中添加 D:/ZeroC\Ice-3.6.0\bin

在cmd命令行中 输入:slice2java 

windows 下 zeroc ice java的使用

在myeclipse下建如下工程:

windows 下 zeroc ice java的使用

1.在src下创建calculate.ice文件

module demo{
    interface Calculate {
        int add(int a,int b);
    };
};

    cmd命令行进入文件所在目录,执行slice2java calculate.ice,会生成一系列的文件

windows 下 zeroc ice java的使用

然后,在ice的安装目录中找到ice-3.6.0.jar  引入到工程


CalculateI.java

package demo.servant;

import Ice.Current;
import demo._CalculateDisp;

public class CalculateI extends _CalculateDisp{

    /**
     */
    private static final long serialVersionUID = 7280293107025514381L;

    @Override
    public int add(int a, int b, Current __current) {
        return a+b;
    }


}

    Server.java

package demo.server;

import demo.servant.CalculateI;

public class Server {

    public static void main(String[] args) {
        int status = 0;
        Ice.Communicator ic = null;

        try {
            // 初使化连接
            ic = Ice.Util.initialize(args);
            
            //创建适配器,并要求适配器使用缺省的协议(TCP/IP监听端口为10000的请求)
            Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(
                    "SimpleCalculateAdapter", "default -p 10000");
            //实例化
            Ice.Object object = new CalculateI();
            
            adapter.add(object, Ice.Util.stringToIdentity("SimpleCalculateAdapter"));
            
            //激活适配器
            adapter.activate();
            
            //让服务在退出之前,一直持续对请求的监听
            ic.waitForShutdown();

        } catch (Ice.LocalException e) {
            e.printStackTrace();
            status = 1;
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
            status = 1;
        }finally{
            if(ic != null){
                ic.destroy();
            }
        }
        
        System.exit(status);

    }

}

client.java

package demo.client;

import demo.CalculatePrx;
import demo.CalculatePrxHelper;

public class Client {
    
    public static void main(String[] args) {
        int status = 0;
        Ice.Communicator ic = null;

        try {
            // 初使化通宵器
            ic = Ice.Util.initialize(args);
            
            //转入远程服务单元的名称,网络协议、ip及端口,获取Calculate的远程代理,这里使用的stirngToProxy方式
            Ice.ObjectPrx base = ic.stringToProxy("SimpleCalculateAdapter:default -p 10000");
            
            //通过checkedCast向下转换,获取calculate接口的远程,并同时检测根据传入的名称获取的服务单元是否Calculate的代理接口,如果不是则返回null对象
            CalculatePrx calculate = CalculatePrxHelper.checkedCast(base);
            if (calculate == null) {
                throw new Error("Invalid proxy");
            }
            
            System.out.println(calculate.add(7, 8));
            
        } catch (Ice.LocalException e) {
            e.printStackTrace();
            status = 1;
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
            status = 1;
        }finally{
            if(ic != null){
                ic.destroy();
            }
        }
        
        System.exit(status);

    }

}


先启动server,在启动client   控制台输出15   完成。

你可能感兴趣的:(windows 下 zeroc ice java的使用)