JNDIを使用したHello World (例2)

この例では、JNDIを使用したHello Worldのクライアントおよびサーバを再実行しますが、今回はJNDI/COSプロバイダでORBを暗黙的に作成します。

Makefileでは、JavaSoftからJNDI/COSプロバイダに初期コンテキストのJNDI Namingファクトリを設定しています。

-Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory

1 Helloサーバ

初期コンテキストファクトリは暗示的にORBを作成するため、明示的なORB.init()は必要ありません。 また、RMI-IIOPオブジェクトを作成すると、ORBは「メインスレッド」が終了したときにVMが終了しないようにkeep aliveスレッドを開始します。したがって、明示的なORB.run()も必要ありません。
package jndiCOS2;
                                                                           
import util.Util;
                                                                           
import helloWorld2.Hello;
import helloWorld2.HelloImpl;
                                                                           
import javax.naming.Context;
import javax.naming.InitialContext;
                                                                           
public class helloServer
{
    public static void main(String[] args)
    {
    |   try {
    |   |                                                                  
    |   |   // create a servant
    |   |   Hello hello = new HelloImpl();
    |   |                                                                  
    |   |   // get the root naming context
    |   |   Context ctx = new InitialContext(null);
    |   |                                                                  
    |   |   // bind the hello objref using JNDI
    |   |   ctx.rebind("hello", hello);
    |   |                                                                  
    |   |   // wait for invocations
    |   |   System.out.println("waiting for invocations ...");
    |   |                                                                  
    |   } catch (Exception ex) {
    |   |   ex.printStackTrace();
    |   }
    }
}

2 Helloクライアント

初期コンテキストファクトリは暗黙的にORBを作成するため、明示的なORB.init()は必要ありません。
package jndiCOS2;
                                                                           
import util.Util;
                                                                           
import helloWorld2.Hello;
                                                                           
import javax.naming.Context;
import javax.naming.InitialContext;
                                                                           
public class helloClient
{
    public static void main(String[] args)
    {
    |   try {
    |   |                                                                  
    |   |   // get the root naming context
    |   |   Context ctx = new InitialContext(null);
    |   |                                                                  
    |   |   // lookup the hello objref
    |   |   Hello hello = (Hello) ctx.lookup("hello");
    |   |                                                                  
    |   |   // invoke method on the object
    |   |   System.out.println(hello.sayHello());
    |   |                                                                  
    |   } catch (Exception ex) {
    |   |   ex.printStackTrace();
    |   }
    }
}

3 Helloアプレットクライアント

package jndiCOS2;
                                                                           
import java.awt.Graphics;
import java.util.Hashtable;
                                                                           
import helloWorld2.Hello;
                                                                           
import javax.naming.Context;
import javax.naming.InitialContext;
                                                                           
public class helloApplet extends java.applet.Applet
{
    private String _message = "";
                                                                           
    public void init() {
    |   try {
    |   |                                                                  
    |   |   // get the root naming context
    |   |   Context ctx = new InitialContext(null);
    |   |                                                                  
    |   |   // lookup the hello objref
    |   |   Hello hello = (Hello) ctx.lookup("hello");
    |   |                                                                  
    |   |   // invoke method on the object
    |   |   _message = hello.sayHello();
    |   |                                                                  
    |   } catch (Exception ex) {
    |   |   ex.printStackTrace();
    |   }
    }
                                                                           
    public void paint(Graphics g)
    {
    |   g.drawString(_message, 25, 50);
    }
}
Copyright © 2000-2003, Novell, Inc.All rights reserved.