Ice系列——HelloIce

HelloIce: 开发环境Zeroc3.5.1,Eclipse
(1) 定义slice文件 hello.ice

module demo{
    interface HelloIce{
    string hello();
    };
    };

Eclipse 自动生成转换后的Java文件。

(2) 服务实现 Impl

package com.demo.ice;

import Ice.Current;
import demo._HelloIceDisp;

public class HelloIceImpl extends _HelloIceDisp{

    @Override
    public String hello(Current __current) {
        // TODO Auto-generated method stub
        return "Hello Ice";
    }


}

(3) HelloIce服务器Server实现

package com.demo.ice;

public class HelloIceServer {

    public static void main(String[] args){
        int status =0;
        Ice.Communicator ic=null;
        try{
            //初始化Communicator连接对象,负责处理客户端的连接,可以进行设置,如客户端连接数量
            ic = Ice.Util.initialize(args);

            // 创建Adapter对象,理解为一个适配器,只要连接这个endpoints 都返回一个adapter对象,广义的
            Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("HelloAdapter", "default -p 10000");

            // 实例化一个服务对象,具体的服务对象
            HelloIceImpl servant = new HelloIceImpl();
            HelloIceImpl servant1 = new HelloIceImpl();
            //将服务对象添加到adapter中,并设置ID进行关联,很多个服务对象,必须确定是哪一个对象
            adapter.add(servant, Ice.Util.stringToIdentity("HelloService"));
            adapter.add(servant1, Ice.Util.stringToIdentity("HelloService1"));


            // 启动adapter
            adapter.activate();

            //服务保持监听状态,直到退出
            System.out.println("Server started");
//          if(ic.)

            ic.waitForShutdown();
        }catch(Exception e){
            e.printStackTrace();
            status=1;
        }finally{
            if (ic!=null){
                ic.destroy();
            }
        }

        System.exit(status);
    }

}

(4) HelloIce Client实现

package com.demo.ice;

import demo.HelloIcePrx;
import demo.HelloIcePrxHelper;

public class HelloIceClient {

    public static void main(String[] args) {
        int status =0;
        Ice.Communicator ic=null;
        try{
            //初始化Communicator连接对象,负责处理客户端的连接,可以进行设置,如客户端连接数量
            ic = Ice.Util.initialize(args);

            // 客户端代理proxy对象,访问确定的endpoints,返回的对象是广义的
            Ice.ObjectPrx base = ic.stringToProxy("HelloService:default -p 10000");

            // 类似于强制转换, 转换为具体的对象。
            HelloIcePrx proxy = HelloIcePrxHelper.checkedCast(base);

            if(proxy==null)
            {
                throw new Error("Invalid proxy");
            }
            // 实际上是调用服务器端的方法。
            String retMsg = proxy.hello();
            System.out.println(retMsg);
        }catch(Exception e){
            e.printStackTrace();
            status=1;
        }finally {
            if (ic!= null){
                ic.destroy();
            }
        }
        System.exit(status);

    }

}

(5)运行结果
server:

Server started

Client

Hello Ice

(6) 代码组织图片
这里写图片描述

这里写图片描述

实现过程中的一些代码已有注释,具体的分析在后面章节中进行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值