📄 iiop_z_http_transportfactory.java
字号:
} catch (Exception e) {
// exception is intensional and is handled by then next try
//e.printStackTrace();
}
try {
debug("objb == " + objb.toString());
FIPA.MTS target = FIPA.MTSHelper.narrow( objb );
debug("target == " + target.toString());
OutTray trans = new FIPA_2000_IIOP_Transport(target);
// System.out.println("Setting address");
pool.addConnection("corbaname::"+address,trans);
return trans;
} catch (Exception e) {
// exception is intensional and is thrown next...
//e.printStackTrace();
}
throw new TransportUnsupportedException("iiop target appears not to be returning a object with"+
" an interface that is understood by Zeus" +
"\n currently we have only FIPA_2000/99 (FIPA.MTS) & FIPA_97 (FIPA_Agent_97)" +
"sorry");
}
else if (address.startsWith("corbaname")) {
address = address.substring(11,address.length());
// System.out.println("address = " + address);
StringTokenizer tokens = new StringTokenizer(address,"/");
String ofInterest = tokens.nextToken();
// System.out.println("of interest = " + ofInterest);
StringTokenizer addressFinder = new StringTokenizer(ofInterest,":");
String addr = addressFinder.nextToken(); // should be machine.domain.type
// System.out.println("addr = " + addr);
String port = addressFinder.nextToken(); // should be a number
//System.out.println("port = " + port);
Properties prop = new Properties();
prop.setProperty("org.omg.CORBA.ORBInitialHost",addr);
prop.setProperty("org.omg.CORBA.ORBInitialPort",port);
String args [] = new String[0];
ORB orb = ORB.init(args, prop);
org.omg.CORBA.Object objb = null;
debug(orb.toString());
String list [] = orb.list_initial_services();
for (int i = 0; i < list.length; i++) {
debug(list[i]);
}
try {
org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
NamingContext nc = NamingContextHelper.narrow(objRef);
//testNamingContext (nc,orb);
boolean done = false ;
NameComponent allPath[] = new NameComponent [_maxSize];
int count =0;
String name = null;
while (tokens.hasMoreTokens()) {
name = tokens.nextToken();
debug("name = " + name);
}
objb = resolveNaming(nc,orb,name);
}
catch (Exception e) {
e.printStackTrace();
}
try {
debug("objb == " + objb.toString());
FIPA_Agent_97 target = FIPA_Agent_97Helper.narrow(objb);
OutTray trans = new FIPA_97_IIOP_Transport(target);
pool.addConnection("corbaname::"+address,trans);
return trans;
} catch (Exception e) {
// exception is intensional and is handled by then next try
//e.printStackTrace();
}
try {
debug("objb == " + objb.toString());
FIPA.MTS target = FIPA.MTSHelper.narrow( objb );
debug("target == " + target.toString());
OutTray trans = new FIPA_2000_IIOP_Transport(target);
// System.out.println("Setting address");
pool.addConnection("corbaname::"+address,trans);
return trans;
} catch (Exception e) {
// exception is intensional and is thrown next...
//e.printStackTrace();
}
throw new TransportUnsupportedException("iiop target appears not to be returning a object with"+
" an interface that is understood by Zeus" +
"\n currently we have only FIPA_2000/99 (FIPA.MTS) & FIPA_97 (FIPA_Agent_97)" +
"sorry");
}
else if (address.startsWith("IOR")) {
Properties prop = new Properties();
// prop.setProperty("org.omg.CORBA.ORBInitialHost",addr);
//prop.setProperty("org.omg.CORBA.ORBInitialPort",port);
String args [] = new String[0];
ORB orb = ORB.init(args,null);
org.omg.CORBA.Object objb = orb.string_to_object(address);
debug("orb = " + objb.toString());
FIPA.MTS target = FIPA.MTSHelper.narrow(objb);
debug("MTS = " + target.toString());
OutTray trans = new FIPA_2000_IIOP_Transport(target);
debug("trans = " + trans.toString());
pool.addConnection(address,trans);
return trans;
}
else if (address.startsWith("http")) {
FIPA_2000_HTTP_Accessor conn = new FIPA_2000_HTTP_Accessor(address);
OutTray trans = new FIPA_2000_HTTP_Transport(conn,file);
pool.addConnection(address,trans);
return (trans);
}
else {
try {
ZeusParser.address(address); // was commented...
OutTray trans = new Zeus_Native_Transport(context);
pool.addConnection(address,trans);
return trans; }
catch ( Exception e) {
e.printStackTrace();
throw new TransportUnsupportedException("No transport supported for this address " +
"tried FIPA_97_IIOP, FIPA_2000_IIOP & zeus native");
}
}
}
private void testNamingContext(NamingContext nc,ORB orb ) {
try {
BindingListHolder bl = new BindingListHolder();
BindingIteratorHolder blIt= new BindingIteratorHolder();
nc.list(1000, bl, blIt);
org.omg.CosNaming.Binding bindings[] = bl.value;
if (bindings.length == 0) return;
for (int i=0; i < bindings.length; i++) {
// get the object reference for each binding
org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name);
int lastIx = bindings[i].binding_name.length-1;
// check to see if this is a naming context
if (bindings[i].binding_type == BindingType.ncontext) {
testNamingContext((NamingContext) obj, orb);
} else {
debug("Object: " + bindings[i].binding_name[lastIx].id);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* primative at the mo - walks the whole tree
*/
private org.omg.CORBA.Object resolveNaming(NamingContext nc,ORB orb, String name ) {
try {
BindingListHolder bl = new BindingListHolder();
BindingIteratorHolder blIt= new BindingIteratorHolder();
nc.list(1000, bl, blIt);
org.omg.CosNaming.Binding bindings[] = bl.value;
debug(bindings.toString());
// if (bindings.length == 0) return;
for (int i=0; i < bindings.length; i++) {
// get the object reference for each binding
org.omg.CORBA.Object obj = nc.resolve(bindings[i].binding_name);
if (obj == null) { debug("BAD NAMING CONTEXT"); }
int lastIx = bindings[i].binding_name.length-1;
// check to see if this is a naming context
if (bindings[i].binding_type == BindingType.ncontext) {
debug("name == "+ name);
debug("orb == " + orb.toString());
debug("obj == " + obj.toString());
try {
NamingContext ncRef = NamingContextHelper.narrow(obj);
// NamingContext namer = (NamingContext) obj;
obj = resolveNaming(ncRef, orb, name);
return (obj); }
catch (Exception e) {
debug("E");
e.printStackTrace();
debug(bindings[i].binding_type.toString());
for (int count = 0; count<bindings[i].binding_name.length; count++) {
debug(bindings[i].binding_name[count].id);
debug(bindings[i].binding_name[count].kind);}
return (org.omg.CORBA.Object) obj;
}
} else {
debug("in else");
if ( bindings[i].binding_name[lastIx].id.equalsIgnoreCase(name)) {
debug("got a match");
return (obj);
}
else {
debug("bindings[i].binding_name[lastIx].id == " +bindings[i].binding_name[lastIx].id);
debug("but name was " + name);
}
}
debug("end of loop");
}
}
catch (Exception e) {
e.printStackTrace();
}
// no match, returning null.
return null;
}// end resolveName
void debug(String str) {
System.out.println(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -