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

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

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

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

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

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

GlassFish Serverインスタンスは指定されたファクトリクラスに対して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 外部リソースの定義方法

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

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

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