接第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、我调整了包名,不调整也可以
