jndi

説明

JSP から J2EE サーバ環境の分散型オブジェクトにアクセスできるようになります。

このタグでは、lookup (JNDI 検索 (ルックアップ))、list (一覧)、attribute (属性)、および search (検索) アクションがサポートされます。

構文

<jrun:jndi
  action="lookup|list|search|attribute"
  name="lookup/search name"
  attributes="search attributes" (検索のみ)
  [provider="service provider class name"]
  [url="service provider URL"]
  id="variable name"
  [scope="page|request|session|application"]
/>

属性

action

必須。java.lang.String を取ります。

JNDI アクション。値は、lookuplistattribute、および search です。各 action の機能は次のとおりです。

name

必須。java.lang.String または javax.naming を取ります。

JNDI 検索 (ルックアップ)/検索名。javax.naming.Name のインスタンスも使用で きます。

attributes (検索アクションのみ)

必須。java.util.Dictionaryjava.util.Map、または javax.naming.Attributes です。

検索対象のキーと値ペアのセット。たとえば、HashtableHashmap、または javax.naming.Attributes のインスタンスのフォームのキーと値のペアを指定 できます。

provider

オプション。java.lang.String を取ります。

JNDI 検索 (ルックアップ)/ディレクトリ サービス プロバイダ クラス。

url

オプション。java.lang.String を取ります。

この属性は、JNDI 検索 (ルックアップ)/ディレクトリ サービス プロバイダ URL を表します。

id

必須。java.lang.String を取ります。

jndi 結果オブジェクトのスクリプト変数名。

scope

オプション。java.lang.String または int を取ります。

このタグによって返されるオブジェクトの既定の JSP スコープ。有効文字列値は、 pagerequestsession、および application です。既定値は page です。

スクリプト
変数

jndi タグによって返されるオブジェクトのタイプは、action によって異なります。返されるオブジェクトのスコープは、タグの scope によって決まり、その既定値は page です。param タグを使用してこのオブジェクトのスクリプト変数を宣言すると、定義されたスコープ内でその変数を暗黙オブジェクトのように使用できます。次の表は、各 action、アクションによって返されるオブジェクト、および返されるオブジェクトの列名とそのデータ タイプの一覧です。
JNDI
アクション
返されるオブジェクト テーブル列:データ タイプ
lookup
java.lang.Object
なし
list
allaire.taglib.NameTable
Name: String
ClassName: String
isRelative: Boolean
search
allaire.taglib.DirSearchTable
Name: String
ClassName: String
isRelative: Boolean
Attribute: allaire.taglib.AttributeTable
attribute
allaire.taglib.AttributeTable
ID: String
Attribute: javax.naming.directory.Attribute

allaire.taglib.NameTableDirSearchTable、および AttributeTable クラスにより、allaire.taglib.QueryTable クラスが拡張されます。QueryTable には javax.sql.RowSet インターフェイスが実装されています。このインターフェイスによって java.sql.ResultSet が拡張されます。sqlstoredprocgetmsggetmail、および jndi タグを使用する前に、javax.sql.RowSet および java.sql.ResultSet について把握しておくことをお勧めします。詳細については、次の URL にある JDBC API のマニュアルを参照してください。

これは、一覧アクションで jndi タグのスクリプト変数を使用する場合の共通のシナリオです。この例では getObject が使用されていますが、RowSet には異なるオブジェクト タイプを使用するほかの多くの getter メソッドがあります。

次の表では、jndi listsearch、および attribute 結果セットで最も一般的に使用されるメソッドについて説明しています。

メソッド
返される
タイプ

説明
next()
Boolean
TRUE の場合、結果セットで次の行を取得します。
getObject(int)
Object
インデックス番号によって列を取得します。
getObject(String)
Object
名前によって列を取得します。
get(int)
String
インデックス番号によって列を取得します。この QueryTable メソッドは下位互換性のために用意されているので、同じ機能を持つ getObject(int) の使用をお勧めします。
get(String)
String
名前によって列を取得します。この QueryTable メソッドは下位互換性のために用意されているので、同じ機能を持つ getObject(String) の使用をお勧めします。

前提条件

Web アプリケーションで jndi タグを使用する前に、JNDI ディレクトリ サービスを使用可能にする必要があります。

この JSP は、jndi タグの使用方法および結果データの表示方法を示しています。

<%@ page import="allaire.taglib.*" %>
<%@ taglib uri="jruntags" prefix="jrun" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>jndi Tag Example</title></head><body>
<%--
JNDI 検索 (ルックアップ) アクションを実行します。
--%>
<jrun:jndi action="lookup" name="java:comp/UserTransaction" id="txn"/>
<%--
JNDI 一覧アクションを実行します。
--%>
<jrun:jndi action="list" name="java:comp/env/jdbc" id="result"/>

<%--
結果セットをループ化し、名前値を表示します。
--%>
<jrun:param id="result" type="NameTable"/>
<jrun:foreach group='<%= result %>'>
<%= result.getObject("Name") %><br>
<%= result.getObject("ClassName") %><br>
<%= result.getObject("isRelative") %><br>
</jrun:foreach>
</body></html>