2

Glassfish 2.1 サーバーと通信する必要があるコマンド ライン クライアント (Java SE6) を開発しています。この接続をセットアップするためのコードは次のとおりです。

try {
    final InitialContext context = new InitialContext();
    final String ejbName = GeneratorCancelledRemote.class.getName();
    generatorCancelled = (GeneratorCancelledRemote) context.lookup(ejbName);
}
catch (Throwable t) {
    System.err.println("--> Could not call server:");
    t.printStackTrace(System.err);
    runWithOutEJB = true;
}

私は現在、サーバーを実行せずにテストしており、クライアント(Eclipse 4.2から実行した場合)は爆撃するだけです

31.10.2012 10:40:09 com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl
警告: "IOP00410201: (COMM_FAILURE) 接続エラー: socketType: IIOP_CLEAR_TEXT; ホスト名: localhost; ポート: 3700"
org.omg.CORBA.COMM_FAILURE: vmcid: SUN マイナー コード: 201 完了: いいえ
    com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure (ORBUtilSystemException.java:2783) で
    com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure (ORBUtilSystemException.java:2804) で
    com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.(SocketOrChannelConnectionImpl.java:261) で
    com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.(SocketOrChannelConnectionImpl.java:274) で
    com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:130) で
    com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:192) で
    com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request (CorbaClientDelegateImpl.java:184) で
    com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a (CorbaClientDelegateImpl.java:328) で
    org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112) で
    org.omg.CosNaming.NamingContextHelper.narrow (NamingContextHelper.java:69) で
    com.sun.enterprise.naming.SerialContext.narrowProvider(SerialContext.java:134) で
    com.sun.enterprise.naming.SerialContext.getCachedProvider(SerialContext.java:259) で
    com.sun.enterprise.naming.SerialContext.getRemoteProvider(SerialContext.java:204) で
    com.sun.enterprise.naming.SerialContext.getProvider(SerialContext.java:159) で
    com.sun.enterprise.naming.SerialContext.lookup (SerialContext.java:409) で
    javax.naming.InitialContext.lookup(InitialContext.java:392) で
    com.werkii.latex.generator.Generator.main (Generator.java:344) で
原因: java.lang.RuntimeException: java.net.ConnectException: 接続が拒否されました: 接続
    com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:347) で
    com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.(SocketOrChannelConnectionImpl.java:244) で
    ... 14以上
原因: java.net.ConnectException: 接続が拒否されました: 接続
    at sun.nio.ch.Net.connect(ネイティブ方式)
    sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:532) で
    com.sun.corba.ee.impl.orbutil.ORBUtility.openSocketChannel(ORBUtility.java:105) で
    com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:332) で
    ... 15以上

今のところ (私はまだ開発中です) 爆撃しても問題ありませんが、これを繰り返し実行し、catch句に到達することはありません (たとえキャッチしていてもThrowable) - メッセージは出力されません。

lookupでは、プログラム中に接続エラーを処理するにはどうすればよいでしょうか?

4

1 に答える 1

0

JVM の外部で EJB と通信しているため、初期コンテキストに追加の詳細を提供する必要がある場合があります。Glassfishの場合は、試してください

Properties props = new Properties();
props.setProperty(“java.naming.factory.initial”, “com.sun.enterprise.naming.SerialInitContextFactory”);
props.setProperty(“java.naming.factory.url.pkgs”, “com.sun.enterprise.naming”);
props.setProperty(“java.naming.factory.state”, “com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl”);
props.setProperty(“org.omg.CORBA.ORBInitialHost”, “127.0.0.1″);
props.setProperty(“org.omg.CORBA.ORBInitialPort”, “3700″);
InitialContext ctx = new InitialContext (props);
于 2012-10-31T09:59:40.373 に答える