ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

4.13.5 ユーザが独自に定義したリソースを利用する場合の手順

IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するリソースを独自に定義することもできます。
IJServerクラスタでローカルに管理できるリソースをカスタムリソースと呼びます。JNDI検索を指定して、IJServerクラスタプロセス外で管理されているリソースを外部リソースと呼びます。これらのリソースはasadminコマンドで定義できます。それぞれのリソースを使用する場合の定義方法を説明します。

4.13.5.1 カスタムリソースの定義方法

IJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するオブジェクトを独自に定義することもできます。これをカスタムリソースと呼びます。
カスタムリソースを定義する場合には以下のプロパティを指定する必要があります。

また、指定したファクトリクラスで利用できる固有のプロパティを以下に定義することもできます。

サーバーインスタンスは指定されたファクトリクラスに対して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;
      }
  }

上記例の場合、カスタムリソースの各プロパティに以下を指定します。

設定方法については「10.1.14.18 create-custom-resourceサブコマンド」を参照してください。

プロパティ

JNDI名

任意の名前

リソースタイプ

com.mycompany.Widget

ファクトリクラス

com.mycompany.WidgetFactory

4.13.5.2 外部リソースの定義方法

カスタムリソースと同様にIJServerクラスタに定義されたリソースまたは配備されたEnterprise JavaBean以外に、ネーミングサービスで管理するオブジェクトを独自に定義するリソースに外部リソースがあります。
外部リソースを定義する場合には以下を指定する必要があります。カスタムリソースとの違いはファクトリクラスが実装するインタフェースとJNDI検索が指定できる点です。

設定方法については「10.1.14.11 create-jndi-resourceサブコマンド」を参照してください。

カスタムリソースと異なり、外部リソースは外部リポジトリで管理されたオブジェクトをネーミングサービスに登録して管理できます。例えばJNDI検索に外部リポジトリの検索に使用する「ldap://ldap.umich.edu/o=umich,c=us」などのLDAP URLを指定すると、指定した検索条件に該当するオブジェクトをネーミングサービスで管理できるようになります。