消息中间件 ICE 快速入门示例 (java 语言)

时间:2024-04-13 21:36:09

1.首先安装 ice的环境(与安装jdk非常相似)

 【1】下载Ice-3.2.0.zip

 【2】配置环境变量

 

2.使用

   在开发工具(eclipse或idea)中创建项目,在根目录上创建 .ice文件;进入这个文件所在的真实目录,执行命令行  slice2java ,生成ice文件

 

[["java:package:com.ice.temp"]]

module temp{

     interface tempDemo{

     string  sayTemp(string str);

 };

};

说明:生成的文件所在的包是 :com.ice.temp.temp

     服务接口是 tempDemo

     服务方法是 sayTemp(string str);

     引用类型不能大写 例如 : string ;而写 String 执行命令时候会报错

 

执行 slice2java *.ice 命令生成的文件截图如下

消息中间件 ICE 快速入门示例 (java 语言)

 

3.编写服务端的服务类

 

import com.ice.temp.temp._tempDemoDisp;

import Ice.Current;

// 继承 _tempDemoDisp类,重写sayTemp()方法

public class TempServer extends _tempDemoDisp{

    /**

     * 真实的业务逻辑

     */

     @Override

     public String sayTemp(String str, Current __current) {

          System.out.println("服务端处理接口收到请求");

          return "处理完成,正常响应结果";

     }

}

4.编写服务端

 

importIce.Communicator;

import Ice.ObjectAdapter;

public class TestServer {

     public static void main(String[] args) {

          // 初始化一些配置信息

          Communicator ic = Ice.Util.initialize(args);

          //创建适配器监听某一个端口

          ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("tempAdapter","tcp -h 127.0.0.1 -p 10000");

          //创建一个服务单元

          TempServer tempServer = new TempServer();

          //将服务单元加入到适配器,同时起一个唯一的服务单元名称

          adapter.add(tempServer, Ice.Util.stringToIdentity("tempAdapter"));

          //**适配器,这样做的好处是等所有资源都到位在触发

          adapter.activate();

          //在服务退出之前一直保持对请求的监听

          ic.waitForShutdown();

          //用来结束运行时

          if(ic != null){

              ic.destroy();

          }

     }

}

5.编写客户端

 

import com.ice.temp.temp.tempDemoPrx;

import com.ice.temp.temp.tempDemoPrxHelper;

importIce.Communicator;

import Ice.ObjectPrx;

public class TestClient {

     public static void main(String[] args) {

          //初始化配置信息,建立起连接

          Communicator ic = Ice.Util.initialize(args);

          //传入远程地址的服务单元名称,端口,协议

          ObjectPrx stringToProxy = ic.stringToProxy("tempAdapter:tcp -h 127.0.0.1 -p 10000");

          //通过向下转换获取远程的GoTalking接口,

          //同时检测根据传入参数得到的服务单元是否是GoTalking接口的代理,不是的话返回null;

          tempDemoPrx checkedCast = tempDemoPrxHelper.checkedCast(stringToProxy);

          

          String sayTemp = checkedCast.sayTemp("你好");

          System.out.println("客户端收到的响应:"+sayTemp);

          

     }

}

最后分别启动测试即可。