前言
ICE版本使用3.6.4:Ice-3.6.4.msi
链接:https://pan.baidu.com/s/1QwvLDcVPRaM52p1jU0lhrg
提取码:8iso
开发环境使用IDEA: ideaIU-2020.2.3.exe
链接:https://pan.baidu.com/s/1XuA_A-9BeU5hOrDREJvzTA
提取码:ybyq
安装ICE
- 首先安装Ice,选择安装路径D:\Program File(x86)
- 在安装路径下,生成如下文件:
使用ICE
-
创建.ice文件。首先在记事本创建.ice结尾的文件,内部以ICE格式书写接口函数。
-
保存路径。将编写好的“.ice”文件,拷贝到D:\Program File(x86)\ZeroC\Ice-3.6.4\bin目录下。
-
打开DOS。找到slice2java.exe 程序,生成骨架文件。具体命令如下:
进入目录:cd D:\Program File(x86)\ZeroC\Ice-3.6.4\bin
执行代码:编译ICE
生成文件:红色部分为生成文件
-
将生成的文件夹和依赖库,添加到项目
-
继承.ice文件的interface接口并重写其方法
按 Alt+Shift+Enter,补齐即可
服务端实现
package com.company;
import com.company.service.ProcessFun;
import com.company.service.WorkHandler;
import com.company.util.ConfigUtil;
import java.util.Properties;
public class Agent{
public static void main(String[] args){
System.out.println("软件版本:V1.00");
Properties props=System.getProperties(); //系统属性
System.out.println("Java的运行环境版本:"+props.getProperty("java.version"));
int status = 0;
Ice.Communicator ic = null;
Properties p = ConfigUtil.properties; //创建读配置文件
try {
ic = Ice.Util.initialize(args);
String iceIP=p.getProperty("iceIP");
String icePort=p.getProperty("icePort");
String var = "tcp -h " + iceIP + " -p " + icePort;
String iceAdapterName=p.getProperty("iceAdapterName");;
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(iceAdapterName, var);
//实例化一WorkHandler对象,为_ITaskSrvICEDisp接口创建一个服务对象
Ice.Object object = new WorkHandler();
//将服务单元增加到适配器中,并给服务对象指定名称为TaskHandler,该名称用于唯一确定一个服务单元
String remoteServiceName=p.getProperty("remoteServiceName");
adapter.add(object, Ice.Util.stringToIdentity(remoteServiceName));
adapter.activate();
//打印本软件的服务信息
System.out.println("软件服务:"+remoteServiceName + " " + var);
//让服务在退出之前,一直持续对请求的监听
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
}
}