我想从属性文件中的init我的ORB(通常我初始化它像这样,在运行我的例子: ./app -ORBInitRef NameService=corbaloc::localhost:2809/NameService)
./app -ORBInitRef NameService=corbaloc::localhost:2809/NameService
我写了一个简单的代码:
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; }
然后尝试初始化我的球体:
clientsORB = org.omg.CORBA.ORB.init(readConfigFile(), null);
但是有一些错误:
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
我的config.properties文件:
ORBInitRef NameService=corbaloc::localhost:2809/NameService
我做错了什么? 通常,当我初始化我的ORB时,一切都很好,所以它不是代码问题,而是文件初始化的问题。
您还必须添加-ORBInitRef到ORB参数。将其与您通常使用的命令行进行比较。所有参数都必须传递给ORB.init()
-ORBInitRef
ORB.init()
config.properties:
使用它的Java代码(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; } }