private static final long serialVersionUID = 1017768576442347413L;
@Override
public Bond getBean(String beanUID, Current current) {
// 获取一个BondLC对象
Bond bond = BondLCData.BONDLC_DATA_SINGLE;
return bond;
}
}
(ix)发布业务类,注册到服务
Java代码
/*
* file: MainOperatorServer.java
*/
package com.number.operator;
import java.io.Serializable;
import Ice.ObjectAdapter;
/**
* 主操作服务发布者
* @author zhnb
*
*/
public class MainOperatorServer implements Serializable {
private static final long serialVersionUID = -691557224337330222L;
public static void main(String[] args) {
// 0, 声明执行状态
int status = 0;
Ice.Communicator ic = null;
try {
// 1, 初始化环境
// 加载属性文件
ic = Ice.Util.initialize();
// 2, 初始化Adapter
String name = "MainOperatorServer";
String endpoints = "default -h 127.0.0.1 -p 9999";
ObjectAdapter objAdapter = ic.createObjectAdapterWithEndpoints(
name, endpoints);
// 3, 创建伺服者
Ice.Object servant = new MainOperatorI();
// 4, 添加伺服者至适配器
objAdapter.add(servant, Ice.Util.stringToIdentity("MainOperatorUID"));
// 5, 激活
objAdapter.activate();
System.out.println("<
// 6, 等待关闭
ic.waitForShutdown();
} catch (Exception e) {
e.printStackTrace();
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
System.exit(status);
}
}
以上类中MainOperatorI主是个普通接口的实现方式,很简单。BondI是个类的实现方式,需要留意。
D)编写客户方
(i)编写请求者
Java代码
/*
* file: MainOperatorClient.java
*/
package com.number.operator;
import java.io.Serializable;
import Ice.ObjectPrx;
import com.number.bean.Bond;
import com.number.bond.ObjectFactory4Bond;
import com.number.except.UGenericException;
/**
* 请求数据者(通用接口方式)
* @author zhnb
*
*/
public class MainOperatorClient implements Serializable {
private static final long serialVersionUID = -3207025201067021445L;
/**
* 获取债券对象
* @param bondUID 债券标志
* @return
*/
public Bond getBean(String bondUID){
Bond bond = null;
try {
// 获取代理
MainOperatorPrx mainOperatorPrx = this.getOwnPrx();
/*
// 添加自定义类
Ice.ObjectFactory factory = new ObjectFactory4Bond();
this.ic.addObjectFactory(factory, com.number.bond.BondI.ice_staticId());
*/
bond = mainOperatorPrx.getBean("anyThingAsArg");
} catch (UGenericException e) {
e.printStackTrace();
}
return bond;
}
// =========以<下>为私有方法,提供ICE支撑。=========
// 获取服务端提供的代理
private MainOperatorPrx mainOperatorPrx = null;
// Ice通讯员(为回收资源时,方便自动回收)
private Ice.Communicator ic = null;
// GC回收时,自动销毁Ice.Communicator。
@Override
protected void finalize() throws Throwable {
if (this.ic != null) {
ic.destroy();
}
super.finalize();
}
/**
* 获取代