**
客户端代码Java编程示例
**
使用生成u2000_idl.jar和C:\JacORB-2.2.4\lib内的jar包进行客户端代码的开发
图 Eclipse 代码demo环境
通过下面编程示例demo(包含4个类Client,AlarmReciever,TANmsSession_IImpl,Util),实现获取EmsSession、查询U2000支持的manager列表和事件通知订阅。
1 获取EmsSession和查询U2000支持的manager列表
详细的代码示例如下:
package demo;
/**
- iManager U2000 CORBA interface client program demo
*/
//Common java data type import
import mtnm.tmforum.org.emsSession.EmsSession_I;
import mtnm.tmforum.org.emsSession.EmsSession_IHolder;
import mtnm.tmforum.org.emsSession.EmsSession_IPackage.managerNames_THolder;
import mtnm.tmforum.org.emsSessionFactory.EmsSessionFactory_I;
import mtnm.tmforum.org.emsSessionFactory.EmsSessionFactory_IHelper;
import mtnm.tmforum.org.nmsSession.NmsSession_I;
import mtnm.tmforum.org.nmsSession.NmsSession_IPOA;
import org.omg.CosNaming.NameComponent;
import org.omg.DynamicAny.DynAnyFactory;
import org.omg.DynamicAny.DynAnyFactoryHelper;
/************************************************************
Type : client demo program code
Description : U2000 CORBA Program development demo to get emsSession object
************************************************************/
public class Client {
private Client() {
}
private static Client instance = new Client();
public static Client getInstance() {
return instance;
}
//ORB object
private static org.omg.CORBA.ORB orb = null;
//POA object reference
private static org.omg.PortableServer.POA rootPOA = null;
//emsSeesion object
private static EmsSession_I emsSession = null;
//dynamic any factory, for translating any type to dynamic any type
private static DynAnyFactory dynAnyFactory = null;;
public static void log(String str) {
System.out.println(str);
}
//
public static void main(String[] args) {
if(args.length<4){
log("usage: java demo.Client 10.71.227.152 12001 admin test1234");
return;
}
log("-------------------------------------------------------");
log("Naming service IP: " + args[0]);
log("Naming service port: " + args[1]);
log("EMS user name : " + args[2]);
log("Password for user " + args[2] + " : " + args[3]);
log("-------------------------------------------------------");
Client.getInstance().connect(args[0], args[1], args[2], args[3]);
}
/*
* NSIP: naming service IP
* NSPort: naming service port
* userName: an EMS user name
* passWord: the password for a specified EMS user
*/
public int connect(String NSIP, String NSPort,String userName, String passWord) {
try {
//initialize ORB parameters
String argv[] = new String[2];
argv[0] = "-ORBInitRef";
argv[1] = "NameService=corbaloc::" + NSIP + ":" + NSPort+ "/NameService";
//The step 1: initialize ORB
orb = org.omg.CORBA.ORB.init(argv, null);
log("The step 1: initialize ORB successfully!");
//The step 2: get RootPOA
rootPOA = org.omg.PortableServer.POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootPOA.the_POAManager().activate();
log("The step 2: get RootPOA successfully!");
//the step 3: construct dynamic any factory
dynAnyFactory = DynAnyFactoryHelper.narrow(orb
.resolve_initial_references("DynAnyFactory"));
log("the step 3: construct dynamic any factory."
+ (dynAnyFactory!= null ? "successfully!" : "failed!"));
//The step 4: get naming service root object reference
org.omg.CosNaming.NamingContextExt nc = org.omg.CosNaming.NamingContextExtHelper
.narrow(orb.resolve_initial_references("NameService"));
log("The step 4: get naming service root object refrence successfull