接第01部分,本节用来说明Java语言的代码实现。
使用slice2java之后,会生成10个文件,Client与Server需要分别包含多个文件。
首先是Server端:
1、新建一个java项目,引用ice-3.6.1.jar
2、copy以下几个文件
_iIceTestDisp.java
_iIceTestOperations.java
_iIceTestOperationsNC.java
iIceTest.java
iIceTestHolder.java
3、新建一个类MyICETest,实现iIceTestDisp_接口
package com.neohope.ice.test; import Ice.Current; public class MyIceTest extends _iIceTestDisp { @Override public String SayHelloTo(String s, Current __current) { return "Hello " + s; } @Override public int Add(int a, int b, Current __current) { return a+b; } }
4、新建测试类TestServer
package com.neohope.ice.test; public class TestServer { public static void main(String[] args) { Ice.Communicator ic = null; //初使化 ic = Ice.Util.initialize(args); //创建适配器,并指定监听端口 Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("NeoTestAdapter", "default -p 1900"); //绑定 Ice.Object obj = new MyIceTest(); adapter.add(obj, Ice.Util.stringToIdentity("NeoICETest")); //激活适配器 adapter.activate(); //持续监听,直到服务关闭 ic.waitForShutdown(); //清理 if (ic != null) { try { ic.destroy(); } catch (Exception e) { System.err.println(e.getMessage()); } } } }
5、编译运行
然后是Client端:
1、新建一个java项目,引用ice-3.6.1.jar
2、copy以下几个文件
Callback_iIceTest_Add.java
Callback_iIceTest_SayHelloTo.java
iIceTestPrx.java
iIceTestPrxHelper.java
iIceTestPrxHolder.java
3、新建测试类TestClient
package com.neohope.ice.test; public class TestClient { public static void main(String[] args) { Ice.Communicator ic = null; //初使化 ic = Ice.Util.initialize(args); Ice.ObjectPrx obj = ic.stringToProxy("NeoICETest:default -p 1900"); //查找并获取代理接口 iIceTestPrx client = iIceTestPrxHelper.checkedCast(obj); if (client == null) throw new Error("Invalid proxy"); //调用服务端方法 System.out.println(client.SayHelloTo("neohope")); System.out.println(client.Add(1, 2)); //清理 if (ic != null) { try { ic.destroy(); } catch (Exception e) { System.err.println(e.getMessage()); } } } }
4、编译运行
PS:
1、不要乱修改id,如果要修改,必须全部修改
2、我调整了包名,不调整也可以