| |
|
|
|
| |
 |
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 |
|
|