How to init ORB from property file?

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

I would like to init my ORB from property file (normally I init it like this, while running my examples: ./app -ORBInitRef NameService=corbaloc::localhost:2809/NameService)

I wrote a simple code:

private static String[] readConfigFile() {     Properties prop = new Properties();     String arg[] = new String[1];     try      {         prop.load(new FileInputStream("config.properties"));     } catch (IOException ex) {}     arg[0] = prop.getProperty("ORBInitRef");     return arg; } 

and then tried to init my orb:

clientsORB = org.omg.CORBA.ORB.init(readConfigFile(), null); 

but there are some errors:

2012-11-01 12:15:36 com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl <init> WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: 127.0.1.1; port: 900" org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No         at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2172)         at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2193)         at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:223)         at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:236)         at com.sun.corba.se.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:119)         at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:168)         at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:136)         at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.invoke(BootstrapResolverImpl.java:99)         at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.resolve(BootstrapResolverImpl.java:132)         at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:47)         at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:47)         at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:47)         at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(ORBImpl.java:1174)         at ClientConnection.connect(ClientConnection.java:68)         at Client.main(Client.java:303) Caused by: java.net.ConnectException: Connection refused         at sun.nio.ch.Net.connect(Native Method)         at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:525)         at java.nio.channels.SocketChannel.open(SocketChannel.java:164)         at com.sun.corba.se.impl.transport.DefaultSocketFactoryImpl.createSocket(DefaultSocketFactoryImpl.java:78)         at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:206)         ... 12 more 

My config.properties file:

ORBInitRef NameService=corbaloc::localhost:2809/NameService

What I did wrong? When I init my ORB normally, everything is great, so its not the code issue, its definitely problem with initialization from file.

回答1:

You have to add -ORBInitRef to the ORB arguments also. Compare it to the commandline you normaly use. ALL the arguments have to be passed to the ORB.init()

config.properties:

ORBInitRef NameService=corbaloc::localhost:2809/NameService  

Java Code using it (ReadProps.java)

import java.io.FileInputStream; import java.io.IOException; import java.util.Properties;  import org.omg.CORBA.ORB;  public class ReadProps {     public static void main(String[] args) {         ORB clientsORB = org.omg.CORBA.ORB.init(readConfigFile(), null);     }      static String[] readConfigFile() {         Properties prop = new Properties();         String[] orbarg = new String[2];          try {             // load a properties file             prop.load(new FileInputStream("config.properties"));             // get the property value and print it out               orbarg[0] = "-ORBInitRef"; // <---- NEEDED             orbarg[1] = prop.getProperty("ORBInitRef");          } catch (IOException ex) {             ex.printStackTrace();         }         return orbarg;     }  } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!