Zeroc Ice返回值类型对象的实现(二)

2014-11-24 01:39:58 · 作者: · 浏览: 5
ic class MainOperatorI extends _MainOperatorDisp implements Serializable {

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();
}

/**
* 获取代