JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > JNDI編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/02/03  田中宏和
JNDI編
◆JNDIとは?
JNDIとはJava Naming and Directory Interfaceの略です。Javaでネーミングおよびディレクトリ機能を利用できるようにするAPIです。このAPIを使用して様々なネーミングサービス、ディレクトリサービスにアクセスすることができます。
◆ネーミングサービスとは?
文字列で表現される名前と特定のオブジェクトとを関連づけるサービスのことです。名前を指定するとそれに対応するオブジェクトを得ることができます。
◆ディレクトリサービスとは?
住所録や電話帳などのように、住所や氏名などの様々な情報を効率的に管理し、その情報を更新したり検索したりすることができるようにするサービスです。電話帳で名前から電話番号が探し出せるように、ディレクトリサービスを利用することで簡単にほしい情報を得ることができます。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.0
■サービスプロバイダーの用意

ネーミングサービス、ディレクトリサービスを提供するプロバイダーを用意しなければなりません。主なサービスプロバイダーは以下のようなものがあります。

- 主なサービスプロバイダー -
名前 説明
DNS Domain Name Systemの略です。インターネットでの名前解決のシステムです。www.hellohiro.comなどのように表せられる名前をコンピュータが理解できるIPアドレスに対応付けます。
LDAP Lightweight Directory Access Protocolの略です。ディレクトリサービスにアクセスするためのプロトコルです。
NIS Network Information Systemの略です。Sun Microsystems社が開発したシステムで、ネットワーク上の複数のUNIXコンピューター間でユーザーデータを共有することができるようにします。
COS Common Object Servicesの略です。CORBAアプリケーションで利用するネーミングサービスです。CORBAオブジェクトを検索して利用するこができるようにします。
RMI Remote Method Invocationの略です。RMIレジストリサービスプロバイダーを利用することでリモートオブジェクトにアクセスすることができます。
ここではCOSを使用したいと思います。CORBA編のクライアントのJavaソースをJNDIを使用するように変更します。クライアントのソース以外はCORBA編と同じなのでそこまでの手順はCORBA編を参考にしてください。
 
◆JNDIを使用するように修正されたクライアントコード
HelloWorldJndiCorbaClient.java(ここからダウンロード)
import HelloApp.*;
/* コメントアウト
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
*/
/*** 追加 ***/
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Hashtable;

import org.omg.CORBA.*;

public class HelloWorldJndiCorbaClient {
  static Hello helloImpl;

  public static void main(String args[]) {
    try{
      // ORBの生成と初期化を行います
      ORB orb = ORB.init(args, null);

      /* コメントアウト
      org.omg.CORBA.Object objRef = 
          orb.resolve_initial_references("NameService");
      NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
      */
      /*** 追加 ***/
      Hashtable env = new Hashtable();
      env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, 
              "com.sun.jndi.cosnaming.CNCtxFactory");
      env.put("java.naming.corba.orb", orb );
      // ネーミングコンテキストの生成
      javax.naming.Context ic = new javax.naming.InitialContext(env);
      
      
      /* コメントアウト
      String name = "Hello";
      helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));
      System.out.println(helloImpl.sayHello());
      */
      /*** 追加 ***/
      String name = "Hello";
      // ルックアップ
      helloImpl = HelloHelper.
                   narrow(((org.omg.CORBA.Object)ic.lookup(name)));
      System.out.println(helloImpl.sayHello());
      
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
 
 
◆コンパイルと実行
コマンドプロンプト
C:\作業フォルダ\JavaHello>javac HelloWorldJndiCorbaClient.java

C:\作業フォルダ\JavaHello>java HelloWorldJndiCorbaClient -ORBInitialPort 1050 -ORBInitialHost localhost
Hello World

C:\作業フォルダ\JavaHello>

おおおお!表示されましたね!
 
■書籍
Java関連の書籍

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME