一.下载ice3.6
http://download.zeroc.com/Ice/3.6/Ice-3.6.4.msi
二.配置环境变量
ICE_HOME= D:\project\ZeroC\Ice-3.6.4
Path= %ICE_HOME%\bin;
cmd打开dos窗口查看是否安装成功: slice2java -v
三.idea创建ice文件
pom.xml
<dependency> <groupId>com.zeroc</groupId> <artifactId>ice</artifactId> <version>3.6.3</version> </dependency>
先创建slice文件夹然后创建包路径最后创建Hello.ice
如果不能创建ice文件可以先创建file文件以.ice结尾,idea会提示下载ice插件,然后重启就行了
Hello.ice:
[["java:package:com.test.ice.service"]] // 定义java包名 父结构 module demo //模块包名 { interface Hello //接口服务名称 { string sayHello(string s); //具体的方法 }; };
四.使用slice2java编译ice文件生成java代码
打开cmd窗口进入Hello.ice目录下执行:
slice2java .\Hello.ice --output-dir ..\src\main\java
执行成功之后会在java目录下生成10个java文件
五.编写程序 HelloI Client Server
public class HelloI extends _HelloDisp { private static final long serialVersionUID = -3966457693815687559L; private Logger log = Logger.getLogger(this.getClass().getSimpleName()); public String sayHello(String s, Current __current) { log.info("具体的服务接口实现类中的sayHello方法被调用了。。。"); return "Hello " + s; } }
public class Client { private static Logger log = Logger.getLogger(Client.class.getSimpleName()); public static void main(String[] args) { log.info("客户端启动..."); // 通信器 Communicator ic = null; // 初始化这个通信器 ic = Util.initialize(args); // 根据地址生成一个服务代理对象 // HelloIce -- 服务端那边自己定义的名字 ObjectPrx proxy = ic.stringToProxy("HelloIce:default -p 1888"); // 转换成HelloService类型的代理服务 HelloPrx hello = HelloPrxHelper.checkedCast(proxy); //调用方法 String s = hello.sayHello("World!"); System.out.println(">>"+s); } }
public class Server { private static Logger log = Logger.getLogger(Server.class.getSimpleName()); public static void main(String[] args) { // 通信器 Communicator ic = null; // 初始化这个通信器 ic = Util.initialize(args); // 创建ice适配器,将服务调用地址和服务映射起来 // "HelloServiceAdapter"是适配器名, "default -p 1888"是服务调用的地址 ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("HelloServiceAdapter","default -p 1888"); // 将服务的具体实现类servant交给这个适配器 Object servant = new HelloI(); // "HelloIce"--服务接口在ice中注册名,转成唯一标识identity Identity id = Util.stringToIdentity("HelloIce"); adapter.add((Ice.Object) servant, id); // 激活这个适配器 adapter.activate(); log.info("server服务容器启动成功。。。"); } }
六.启动程序
先启动server
再启动client
一个简单的java开发ice案例完成