ICE 2.0学习笔记1(HelloWorld)

80酷酷网    80kuku.com

  笔记
Hello.ice #ifndef SIMPLE_ICE#define SIMPLE_ICE//名字空间 or 包名module demo.slice.Hello{ interface Hello{  void printString(string s); };};
#endif

服务器: HelloI.java
package demo.ice.Hello.server;

import demo.slice.Hello._HelloDisp;import Ice.Current;

/** * author MudfishCN * * servant class: HelloI * _HelloDisp 基类由slice2java编译器生成,它是一个抽象类。 * _HelloDisp 抽象类包含一个printString()方法。 */public class HelloI extends _HelloDisp {

    /* (non-Javadoc)     * see demo._HelloOperations#printString(java.lang.String, Ice.Current)     */    public void printString(String s, Current __current) {        // TODO Auto-generated method stub        System.out.println(s);    }

}

HelloServer.java
 package demo.ice.Hello.server;

import Ice.LocalException;

/** * author  MudfishCN * version: 1.0.1  */public class HelloServer {    public static void main(String[] args) {        // 定义status变量,用来控制服务器.        int status = 0;        Ice.Communicator ic = null; //声明一个Communicator 对象ic        try {            // 初始化Ice运行时            ic = Ice.Util.initialize(args);            /*             * 创建一个对象适配器(ObjectAdapter)对象IOAdapter,并初始化之。             * 参数"HelloWorldAdapter":表示适配器的名字。             * 参数"default -p 10000":表示适配器使用缺省协议(TCP/IP)在端口10000处监听到来的请求。             * 服务器配置完成.             */            Ice.ObjectAdapter IOAdapter = ic.createObjectAdapterWithEndpoints(                    "HelloWorldAdapter", "default -p 10000");

            /*             * 为Hello接口创建一个servant.             */            Ice.Object IObject = (Ice.Object) new HelloI();                        /*             * 将新的servant添加到适配器,             * 并将这个新的servant命名为"HelloWorld"             */            IOAdapter.add(IObject, Ice.Util.stringToIdentity("HelloWorld"));                        /*             * 激活适配器,以使服务器开始处理来自客户的请求             */             IOAdapter.activate();

            /*             * 挂起发出调用的线程,直到服务器实现终止为止.             * 或者是通过发出一个调用关闭运行时(run time)的指令来使服务器终止.             */            ic.waitForShutdown();        } catch (LocalException e) {            // 捕捉ICE运行时可能抛出的所有异常            e.printStackTrace();            status = 1;        } catch (Exception e) {            // 捕捉串常量            e.printStackTrace();            status = 1;        } finally {            if (ic != null) {                ic.destroy();            }        }        System.exit(status);    }}
HelloClient.java
package demo.ice.Hello.client;

import Ice.ObjectPrx;import Ice.Util;import demo.slice.Hello.HelloPrx;import demo.slice.Hello.HelloPrxHelper;

/** * author MudfishCN  */public class HelloClient {    public static void main(String[] args) {        int status = 0;        String s;        //创建一个通信器的对象ic        Ice.Communicator ic = null;        try {            // 初始化ICE运行时            ic = Util.initialize(args);                        /*             * 获取远程对象的代理             * 创建一个代理对象,并用通信器的stringToProxy()方法初始化之。             * 参数:"HelloWorld:default -p 10000"             * 表示:             */            ObjectPrx base = ic.stringToProxy("HelloWorld:default -p 10000");            /*             * 关键点             */            HelloPrx hello = HelloPrxHelper.checkedCast(base);            //测试向下转换是否成功。如果不成功抛出异常信息"Invalid proxy".            if (hello == null) {                throw new Error("Invalid proxy");            }            //向服务器发送十条消息            for(int i=1;i<=10;i++){                s = "Hello,world!"+Integer.toString(i);                hello.printString(s);            }                   } catch (Ice.LocalException e) {            e.printStackTrace();            status = 1;        } catch (Exception e) {            e.printStackTrace();            status = 1;        } finally {            if (ic != null) {                //销毁通信连接                ic.destroy();            }        }        System.exit(status);    }}



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: