IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するリソースを独自に定義することもできます。
IJServerクラスタでローカルに管理できるリソースをカスタムリソースと呼びます。JNDI検索を指定して、IJServerクラスタプロセス外で管理されているリソースを外部リソースと呼びます。これらのリソースはasadminコマンドで定義できます。それぞれのリソースを使用する場合の定義方法を説明します。
IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するオブジェクトを独自に定義することもできます。これをカスタムリソースと呼びます。
カスタムリソースを定義する場合には以下のプロパティを指定する必要があります。
JNDI名
リソースタイプ
ファクトリクラス
説明
状態
また、指定したファクトリクラスで利用できる固有のプロパティを以下に定義することもできます。
追加プロパティ
サーバーインスタンスは指定されたファクトリクラスに対してgetObjectInstanceメソッドを実行してインスタンスを生成します。getObjectInstanceメソッドの第一引数にはjavax.naming.Referenceクラスのオブジェクトが渡され、このオブジェクトのフィールドには以下のプロパティの値が設定されます。getObjectInstanceメソッドはjavax.naming.Referenceクラスのオブジェクトからフィールドの値をgetメソッドで取得し、対応するオブジェクトを生成して返却します。
javax.naming.Referenceクラスのオブジェクトのフィールド | プロパティ |
---|---|
classFactory | ファクトリクラス |
className | リソースタイプ |
addrs | 追加プロパティ。アドレス型(addrType)にプロパティ名、アドレスの内容にプロパティ値が設定されます。 |
例
カスタムリソースのクラスとファクトリクラスの例を以下に記載します。
カスタムリソースのクラスの例
package com.mycompany; public class Widget implements java.io.Serializable { private String name; public Widget() { } public Widget(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
ファクトリクラスの例
package com.mycompany; import java.util.Hashtable; import javax.naming.Name; import javax.naming.Context; import javax.naming.Reference; import javax.naming.StringRefAddr; public class WidgetFactory implements javax.naming.spi.ObjectFactory { public WidgetFactory() { } public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception { Reference reference = (Reference)obj; String className = reference.getClassName(); Widget widget = null ; if( className.equals("com.mycompany.Widget") ) { widget = new Widget() ; } StringRefAddr addrs = null; if( widget != null ) { if((addrs = (StringRefAddr)reference.get("name")) != null) { String content = (String)addrs.getContent(); widget.setName(content) ; } } return widget; } }
上記例の場合、カスタムリソースの各プロパティに以下を指定します。
設定方法については「9.1.14.18 create-custom-resourceサブコマンド」を参照してください。
プロパティ | 値 |
---|---|
JNDI名 | 任意の名前 |
リソースタイプ | com.mycompany.Widget |
ファクトリクラス | com.mycompany.WidgetFactory |
カスタムリソースと同様にIJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するオブジェクトを独自に定義するリソースに外部リソースがあります。
外部リソースを定義する場合には以下を指定する必要があります。カスタムリソースとの違いはファクトリクラスが実装するインタフェースとJNDI検索が指定できる点です。
JNDI名
リソースタイプ
ファクトリクラス
JNDI検索
説明
状態
設定方法については「9.1.14.11 create-jndi-resourceサブコマンド」を参照してください。
カスタムリソースと異なり、外部リソースは外部リポジトリで管理されたオブジェクトをネーミングサービスに登録して管理できます。例えばJNDI検索に外部リポジトリの検索に使用する「ldap://ldap.umich.edu/o=umich,c=us」などのLDAP URLを指定すると、指定した検索条件に該当するオブジェクトをネーミングサービスで管理できるようになります。