Sun GlassFish Enterprise Server v2.1.1 リリースノート

第 3 章 既知の問題点と制限事項

この章では、Sun GlassFish Enterprise Server v2.1.1 ソフトウェアに関する既知の問題とそれに関連する回避方法について説明します。問題の説明にプラットフォームが明記されていない場合、その問題はすべてのプラットフォームに当てはまります。

この節は次の項目から構成されています。

管理

ここでは、管理上の既知の問題とその解決方法を示します。

Enterprise Server がクラスタのハートビートポートの競合を検出しない (Issue Number 1967)

説明

クラスタを作成するときに、Enterprise Server はハートビートポートを 1026 - 45556 の間でランダムに割り当てます。default-cluster (Enterprise Server のインストールが作成するデフォルトのクラスタ) では、0 - 45556 のランダムな数字が選択されます。クラスタの作成プロセスは、ハートビートポートがすでに別のサービスで使用されているかどうかを正確に検出しません。

解決方法

自動クラスタ作成の設定で選択されるハートビートポートが、すでにそのポートを使用している別のサービスと競合する場合は、クラスタのハートビートポートをシステムが使用していないポートに更新します。

クラスタのハートビートポートを変更するには、次の asadmin コマンドを使用します。

asadmin set cluster-name.heartbeat-port= newportnumber

64 ビット Linux で動作している NFS サーバーで、ドメインの作成が停止する (Issue Number 1961)

説明

64 ビット Linux で動作している NFS サーバーで、NFS (ネットワークファイルシステム) マウント済みファイルシステム上にドメインを作成しているときに、asadmin create-domain コマンドが失敗する場合があります。

解決方法

現在のところ解決策はありません。

サイズの大きなログファイルをローテーションするときにパフォーマンスが低下する (6718611)

説明

サイズの大きなログファイルをローテーションするときに、応答時間にわずかな増加が見られます。

解決方法

「ロガー」設定で「ファイルローテーション制限」と「ファイルローテーションの制限時間」の値を変更することで、パフォーマンスの低下を最小化できます。これらのプロパティーの値は、アプリケーションおよび環境に応じて決定してください。

IBM MQ に対して Generic RA Resource Adapter を配備できない (Issue 6605)

説明

IBM Message Queue 製品に対する Generic RA アダプタの配備が失敗します。server.policy ファイルで付与される権限は、次のようになります。


grant {
      permission java.util.logging.LoggingPermission "control";
      permission java.util.PropertyPermission "*", "read,write";
      }

解決方法

server.policy ファイル中の権限を、次のように変更します。


grant codeBase
"file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" {
  permission java.util.logging.LoggingPermission "control";
 };

スタンドアロンのインスタンスがほかのインスタンスからファイルを取得することがある (6698604)

説明

一部の環境で、特定のインスタンスと同期する目的で DAS にインストールしたファイルが、実際には別のインスタンスに送信されます。

解決方法

現在のところ解決策はありません。

start-cluster コマンドからの起動メッセージが冗長である (6728317)

説明

asadmin start-cluster コマンドが、起動中に重要でないコンポーネントのエラーでも多量のメッセージを表示します。重要でない (クラスタ内のインスタンスに関連する) 要素でエラーが発生した場合の、コマンド出力の例を示します。


./asadmin start-cluster --port 9898 cluster1
Please enter the admin user name>admin
Please enter the admin password>
The clustered instance, instance2, was successfully started.
error 0 [#|2008-07-17T14:58:16.496+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 1 [#|2008-07-17T14:58:17.517+0200|WARNING|sun-appserver9.1|javax.jms|
_ThreadID=10;_ThreadName=main;
_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: 
Error occurred on connection creation [localhost:37676]. - cause: 
java.net.ConnectException: Connection refused|#]


error 2 [#|2008-07-17T14:58:30.596+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=5954a044-df06-4a3e-902a-0c40b4b6cddb;
|EJB5108:Unable to initialize EJB Timer Service. 
The likely cause is the database has not been 
started or the timer database table has not been created.|#]


error 3 [#|2008-07-17T14:58:32.512+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main;
__CallFlowPool;_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|
RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


The clustered instance, instance1, was successfully started.
error 0 [#|2008-07-17T14:58:21.117+0200|WARNING|sun-appserver9.1|
javax.enterprise.system.container.ejb|
_ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean;
_RequestID=30827d9a-72ac-4854-b216-06494b6a9fb5;
|EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has 
not been started or the timer database table has not been created.|#]


error 1 [#|2008-07-17T14:58:23.106+0200|WARNING|sun-appserver9.1|
javax.enterprise.resource.resourceadapter|
_ThreadID=10;_ThreadName=main;__CallFlowPool;
_RequestID=b41d76fa-0203-49f7-a2ae-83bf242d3e7a;
|RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#]


Command start-cluster executed successfully.

解決方法

現在のところ解決策はありません。これらの例外メッセージは無視できます。

IBM MQ に対して Generic RA Resource Adapter を配備できない (Issue 6605)

説明

IBM Message Queue 製品に対する Generic RA アダプタの配備が失敗します。server.policy ファイルで付与される権限は、次のようになります。


grant {
      permission java.util.logging.LoggingPermission "control";
      permission java.util.PropertyPermission "*", "read,write";
      }

解決方法

server.policy ファイル中の権限を、次のように変更します。


grant codeBase
"file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" {
  permission java.util.logging.LoggingPermission "control";
 };

domain1 が存在しない場合、package-appclient スクリプトが動作しない。(6171458)

説明

デフォルトでは、as-install/lib/package-appclient.xml に、asenv.conf から参照される domain1AS_ACC_CONFIG 変数の値がハードコードされています。domain1 を削除して新たなドメインを作成した場合、AS_ACC_CONFIG 変数は新たなドメイン名で更新されません。その結果、package-appclient スクリプトの処理が失敗します。

解決方法

次のいずれかの操作を行います。

  1. domain1 はそのままにしておき、その前後に別のドメインを作成します。

  2. domain1 を削除し、as-install/lib/package-appclient.xml 内のハードコードされた domain1 の値を、新しいドメイン名で置き換えます。

domain1 がない場合、新たなドメインが作成されるたびにこれを行う必要があります。

JMX エージェントを追加したサーバーの起動がサポートされない (6200011)

説明

サーバーでは J2SE 1.4.x または 5.0 以降を設定できます。J2SE 5.0 プラットフォームの重要な特徴は、JMX エージェントを起動できることです。サーバーの起動時にシステムプロパティーを明示的に設定すると、JMX エージェントがアクティブになります。

次に例を示します。


name="com.sun.management.jmxremote" value="true"
name="com.sun.management.jmxremote.port" value="9999"
name="com.sun.management.jmxremote.authenticate" value="false"
name="com.sun.management.jmxremote.ssl" value="false"

JMX プロパティーを設定してからサーバーを起動すると、仮想マシン (VM) 内に新たな jmx-connector サーバーが起動します。この場合、思わぬ結果として管理機能が悪影響を受け、管理コンソールやコマンド行インタフェースで予期しない結果が発生することがあります。問題は、組み込みの jmx-connector サーバーと新たな jmx-connector サーバーとの間で衝突が発生することにあります。

解決方法

jconsole または何らかの JMX 互換クライアントを使用する場合は、サーバーとともに起動する標準の JMX コネクタサーバーを再利用するようにしてください。

サーバーの起動時に、次に示すような行が server.log に記録されます。ここで指定されている JMXService の URL に接続し、資格を正常に指定した後、同様の管理および設定操作を実行することができます。次に例を示します。


[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1|
javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: 
Here is the JMXServiceURL for the JMXConnectorServer: 
[service:jmx:rmi:///jndi/rmi://hostname:8686/management/
rmi-jmx-connector]. This is where the remote administrative 
clients should connect using the JSR 160 JMX Connectors.|#]

詳細は、『Sun GlassFish Enterprise Server v2.1.1 管理ガイド』を参照してください。

どの Web サービスのエンドポイント URL を使用しても、ロードバランサの設定ファイルが作成されない (6236544、6275436)

説明

Web サービスの URL をエクスポートする EJB モジュールを含むアプリケーションを使用してロードバランサを設定しても、作成された loadbalancer.xml ファイルに、その Web サービスのコンテキストルートが存在しません。

解決方法

  1. loadbalancer.xml ファイルを編集して、作成されなかった Web モジュールを次のように追加します。


    <web-module context-root="context-root-name"
    disable-timeout-in-minutes="30" enabled="true"/>
  2. context-root-name 値を、EJB として公開された Web サービスのコンテキストルート名に置き換えます。

Application Server のドキュメントに .asadmintruststore ファイルが記述されていない (6315957)

説明

Enterprise Server のドキュメントに .asadmintruststore ファイルが記述されていない。このファイルがサーバー管理者の home ディレクトリに存在しないと、そのサーバー上にホストされている特定のアプリケーションをアップグレードしたときに重大なバグが発生する場合があります。

解決方法

JMS ブローカに到達するまでにタイムアウトになるため、クラスタ化されたインスタンスが起動できない (6523663)

説明

Enterprise Server クラスタインスタンスのデフォルト MQ 統合モードは LOCAL です。Enterprise Server がインストールされている場所の PATH が長い、つまり短くない場合、クラスタインスタンス起動時に imqbrokerscv.exe で障害が発生します。imqbrokersvc のメモリー割り当てに問題があります。

解決方法

クラスタインスタンスの JMS サービスタイプを、デフォルトの LOCAL から REMOTE に変更する必要があります。この設定では、すべてのインスタンスは DAS ブローカを指します。次の手順に従って、REMOTE モードでクラスタを設定してください。


注 –

REMOTE モード使用時には、すべてのインスタンスが 1 つのブローカ (DAS) を使用しているため、Enterprise Server クラスタが起動してもブローカクラスタは作成されません。詳細は、http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt の第 4.1 節「iii. Auto-clustering」を参照してください。それによると、上記の機能は将来使用できなくなります。


Procedureコマンド行の使用

始める前に

ご使用の環境に合わせて、ポートおよびパスワードファイルを変更してください。次に示す手順では、クラスタ名が racluster、DAS 管理ポートが 5858、および DAS JMS ポートが 7676 になっています。

  1. JMS タイプを REMOTE に変更して、クラスタ設定を変更します。


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/bin/password_file racluster.jms-service.type=REMOTE
  2. DAS JMS ホストに対応する JMS ホストを作成します。


    as-install/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \
    as-install/bin/password_file --target racluster --mqhost localhost --mqport 7676 \
    --mquser admin --mqpassword admin dashost
  3. デフォルトの JMS ホストが前のステップで作成した DAS JMS ホストになるように設定します。


    as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \
    as-install/bin/password_file racluster.jms-service.default-jms-host=dashost

Procedure管理 GUI の使用

  1. 「設定」->「cluster-name-config」->「Java メッセージサービス」->「JMS ホスト」の順に移動します。

  2. 新規」をクリックして新規 JMS ホストを作成し、dashost という名前を付けます。

  3. DAS の JMS サービスに対応する設定を入力します。デフォルト設定は次のとおりです。

    • ホスト名: localhost

    • ポート: 7676

    • 管理者ユーザー: admin

    • パスワード: admin

    これらの設定をご使用の DAS JMS サービスに適した値に変更してください。

  4. 「Java メッセージサービス」タブに戻って、JMS サービスタイプを REMOTE に変更します (デフォルトは LOCAL)。

  5. default-jms-host ドロップダウンリストから dashost を選択します。

  6. 変更を保存してから、ノードエージェントまたはクラスタを起動します。

Netscape 8.1.3、Mozilla 1.7、および Safari 2.0.4 ブラウザで jmaki チャートが表示できない (6543014)

説明

「ログ統計の監視」ページから一部のサポートされていないブラウザを使用してチャートを表示しようとすると、次のエラーがスローされます。


Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11
Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \
line/component.js (line:5437).
Message: area.initialize is not a function

解決方法

サポートされているブラウザを使用します。Enterprise Server v2.1.1 でサポートされているブラウザについては、「ブラウザ」を参照してください。

AS のメジャーリリースのたびに、デフォルトポートが変わっている (6566481)

説明

Enterprise Server の過去 3 回のメジャーリリースのたびに、デフォルト管理ポートが変わっていました。具体的には、7.x、8. x、および 9.x のデフォルト管理ポートは次のようになっています。

解決方法

これはバグではありませんが、このことに注意してください。デフォルト管理ポートは推奨値に過ぎません。今後の Enterprise Server リリースでは、デフォルトに 4848 ポートが継続して使用されます。

AIX でカスタムマスターパスワードを使用すると create-domain コマンドが失敗する (6628170)

説明

AIX オペレーティングシステムで、カスタムマスターパスワードを使用してドメインを作成しようとすると、次のエラーが発生して失敗します。


keytool error (likely untranslated): java.lang.NullPointerException
 Enter keystore password:  New keystore password:

Procedure解決方法: (AIX) カスタムマスターパスワードを使用してドメインを作成する


注 –

次に示す手順では、各手順に必須のオプションのみ指定されています。コマンドにそれ以外のオプションを必要とする場合は、それらのオプションをコマンドに指定してください。Enterprise Server コマンドの詳細は、『Sun GlassFish Enterprise Server v2.1.1 Reference Manual』を参照してください。


  1. 次のコード行を含むシェルスクリプトを作成します。

    #!/bin/sh
    changeKeystorePass() {
      keytool -storepasswd -keystore ${KEYSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeTruststorePass() {
      keytool -storepasswd -keystore ${TRUSTSTORE} -storepass ${OLD} -new ${NEW}
    }
    changeKeyPass() {
      keytool -keypasswd -alias s1as -keystore ${KEYSTORE} -storepass ${NEW} -keypass ${OLD} -new ${NEW}
    }
    changeDomainPasswordEntry() {
      keytool -storepasswd -storetype JCEKS -keystore ${DOMAINPASSWORDS} -storepass ${OLD} -new ${NEW}
    }
    deleteMasterPasswordFile() {
      if [ -f ${DOMAIN_PATH}/master-password ] ; then
        echo Deleting ${DOMAIN_PATH}/master-password
        rm -f ${DOMAIN_PATH}/master-password
      fi
    }
    DOMAIN_PATH=$1
    OLD=$2
    NEW=$3
    if [ $# != 3 ] ; then
      echo Usage: $0 domain-path old-master-pass new-master-pass
      exit 1
    fi
    echo Processing ...
    if [ ! -f ${DOMAIN_PATH}/config/domain.xml ] ; then
      echo "Domain with folder ${DOMAIN_PATH} does not exist, create it first"
      exit 2
    else
      KEYSTORE=${DOMAIN_PATH}/config/keystore.jks
      TRUSTSTORE=${DOMAIN_PATH}/config/cacerts.jks
      DOMAINPASSWORDS=${DOMAIN_PATH}/config/domain-passwords
      changeKeystorePass
      changeTruststorePass
      changeKeyPass
      changeDomainPasswordEntry
      deleteMasterPasswordFile
    fi
  2. デフォルトのマスターパスワードを指定して、ドメインを作成します。


    aadmin create-domain {--adminport aminportno|--portbase portbase} domain-name
    Please enter the admin user name>admin-user
    Please enter the admin password>admin-user-password
    Please enter the admin password again>admin-user-password
    Please enter the master password [Enter to accept the default]:>
    Please enter the master password again [Enter to accept the default]:>

    デフォルトのマスターパスワードは changeit です。

  3. 作成したドメインのマスターパスワードを変更します。

    マスターパスワードを変更するには、手順 1 で作成したスクリプトを実行します。


    script-name domain-path old-password new-password
    
  4. 手順 2 で作成したドメインを起動します。


    asadmin start-domain domain-name
    

    ドメインにはカスタムマスターパスワードが設定されているため、マスターパスワードの入力を求めるプロンプトが表示されます。

  5. プロンプトに応じて、新しいマスターパスワードを入力します。

  6. クラスタをサポートするように設定されているドメインの場合、ノードエージェントを作成して起動します。

    1. 手順 2 で作成したドメインにノードエージェントを作成します。


      asadmin create-node-agent --port portno --user admin-user
      
    2. 手順 a で作成したノードエージェントを起動します。


      asadmin start-node-agent
      

      ドメインにはカスタムマスターパスワードが設定されているため、マスターパスワードの入力を求めるプロンプトが表示されます。

    3. プロンプトに応じて、新しいマスターパスワードを入力します。

参照

次の Enterprise Server マニュアルページ

AIX: 0403-027 パラメータリストが長すぎる (6625591)

説明

AIX オペレーティングシステムで、一部の OS に関連する操作で次のエラーが発生して失敗します。


0403-027 The parameter list is too long

OS に関連する操作の例としては、アプリケーションの配備やアプリケーションクライアントコンテナの実行などがあります。

通常、この問題は CLASSPATH 環境変数のファイルパスが長いために発生します。

解決方法

次の解決方法のいずれかを使用します。

Procedure(AIX) コマンド行の最大長を増加する

ncargs 属性によって、環境変数を含むコマンド行の最大長を決定します。AIX オペレーションシステムでは、ncargs 属性のデフォルト値は 4 ブロック (4K バイト単位) です。Enterprise Server コマンドがコマンド行の最大長を超えないようにするには、この値を 16 ブロック (4K バイト単位) に増加します。


注 –

ncargs 属性の値を変更しても、デーモンの再起動やリフレッシュは不要です。


  1. ncargs 属性の値を確認します。


    lsattr -EH -l sys0 | grep ncargs
    
  2. ncargs 属性の値が 16 ブロック (4K バイト単位) よりも小さい場合、値を 16 に増加します。


    chdev -l sys0 -a ncargs=16
    

Apache とロードバランサプラグイン

ここでは、Apache Web Server およびロードバランサプラグインに関する既知の問題と、それに関連する解決法を示します。

Web サービスとして EJB とともに配備した Java EE アプリケーションが、負荷分散プラグインで収集されない (Issue 685)

説明

WAR (または EAR) をサーブレットベースの Web サービスとともに配備すると、HTTP ロードバランサは Web サービスに関する情報で更新されます。EJB ベースの Web サービスを配備する場合、HTTP ロードバランサの設定は新しいオブジェクトを反映するように更新されません。

解決方法

これらのコンテキストルートを、ロードバランサの設定ファイル (loadbalancer.xml) に手動で追加します。ただし、ロードバランサ設定の動的再構成 (auto-apply 機能を使用) により、以前の手動による編集が失われる場合があります。

DAS で auto-apply 機能を無効にしてから、手動エクスポート機能を使用し、ロードバランサ設定を編集して Web サーバーに適用します。

『High-Availability Administration Guide』に、Apache 2.0 で証明書を使用するための手順が記載されていない (6307976)

Apache のセキュリティーを実行するには、証明書を使用する必要があります。認証局から証明書を取得する手順については、modssl FAQ で証明書に関する情報を参照してください。

Apache Web Server をルートとして起動する必要がある (6308021)

Solaris では、Application Server がルートの下にインストールされている場合、Apache Web Server をルートとして起動する必要があります。Java Enterprise System は、ルートとしてインストールされます。Apache 2.0 の場合、ルートとして起動された後、Apache はユーザーが指定した別のユーザーに切り替えて動作します。そのユーザーは、/conf/httpd.conf ファイルで指定します。多くのシステムでは、ルートとして起動するには、httpd.conf ファイルを編集して正しいグループを指定する必要があります。次の行を置き換えます。

Group #-1

次の行に置き換えます。

Group nobody

ユーザーおよびグループの使用に関する詳細情報は、httpd.conf ファイルに記載されています。

アプリケーションクライアント

ここでは、アプリケーションクライアントに関する既知の問題とその解決方法を示します。

アプリケーションクライアントアーカイブのライブラリ JAR が MANIFEST ファイルを上書きする (6193556)

説明

クライアント JAR (たとえば reporter.jar) 内に最上位レベルの JAR ファイルがある場合、クライアント JAR を配備すると、その JAR の MANIFEST ファイルがクライアント JAR の MANIFEST ファイルを上書きします。

解決方法

現時点ではありません。

ACC が常に localhost:3700 に接続しようとする (6527987)

説明

アプリケーションクライアントが常に localhost:3700 に接続しようとします。問題は、クライアントノードを呼び出す前に、一部のシステムプロパティーが読み取られていなければならないことにあります。

解決方法

次をシステムプロパティーとして ( JAVA_CMD-D を指定して) 設定します。これらを appclient コードで設定しないでください。


org.omg.CORBA.ORBInitialHost = server-instance-host
org.omg.CORBA.ORBInitialPort = server-instance-port

sunpkcs11.jar がないため、ドメインを開始できません (6571044)

説明

64 ビット Linux 上で実行している場合、ドメイン開始時に次の例外が発生します。問題は jdk1.5.0_11/jre/lib/ext/ の下に sunpkcs11.jar がないことです。

解決方法

これは 64 ビット Linux で既知の JDK バグであり、JDK 1.5.0_13 で修正されます。

ASQuickStartupSelectionKey の代わりに NULL を返して、SocketChannel.keyFor() をブレークする (Issue Tracker 3027)

説明

複数のセレクタに SocketChannel が登録されている場合、socketChannel.keyFor(lastRegisteredSelector) を実行すると SelectionKey の代わりに NULL が返されます。

解決方法

これは JDK バグ 6562829 に関連しており、6.0 U3 で修正される予定です。回避方法は Enterprise Server 2.1 に組み込まれており、keyFor API を読み込む前はセレクタがラップ解除されています。これにより、JDK バグが修正されるまで、keyFor の正常な動作が可能になっています。

付属の Sun JDBC ドライバ

ここでは、Sun の JDBC ドライバに関する既知の問題とその解決方法を示します。

PreparedStatement エラーが発生する (6170432)

説明 1

1 つのトランザクションで 3000 を超える PreparedStatement オブジェクトを生成する場合、DB2 では次のエラーが発生する可能性があります。

[sunm][DB2 JDBC Driver] No more available statements. Please recreate your package with a larger dynamicSections value.

解決法 1

次のプロパティーを接続プール定義に追加して、ドライバが DB2 パッケージをより大きな動的セクション値に再バインドするようにします。

createDefaultPackage=true replacePackage=true dynamicSections=1000

接続プールの設定の詳細は、『Sun GlassFish Enterprise Server v2.1.1 管理ガイド』を参照してください。

説明 2

前述の PrepardStatement エラーに関連して、次のエラーメッセージがスローされることがあります。

[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.

解決法 2

DB2 サーバー設定パラメータ APPLHEAPSZ の値を増やします。適度な値は 4096 です。

説明 3

遮断レベル TRANSACTION_SERIALIZABLE。アプリケーションが遮断レベル TRANSACTION_SERIALIZABLE を採用し、前述したパラメータの 1 つを使用している場合、そのアプリケーションは接続を取得するときにハングアップすることがあります。

解決法 3

希望の遮断レベルを接続に対して設定するには、対応する接続プールをその遮断レベルで作成する必要があります。手順については、『Sun GlassFish Enterprise Server v2.1.1 管理ガイド』を参照してください。

マシンのリブート後またはサーバーの起動後に、Java DB が起動しない (6515124)

説明

ホストシステムまたは Solaris ゾーンのリブート後、または Enterprise Server 起動後に、付属の Java DB データベースが自動的に再起動しません。これはバグではなく、付属または他社製のアプリケーションで所定の動作です。問題は、Enterprise Server インスタンスの前に Java DB を起動する必要があるということです。

解決方法

ホストマシンまたは Solaris ゾーンのリブート後、必ず Enterprise Server が開始する前に Java DB が起動するようにしてください。一例として、次のようにします。


/opt/SUNWappserver/appserver/bin/asadmin start-database

asadmin コマンドのオプションについては、『Sun GlassFish Enterprise Server v2.1.1 Quick Start Guide』「Administration Tools」を参照してください。『Sun GlassFish Enterprise Server v2.1.1 Quick Start Guide』

配備

クラスタで自動配備に失敗することがある (6610527)

説明

タイミングの問題によって、クラスタをサポートするように設定されているドメインで自動配備に失敗することがあります。この問題は、クラスタをサポートしないドメインでは発生しません。

解決方法

次の解決方法のいずれかを使用します。

付属の ANT によって java.lang.NoClassDefFoundError 例外がスローされる (6265624)

説明

スレッド「main」で java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher の例外がスローされます。

解決方法

付属の ANT を Enterprise Server の外部で使用することはお勧めできません。

アプリケーションに固有のクラスローダーが JSP のコンパイルで使用されない (6693246)

説明

アプリケーションに固有のクラスローダー (applibs または --libraries) が、JSP のコンパイルで使用されません。結果として、これらの JAR を参照する JSP がコンパイルされません。

解決方法

現在のところ解決策はありません。

ドキュメント

ここでは、ドキュメント上の既知の問題とその解決方法を示します。

Javadoc に矛盾がある。(さまざまな ID)

いくつかの AMX インタフェースおよびメソッドについて、Javadoc が欠けているか間違っています。

EJB

リソースインジェクションが HandlerChain で動作しない (6750245)

説明

EJB の初期化順が原因で、リソースインジェクションが HandlerChain で機能しません。

解決方法

現在のところ解決策はありません。

高可用性

ここでは、高可用性データベース (HADB) に関する既知の問題とその解決方法を示します。

ロードバランサプラグインの健全性検査により、バックグラウンド (負荷) で多数の接続と切断が生成される (6453946)

説明

ロードバランサプラグインの健全性検査により、バックグラウンド (負荷) で多数の接続と切断が生成されます。健全性検査の目的で、runDaemonMonitor スレッドが Application Server のリスナーごとに接続と切断を実行します。これにより、Enterprise Server で接続が飽和する場合があります。

解決方法

新しい属性の monitor-interval-in-seconds を、loadbalancer.xml ファイルで使用できます。この属性を使用すると、ロードバランサプラグインに多数のリスナーが設定されている状況で、接続と切断のイベントの間に一時停止を挿入できます。一時停止のデフォルト値は 0 です。

ダブルネットワークでの HADB 設定 (ID なし)

2 つのサブネット上にダブルネットワークで設定された HADB は、Solaris SPARC 上では正常に動作します。しかし、一部のハードウェアプラットフォームでのオペレーティングシステムまたはネットワークドライバの問題が原因で、Solaris x86 および Linux プラットフォームではダブルネットワークを適切に処理できない場合があります。これにより、HADB について次の問題が発生します。

HADB データベースの作成が失敗する (ID なし)

説明

新しいデータベースを作成すると、使用可能な共有メモリーセグメントが少なすぎるという、次のエラーで失敗することがあります。

HADB-E-21054: System resource is unavailable: HADB-S-05512: Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message: Too many open files.

解決方法

共有メモリーが設定されており、その設定が機能していることを確認します。特に、Solaris 8 では、/etc/system ファイルを調べて、変数 shmsys: shminfo_shmseg の値がホストあたりのノード数の 6 倍以上になっていることを確認します。

リソース (ディスクおよびメモリースペース) が利用可能かどうかを hadbm set がチェックしない (5091280)

説明

hadbm set を使用してデバイスまたはバッファーのサイズを増やす場合、管理システムは、データベースの作成やノードの追加の際にはリソースが利用可能かどうかをチェックしますが、デバイスまたはメインメモリーのバッファーサイズを変更するときには利用可能なリソースが十分にあるかどうかをチェックしません。

解決方法

設定属性 devicesize または buffersize を増やす前に、すべてのホスト上にディスクおよびメモリーの空きスペースが十分にあることを確認してください。

packagepath の混在パスがサポートされない (5091349)

説明

同一のソフトウェアパッケージを、同じ名前で別のホストの別の位置で登録することはできません。次に例を示します。


hadbm registerpackage test --packagepath=/var/install1 --hosts europa11
Package successfully registered.
hadbm registerpackage test --packagepath=/var/install2 --hosts europa12
hadbm:Error 22171: A software package has already been registered with 
the package name test.

解決方法

HADB は、データベースクラスタ内のノードをまたがる混在パスをサポートしません。HADB サーバーのインストールディレクトリ (---packagepath) は、すべての参加ホストについて同一にしてください。

hadbm createdomain が失敗することがある (6173886、6253132)

説明

複数のネットワークインタフェースを備えたホスト上で管理エージェントを実行している場合に、すべてのネットワークインタフェースが同じサブネット上に存在しないと、createdomain コマンドが失敗することがあります。


hadbm:Error 22020: The management agents could not establish a 
domain, please check that the hosts can communicate with UDP multicast.

管理エージェントは、特に設定されていないかぎり、UDP マルチキャスト用の「最初の」インタフェース (java.net.NetworkInterface.getNetworkInterfaces() の結果で定義されている最初のインタフェース) を使用します。

解決方法

もっとも良い解決法は、使用するサブネットを管理エージェントに通知することです。たとえば、設定ファイル内の ma.server.mainternal.interfacesma.server.mainternal.interfaces=10.11.100.0 に設定します。あるいは、サブネット間のルーターを、マルチキャストパケットをルーティングするように設定することもできます。このとき、管理エージェントはマルチキャストアドレス 228.8.8.8 を使用します。

管理エージェントの新しい設定を再試行する前に、管理エージェントリポジトリのクリーンアップが必要になる場合があります。ドメイン内のすべてのエージェントを停止し、管理エージェント設定ファイル中の repository.dr.path で指定したリポジトリディレクトリにある、すべてのファイルとディレクトリを削除します。この操作は、新しい設定ファイルを使用してエージェントを再起動する前に、すべてのホスト上で実行する必要があります。

HADB の起動、停止、および再設定が失敗またはハングアップすることがある (ID 6230792、6230415)

説明

Solaris 10 Opteron では、hadbm コマンドを使用して HADB を起動、停止、または再設定すると、次のいずれかのエラーで失敗またはハングアップする場合があります。


hadbm:Error 22009: The command issued had no progress in the last 
300 seconds.
HADB-E-21070: The operation did not complete within the time limit, 
but has not been cancelled and may complete at a later time.

このエラーは、clu_noman_srv プロセスが使用するファイル (nomandevice) への読み取り/書き込みに不整合があった場合に発生することがあります。この問題は、HADB 履歴ファイルで次のメッセージを検索することにより検出できます。


n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
does not respond.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 
104.537454 sec.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
did not start.

解決方法

問題を手動で再現できていないため、次の回避策はまだ検証されていません。ただし、影響を受けるノードに対してこのコマンドを実行すれば、問題は解決されます。


hadbm restartnode --level=clear nodeno dbname

ノードのすべてのデバイスが再初期化されるわけではないことに注意してください。再初期化する前に、ノードの停止が必要になる場合があります。

管理エージェントが、例外「IPV6_MULTICAST_IF failed」で終了する (6232140)

説明

複数の NIC カードが実装された、Solaris 8 を実行しているホスト上で起動されている場合、IPv6 と IPv4 が有効になったカードが混在していると、管理エージェントが例外「IPV6_MULTICAST_IF failed

解決方法

環境変数 JAVA_OPTIONS-Djava.net.preferIPv4Stack=true に設定します。次に例を示します。


export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

あるいは、この問題が発生しない Solaris 9 以降を使用します。

clu_trans_srv を中断できない (6249685)

説明

64 ビットバージョンの Red Hat Enterprise Linux 3.0 のバグにより、非同期 I/O の実行時に clu_trans_srv プロセスが中断できないモードになります。この場合、kill -9 が機能せず、オペレーティングシステムの再起動が必要になります。

解決方法

Red Hat Enterprise Linux 3.0 の 32 ビットバージョンを使用します。

hadbm が大文字を含むパスワードをサポートしていない (6262824)

説明

パスワードが hadb に格納されるときに、パスワード内の大文字は小文字に変換されます。

解決方法

大文字を含むパスワードは使用しないでください。

HADB Version 4.4.2.5 から HADB Version 4.4.1.7 にダウングレードすると、ma が各種のエラーコードで失敗する (6265419)

説明

以前の HADB バージョンにダウングレードすると、管理エージェントが各種のエラーコードで失敗する場合があります。

解決方法

HADB データベースのダウングレードは可能ですが、リポジトリオブジェクトが変更されている場合は管理エージェントをダウングレードできません。ダウングレードのあとも、最新の HADB バージョンの管理エージェントを使用し続ける必要があります。

インストールまたは削除を行なっても、シンボリックリンクが保持される (6271063)

説明

HADB c パッケージ (Solaris: SUNWhadbc、Linux: sun-hadb-c) バージョン <m.n.u-p> のインストールまたは削除に関しては、symlink /opt/SUNWhadb/<m> はいったん作成されると、そのあとは何も手を加えられません。そのため、切り離された symlink が存在することがあり得ます。

解決方法

使用中の場合を除き、インストールの前またはアンインストールの後に symlink を削除します。

大域ゾーンとローカルゾーンの管理エージェントが干渉することがある (6273681)

説明

Solaris 10 では、大域ゾーンで ma-initd スクリプトを使用して管理エージェントを停止すると、ローカルゾーンの管理エージェントも停止されます。

解決方法

管理エージェントを大域ゾーンとローカルゾーンの両方にインストールしないでください。

セッションオブジェクトがタイムアウトし、MA で削除されたとき、hadbm/ma はより適切なエラーメッセージを出力するべきである (6275103)

説明

場合によっては、サーバー上のリソース競合の問題によって管理クライアントが切断されることがあります。再接続時、「hadbm: Error 22184: A password is required to connect to the management agent」という紛らわしいエラーメッセージが返されることがあります。

解決方法

場合によっては、サーバー上のリソース競合の問題によって管理クライアントが切断されることがあります。再接続時、「hadbm: Error 22184: A password is required to connect to the management agent」という紛らわしいエラーメッセージが返されることがあります。

サーバー上にリソースに関する問題があるかどうかを確認し、適切な処置 (たとえば、リソースの追加) を取ってから、操作を再試行します。

ルート以外のユーザーが HADB を管理できない (6275319)

説明

Java Enterprise System を使用して (ルートとして) インストールすると、ルート以外のユーザーは HADB を管理できなくなります。

解決方法

HADB を管理するには、常にルートとしてログインします。

管理エージェントは特殊用途のインタフェースを使用するべきではない (6293912)

説明

0.0.0.0 のような IP アドレスを含む特殊用途のインタフェースを、管理エージェント内の HADB ノードが使用する有効なインタフェースとして登録するべきではありません。このようなインタフェースを登録すると、IP アドレスの代わりにホスト名を使用して hadbm create コマンドを発行するユーザーによってこのインタフェース上に HADB ノードが設定された場合に、問題が発生する場合があります。その場合、これらのノードは通信できなくなり、create コマンドはハングアップします。

解決方法

複数のインタフェースを備えたホスト上で hadbm create を使用する場合は、DDN 形式を使用して IP アドレスを常に明示的に指定します。

Windows 上で再構築が失敗する (6291562)

説明

Windows プラットフォームでは、特定の設定および負荷の下で、オペレーティングシステム内で多数の再構築の失敗が発生する場合があります。この問題は、20 を超えるノードが設定されている状況で、複数のテーブルスキャン (select *) を並列に実行している場合に発生しています。症状としては、トランザクションが頻繁に中止され、修復またはリカバリの完了に長い時間がかかるため、システムのさまざまな部分で頻繁なタイムアウトが発生していることが考えられます。

解決方法

この問題を修正するには、Windows レジストリ変数 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters をデフォルトの 100 より大きい値に設定します。この値を 0x1000 (4096) に増やすことをお勧めします。詳細は、Microsoft サポートページの記事 811003 を参照してください。

パスが / である別の cookie をブラウザが取ると、セッション状態が保持されない (6553415)

説明

cookie のパスが「/」と等価であった場合、持続タイプとしてインメモリーレプリケーションを使用する「/」以外のコンテキストルートに配備された高可用性 Web アプリケーションの cookie と干渉し、高可用性 Web アプリケーションが HTTP セッション状態をまったく保持できなくなります。この状況になる可能性のある 1 つの一般的なシナリオは、同じブラウザを使用して「/」に配備されている管理 GUI と高可用性 Web アプリケーションとの両方にアクセスしている場合です。

解決方法

別のブラウザから「/」に配備されている Web アプリケーションにアクセスします。

as-install/lib の下に SASL32.DLLZLIB.DLL がないため、ロードバランサが IIS 6 と連動しない (6572184)

説明

SASL32.DLL および ZLIB.DLL は、Windows IIS 6 でロードバランサを使用する際に必要です。これらのファイルが現在 as-install/lib にありません。

解決方法

2 つの DLL ファイルを手動で as-install/lib にコピーします。これらのファイルは次の場所からダウンロードできます。


http://download.java.net/javaee5/external/OS/aslb/jars/

OS は希望するプラットフォームを表し、次の値のいずれかになります。

大域ゾーンで DAS 作成/起動および HA パッケージ伝播に問題がある (6573511)

説明

大域ゾーンで Enterprise Server を高可用性パッケージとともにインストールまたはアンインストールすると、次の 2 つの問題が起きます。

  1. HA パッケージがすべてのゾーンにインストールされます。これは望ましくありません。

  2. アンインストール時に、HA、MQ、JDK パッケージがすべてのゾーンから削除されます。これも望ましくありません。

ルートローカルゾーンからインストールまたはアンインストールする場合には、この問題は起きません。

解決方法

グルーバルゾーンではなくローカルルートゾーンからインストールまたはアンインストールを実行します。

/」 に配備された高可用性 Web アプリケーションがインメモリーレプリケーションで複製された HTTP セッションを再開できない (Issue Tracker 2972)

説明

/」に配備された高可用性 Web アプリケーションは、持続タイプとしてインメモリーレプリケーションを使用している場合、HTTP セッションを保持できません。

解決方法

インメモリーレプリケーションを持続タイプとして使用する高可用性 Web アプリケーションを「/」以外のコンテキストルートに配備します。このような Web アプリケーションを「/」で利用できるようにするには、Web アプリケーションが配備されている仮想サーバーの default-web-module として指定します。

AS ロードバランサインストーラが /usr/lib/mps パスを apachectl LD_LIBRARY_PATH に書き込まないため、Apache SSL を起動できない (6591878)

説明

Solaris 上で Apache 用の Enterprise Server ロードバランサをインストール中に、インストーラは apachectl スクリプトの LD_LIBRARY_PATH を更新します。しかし、インストーラは /usr/lib/mps パスを正しく書き込みません。Solaris の場合、LD_LIBRARY_PATH にこのパスがないと、Apache セキュリティーインスタンスは開始しません。

解決方法

この問題は Solaris プラットフォームでのみ起きます。この問題を回避するために、LD_LIBRARY_PATH/opt/SUNWappserver/appserver/lib/lbplugin/lib を追加します。

インスタンスまたはクラスタの「ロードバランサの有効化/無効化」が正しい状態を示すようにする必要がある (6595113)

説明

domain.xml に保存されている内容にかかわりなく、「クラスタ/インスタンス」一般情報ページで「ロードバランスの有効化」ボタンが常にオンになっています。

解決方法

AS9.1 EE IFR b58f/JES5 UR1: 不完全な HA が検出されたため、レジストリサーバーをインストールできない(6602508)

説明

(Solaris のみ) HADB 導入済みの SPARC Solaris 10 に Enterprise Server v2.1.1 をインストール後に、Enterprise Server を開始して JES 5 UR 1 をレジストリサーバーとともにインストールしようとすると、次のエラーを受け取ることがあります。


Dependency Error:  Installation can not proceed because the version of HA
Session Store 4.4.3 detected on this host is incomplete , and a compatible
version is required by Servervice Registry Deployment Support.

解決方法

Enterprise Server IFR が Solaris マシンにインストールされた状態で、JES 5 UR1 からレジストリサーバーをインストールすることは不可能です。次の JES5 UR1 配布ディレクトリから、pkgadd コマンドを使用して、手動でレジストリサーバーパッケージをインストールする必要があります。


path/OS/Products/registry-svr/Packages

Internet Explorer 6.0/7.0 ブラウザ固有: ロードバランサ設定ファイルをエクスポートすると、エラーがスローされる (6516068)

説明

(Internet Explorer 6 および 7 のみ)」ロードバランサ設定ファイル (loadbalancer.xml) を Internet Explorer 6 または 7 からエクスポートしようとすると、sun-loadbalancer_1_2.dtd DTD ファイルが見つからないことを示すエラーメッセージがブラウザに表示されます。

解決方法

設定ファイルを保存するには、次の回避方法を使用します。

  1. Internet Explorer の「ロードバランサ」ページで、「エクスポート」をクリックします。

    「XML page cannot be displayed」メッセージが表示されます。

  2. エラーフレームをクリックしてから、Internet Explorer で「ファイル」->「名前を付けて保存」を選択します。

  3. loadbalancer.xml ファイルを選択したディレクトリに保存します。

インストール

ここでは、インストール上の既知の問題とその解決方法を示します。

インストーラの装飾用画像に、古い製品バージョンが表示される (6862674)

説明

インストーラの左側の画像に、v2.1.1 ではなく、古い製品バージョンが表示されます。

解決方法

ありません。

OpenSolaris 2008.11 で、start-domain コマンドがタイムアウトする (6820169 および 6741572)

説明

OpenSolaris 2008.11 では、asadmin start-domain コマンドでドメインを起動しようとすると、次のエラーメッセージが表示されます。


Timeout waiting for domain domain1 to go to starting state.
CLI156 Could not start the domain domain1.

解決方法

ドメインは正常に起動されています。マシンの再起動後に、時刻と日付を修正してください。

64 ビット JDK によるインストールが失敗する (6796171)

説明

64 ビット JDK をインストールしている 64 ビットシステムでは、インストーラが 64 ビット JDK の使用を試みるため、インストールが失敗します。

解決方法

Sun GlassFish Enterprise Server を 64 ビットシステムにインストールする場合は、使用している 64 ビットマシンで 32 ビット JDK をダウンロードし、この JDK を使用して Sun GlassFish Enterprise Server をインストールしてください。次のコマンドを使用する必要があります。 ./distribution_filename —javahome path to 32–bit JDK location

インストールのあと、Sun GlassFish Enterprise Server で 64 ビット JDK を使用するには、asenv.conf ファイルの AS_JAVA 変数を、64 ビット JDK のインストールをポイントするように編集します。

Enterprise Server インストーラが Linux でクラッシュする (6739013)

説明

この問題は、環境変数 MALLOC_CHECK_ に 2 を設定して Linux を実行しているシステムで観察されています。

解決方法

環境変数 MALLOC_CHECK_ を 0 に設定してください。次のいずれかのコマンドを実行します。

一部の Linux システムで、「完了」ボタンをクリックしたあとにインストールの終了でハングアップする (5009728)

説明

この問題は、いくつかの Linux システム上で発生していました。これは Java Desktop System 2 でもっとも一般的に見られますが、Linux Red Hat ディストリビューションでも見られます。

インストールプログラムの最後の画面で「完了」ボタンをクリックすると、インストールプログラムは製品の「バージョン情報」ページまたは製品登録ページを表示するブラウザウィンドウの起動に失敗し、コマンドプロンプトに戻ることなくハングアップします。

解決方法

インストールプログラムを起動した端末ウィンドウで Ctrl+C を押すことにより、インストールプログラムを終了します。そのあとで、製品の「バージョン情報」ページまたは登録ページを表示するブラウザウィンドウが起動することがあります。ブラウザウィンドウが現れない場合には、ブラウザを起動してから次の URL を入力して「バージョン情報」ページを確認してください。


file://as-install/docs-ee/about.html

製品を登録するインストールオプションを選択した場合には、「バージョン情報」ページ上の登録ページへのリンクをたどってください。

Windows では、インストール中に imq ディレクトリを作成する必要がある (6199697)

説明

Windows では、インストールした直後に、ディレクトリ drive:\as\domains\domain1\imq が存在しない旨のメッセージを出力して Message Queue ブローカが起動に失敗します。

domain1 を起動してからブローカを起動した場合には、Application Server によってディレクトリが作成され、この問題は発生しません。

解決方法

  1. ブローカを作成する前に var_home_dir_location を作成します。次のようにします。


    $imqbrokerd -varhome var_home_dir_location
    

    次に例を示します。


    $imqbrokerd -varhome D:\as\domains\domain1\imq

アンインストール時に productregistry ファイルが正しく更新されない。サイレントモードを使用してインストールできない (6571598)

説明

Enterprise Server の productregistry ファイルに共用コンポーネント設定が含まれている場合、Enterprise Server のアンインストール処理で productregistry ファイルが正しく更新されないため、productregistry ファイルを名前変更または削除しないかぎり、それ以降のインストールでサイレントモードを使用できなくなります。productregistry ファイル内の共用コンポーネントエントリを変更せずに残しておくことは意図的ですが、そのためにそれ以後のインストールで混乱が生じます。

解決方法

アンインストールが正常に完了したことがアンインストールログファイルによって報告されたあとに、続けてインストールを実行する前に productregistry ファイルを削除します。以前のアンインストールが正常に完了したことを確認するには、as-installappserv_uninstall.class ファイルがあるかどうかを調べます。アンインストールが正常に完了した場合には、このファイルはありません。


注 –

インストールが正常に完了していない場合は、productregistry ファイルを削除しないでください。


productregistry ファイルは、Solaris では /var/sadm/install に、Linux では /var/tmp にあります。

IFR: MQ パッケージの問題で、AS を疎ローカルゾーンにインストールできない(6555578)

説明

疎ローカルゾーンに Enterprise Server をインストールする場合、Message Queue (MQ) が先にインストールされていないとインストールが失敗します。インストーラは MQ をインストールしようとしますが、インストール全体が失敗します。

解決方法

Enterprise Server を疎ローカルゾーンにインストールする前に、MQ をグローバルゾーンに手動でインストールする必要があります。この問題には 2 つの回避方法があります。

  1. 最新の MQ パッケージを入手するために、Enterprise Server IFR インストールが収録されている同一のメディアから、MQ 4.1 を手動でグローバルゾーンにインストールします。

    1. ご使用のプラットフォームに対応するインストーラを使用してください。


      mq4_1-installer-SunOS.zip
      mq4_1-installer-SunOS_X86.zip
      mq4_1-installer-Linux_X86.zip
      mq4_1-installer-WINNT.zip
    2. 圧縮ファイルを解凍して、インストーラを実行します。

      インストーラは mq4_1-installer ディレクトリにあります。

  2. IFR インストールのすべてのコンポーネントをグローバルゾーンにインストールします。この処理で、GZ の MQ のバージョンをチェックし、必要に応じて Enterprise Server IFR に付属のバージョンにアップグレードします。サンプルアプリケーションコンポーネントを選択してインストールするだけでも、MQ は IFR バージョンにアップグレードされます。

    1. グローバルゾーンで Enterprise Server インストールを実行しますが、サンプルコンポーネントのみを選択します。

      サンプルコンポーネントインストールでは、MQ と Enterprise Server 共用コンポーネントもすべてのゾーンにインストールされます。

    2. Enterprise Server インストールを再度実行しますが、今回は疎ローカルゾーンで実行します。

      何の問題もなくインストールが完了するはずです。

IFR インストールの -console プロンプト「Do you want to upgrade from previous Application?」を削除する必要がある (6592454)

説明

Enterprise Server IFR インストーラに -console オプション (コマンド行モード) を指定して実行すると、次のプロンプトが表示されます。


Do you want to upgrade from previous Application Server version?

残念ながら、IFR インストーラではこのようなアップグレードをサポートしていないため、このプロンプトは誤りです。プロンプトに「yes」と応答すると、インストールは正常に続行しますが、アップグレードされないばかりか、インストールが完全に実行されたことが表示されません。

解決方法

Enterprise Server インストールのアップグレードを希望する場合は、アップグレードツールを使用してください。

アップグレードのあと、ドメインの起動時に次の例外がログに記録される (6774663)

説明

次の例外がスローされます。

#|2008-11-19T01:44:37.422+0530|SEVERE|sun-appserver9.1|org.apache.catalina.session.ManagerBase|_ThreadID=17;_ThreadName=pool-1-thread-3;_Req uestID=cc0ddf54-a42e-400a-9788-e30d79a25d88;|PWC2768: IOException while loading persisted sessions: java.io.InvalidClassException: org.apache .catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 8647852380089530442, local class serialVersi onUID = -8515037662877107054 java.io.InvalidClassException: org.apache.catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 864 7852380089530442, local class serialVersionUID = -8515037662877107054..... .....

解決方法

アップグレードを完了して、アップグレードしたドメインを起動したあと、これらの例外は発生しても無視できます。

Java EE Tutorial

管理コンソールを使用して何らかのリソースを作成する場合には、「ターゲット」タブを使用してサーバーをターゲットとして指定します。コマンド行または asant ターゲットを使用する場合、サーバーがデフォルトのターゲットになるため、特別な処置は必要ありません。

Java Persistence

TopLink は Collection フィールド/プロパティーがクローン可能であることを想定する (Issue Tracker 556)

説明

Object[] から Collection への変換に java.util.Arrays.asList() API を使用している場合、JDK はクローン可能ではない java.util.ArrayList の実装を返します。結果として次の例外が発生します。


The method invocation of the method [protected native java.lang.Object 
java.lang.Object.clone() throws java.lang.CloneNotSupportedException] on the object 
[[pkg.A id = xxx]], of class [class java.util.Arrays$ArrayList], triggered an 
exception. Internal Exception: java.lang.reflect.InvocationTargetException Target 
Invocation Exception: java.lang.CloneNotSupportedException: 
java.util.Arrays$ArrayList

この問題は、https://glassfish.dev.java.net/issues/show_bug.cgi?id=556 で説明されています。

解決方法

別のコレクションをそのコンストラクタを使用して作成します。一例として、次のようにします。


myCollection = new ArrayList(java.util.Arrays.asList(a))

GenerationType.IDENTITY および SyBase とともに使用する DataDirect ドライバ (Issue Tracker 2431)

説明

DataDirect ドライバを SyBase とともに使用すると、GenerationType.IDENTITY を使用するエンティティーの挿入に失敗します。この失敗は、パラメータ化された PreparedStatement ごとに DataDirect ドライバがストアドプロシージャーを作成するために発生します。

解決方法

domain.xml ファイルで、対応するデータソースのプロパティー PrepareMethod=direct を設定します。

ライフサイクル管理

ここでは、ライフサイクル管理に関する既知の問題とその解決方法を示します。

ejb-timer-service プロパティーを設定すると set コマンドが失敗する (6193449)

説明

ejb-timer-service プロパティーの minimum-delivery-interval9000 に設定したあと、ejb-timer-service プロパティーの redelivery-interval-in-mills7000 に設定しようとすると、set コマンドが次のエラーにより失敗します。


[echo] Doing admin task set
[exec] [Attribute(id=redelivery-interval-internal-in-millis) : 
Redelivery-Interval (7,000) 
should be greater than or equal to Minimum-delivery-interval-
in-millis (9,000)]
[exec] CLI137 Command set failed.

これは、再発生間隔のプロパティーを最小発生間隔のプロパティーと関連付けるロジックが間違っていて、GUI または CLI を使用して再発生間隔よりも最小発生間隔が大きくなるような値を設定できないという問題です。

minimum-delivery-interval-in-millis を、ejb-timer-service プロパティーの redelivery-interval-in-millis 以上の値に設定する必要があります。問題は、redelivery-interval-in-millis の値が minimum-delivery-interval-in-millis の値よりも大きいことを検証するためのサーバーの処理にエラーがあることです。

解決方法

次のように、これらプロパティーのデフォルト値を使用します。


minimum-delivery-interval(default)=7000
redelivery-interval-in-millis(default)=5000

これらデフォルト以外の値を指定するとエラーが発生します。

DAS 以外の config 内の JMS 物理送信先を一覧表示すると、エラーがスローされる (6532532)

説明

default-config を使用して JMS 物理送信先を表示しようとすると、エラーメッセージが表示されます。

解決方法

これは予想どおりの動作です。Enterprise Server では、default-config は設定情報のテンプレートであるため、JMS 操作 (listcreate など) を default-config に対して実行できません。しかし、これらの JMS 操作をクラスタまたはスタンドアロンインスタンスの設定に対して実行することは可能です。

Win2003 のみ: ページング不可能なプールでメモリーリークが発生し、TCP スタックおよび RichAccess テストが中断する (6575349)

説明

(Windows 2003 のみ) Windows 2003 では、リッチアクセス機能実行時にメモリーリークが発生します。Win32 ページング不可能プールが増大し続け、ついには TCP/IP スタック全体が停止してしまうために起きる問題です。一度この障害が発生すると、TCP/IP スタックは回復可能状態のままになり、TCP/IP スタックを復元するには Windows 2003 システムをリブートするしかありません。

回避策

この問題には 2 つの回避方法があります。

ロギング

この節では、ログに関する既知の問題とその解決方法を示します。

access,failure のデバッグ文を設定すると、サーバーの起動時にハングアップする (6180095)

説明

JVM の java.security.debug オプションを設定すると、サーバーインスタンスの起動がデッドロックで動かなくなります。たとえば、domain.xml で次の設定を行うと、この問題が発生します。


<jvm-options>-Djava.security.debug=access,failure</jvm-options>

解決方法

現時点ではありません。このフラグは設定しないでください。

メッセージキュー

ここでは、Java メッセージキューに関する既知の問題とその解決方法を示します。

MQ ブローカが起動していないと、Enterprise Server が起動しない (6740797)

説明

JMS を REMOTE モードの Enterprise Server として設定している場合、MQ ブローカが起動していないと起動に失敗します。

解決方法

次のように JVM オプションを設定します。com.sun.enterprise.jms.CONNECT_MQ_LAZILY=true 。この JVM オプションを設定したあとは、MQ ブローカが起動していない場合でも Enterprise Server を起動できます。ただし、サーバーを起動する前に、MQ を起動することをお勧めします。

タイミングに依存する特定の場合に、JMS 再接続が正常に完了しない (ID 6173308、6189645、6198481、6199510、6208728)

説明

タイミングに依存する場面での再接続の失敗は、さまざまな問題によって引き起こされます。

解決方法

これらの問題は、次の方法で回避できます。

Linux 上にクラスタプロファイルがあると MQ ブローカが起動に失敗する (6524871)

説明

ドメインを作成しクラスタプロファイルを Linux システム上に配置すると、java.lang.OutOfMemoryError: Java heap space エラーが発生する場合があり、MQ ブローカが起動しないためにサーバーインスタンスが再起動できないことがあります。この状況になったシステムが回復することはありません。問題は /etc/hosts ファイルの設定ミスです。特に、サーバーホスト名がループバックアドレス 127.0.0.1 を指している場合です。

解決方法

設計上、ネットワークデバイスがループバックアドレスを指すように設定された状態で MQ ブローカクラスタが開始することはできません。これはバグではありません。回避方法は、Enterprise Server ホストの /etc/hosts ファイルが 127.0.0.1 を指さないようにすることです。

アップグレードの前に imqjmsra.jar を読み込む際、旧バージョンと新バージョンのクラスが一致しない (6740794)

説明

サーバーは起動中に Message Queue のバージョンをチェックします。Message Queue のバージョンが正しくない場合、サーバーは imqjmsra.jar を使用してアップグレードを行います。このアップグレード用の JAR とそのクラスは、次に再起動されるまでサーバーから利用できません。この状況は、Message Queue が単独でアップグレードされる場合、または Application Server のみにパッチが適用される場合に発生します。この状況の副次的な影響として、サーバーが起動しない場合があります。

解決方法

Message Queue と Enterprise Server の両方を同じパッチレベルに維持する必要があります。または、サーバーを再起動してください。

監視

ここでは、監視上の既知の問題とその解決方法を示します。

HTTP サービスの監視統計には有益な情報を提示しないため、無視する必要があるものがある (6174518)

説明

HTTP サービスの特定要素の監視統計を表示しているときに、表示される一部の値が現在の値に対応していないか、常に 0 になります。特に、次の HTTP サービスの統計は、Enterprise Server に適用できる情報を示していません。これらの値は無視してください。

解決方法

これらの監視情報は将来のリリースで削除され、より適切な情報で置き換えられる予定です。

管理 GUI から JNDI ブラウザを開くと、server.log に大量の例外がダンプされる (6591734)

説明

管理 GUI から JNDI ブラウザを開くと、多くの例外がスローされます。

解決方法

現時点ではありません。

パッケージ化

この節では、Enterprise Server 製品のソフトウェアコードのパッケージ化に関する既知の問題とその解決方法を示します。

AIX: monitor コマンドが AIX 上で機能しない (6655731)

説明

libcliutil.so ライブラリファイルが Enterprise Server にパッケージ化されていないため、AIX オペレーティングシステム上では monitor コマンドを実行できません。

Procedure解決方法: 欠落している libcliutil.so ライブラリファイルをインストールするには

  1. から JAR ファイルをダウンロードします。

  2. appserv-native-9.1.1-b16a.jar ファイルをダウンロードしたディレクトリに移動します。


    prompt% cd destination-dir
    
  3. appserv-native-9.1.1-b16a.jar ファイルの内容を抽出します。


    prompt% jar xf appserv-native-9.1.1-b16a.jar
    
  4. libcliutil.so ファイルを as-install/lib ディレクトリにコピーします。


    prompt% cp libcliutil.so as-install/lib
    

サンプル

この節では、Enterprise Server 製品に付属するサンプルコードに関する既知の問題とその解決方法を示します。

サンプルのインストールで、ログのインストールがエラーとなる (6802286)

説明

Sun GlassFish Enterprise Server のインストール後に、ログファイルのインストールによってサンプルの一部のファイルが作成されません。

解決方法

現在のところ解決策はありません。この問題はサンプルの基本機能には影響を及ぼしません。

アップグレード後に、Enterprise Server のサンプルと JES5 ポータルサンプルが derby ポート 1527 で競合する (6574563)

説明

Windows で、Enterprise Server 2.1.1 にアップグレードしたあと、そのサンプルと JES 5 ポータルサンプルが Derby ポート 1527 で競合します。特に、Enterprise Server 2.1.1 は 0.0.0.0:1527 (APP:APP 設定) で自動的に JavaDB を起動しますが、JES:5 ポータル JavaDB は hostnameIP:1527 ( portal:portal 設定) へのバインドを希望します。

このバグは、JES5 のバグ 6472173 で確認済みの問題を表しています。バグ 6472173 の回避策は、http://docs.sun.com で『Sun Java Enterprise System 5 Installation Guide for Microsoft Windows』を参照してください。

解決方法

次のコマンドを使用して Derby データベースを開始します。


JES-installation-dir\appserver\bin\asadmin start-database --dbhome JES-installation-dir\portal\data\derby

セキュリティー

ここでは、Enterprise Server と Web アプリケーションのセキュリティーおよび証明書に関する既知の問題とその解決方法を示します。

v2.1.1 にバンドルされている CA 証明書の期限が切れています。

説明

Sun GlassFish Enterprise Server v2.1.1 にバンドルされている CA 証明書の期限が 2010 年 1 月 8 日で切れています。そのため、ドメインの起動中に、一部の SEVERE メッセージが表示される可能性があります。

解決方法

キーストアから期限の切れた証明書を削除してください。JKS キーストアから証明書を削除するには、次のコマンドを実行します。

keytool delete -alias verisignserverca -keystore domain-dir /config/cacerts.jks

NSS キーストアから証明書を削除するには、次のコマンドを実行します。

certutil -D -n verisignserverca -d domain-dir/config

負荷が非常に高い場合に SSL のシナリオで OutofMemory エラーが発生する (JDK 6 Issue 23)

説明

非常に負荷の高い状況で特定の SSL シナリオを実行すると、JDK6 Sun PKCS11 Provider の JDK バグ (https://jdk6.dev.java.net/issues/show_bug.cgi?id=23 を参照) により、OutOfMemory エラーが発生する場合があります。

解決方法

この問題が発生した場合は、JRE インストールの java.security ファイルから sun.security.pkcs11.SunPKCS11 プロバイダを削除してください。

AIX: サーバー側の証明書の検証でエラーが発生したために WSS 動的暗号化鍵のテストに失敗する (6627379)

説明

AIX プラットフォームで、応答用の暗号化鍵を判別するための動的な暗号化に失敗します。失敗は、サーバー側で証明書の検証中に発生します。

失敗に対して、次のエラーメッセージがサーバーのログファイル server.log に書き込まれます。


Unable to validate certificate

Error occurred while resolving key information
com.sun.xml.wss.impl.WssSoapFaultException: Certificate validation failed

解決方法

Enterprise Server 2.1.1 に Metro 1.1 をインストールします。

AIX: EJB モジュール承認テストで @RunAs のエラー AccessLocalException: クライアントが承認されない (6627385)

説明

@RunAs 注釈を使用して定義されている run-as (伝達された) セキュリティー ID を持つエンタープライズ Bean 内のメソッドが、別のエンタープライズ Bean 内のメソッドを呼び出そうとしました。run-as 主体が sun-ejb-jar.xml 配備記述子ファイルで定義されていない場合、呼び出しは javax.ejb.AccessLocalException 例外で失敗します。


javax.ejb.AccessLocalException: Client not authorized for this invocation.

解決方法

sun-ejb-jar.xml 配備記述子ファイルの principal-name 要素で、run-as ロールが指定されている主体名を定義します。

SSL 終了が機能しない (6269102)

説明

SSL 終了が機能しない。ロードバランサ (ハードウェア) を SSL 終了用に設定すると、リダイレクト中に Enterprise Server がプロトコルを https から http に変更する。

解決方法

ハードウェアロードバランサと Enterprise Server の間にソフトウェアロードバランサを追加します。

SSL でソケット接続リークが発生する (6492477)

説明

JVM バグのため、HTTP リスナで security-enabledtrue に設定すると、一部の JDK バージョンでリークの問題が起きます。具体的には、このバグを再現する手順は次のようになります。

  1. HTTP リスナで security-enabledtrue に設定します。


    <http-listener acceptor-threads="1" address="0.0.0.0" 
    blocking-enabled="false" default-virtual-server="server" enabled="true" 
    family="inet" id=" http-listener-1" port="8080" security-enabled="true" 
    server-name="" xpowered-by="true">
  2. クイックルックテストの末尾にあるドメイン停止をコメントにします。

  3. クイックルックテストを実行します。

  4. ソケット使用状況を確認します。


    netstat -an | grep 8080

    使用状況が次のように表示されます。


    *.8080               *.*                0      0 49152      0 LISTEN
    *.8080               *.*                0      0 49152      0 BOUND

この問題は、GlassFish サイトの https://glassfish.dev.java.net/issues/show_bug.cgi?id=849 で説明されています。

解決方法

最新の JDK バージョンにアップグレードします。

アップグレード

この節では、アップグレードに関する既知の問題とその解決方法を示します。

一部の Linux システムで「アップグレードウィザードを起動」ボタンをクリックしたあとに、「同じ場所にアップグレード」を実行するインストーラがアップグレードツールの起動に失敗する (6207337)

説明

この問題はさまざまな Linux システムで発生しています。Java Desktop System 2 でもっとも一般的ですが、Red Hat ディストリビューションでも発生しています。

インストールプログラムの最後の画面で「アップグレードツールの起動」ボタンをクリックすると、そのインストールプログラムはアップグレード処理を完了するためのアップグレードツールの起動に失敗し、コマンドプロンプトに戻ることなくハングアップします。

解決方法

この問題は、コマンド行インストールモードを使って代替アップグレードを実行している場合には発生しません。

  1. GUI モードで代替アップグレードを実行してこの問題が発生した場合には、インストールプログラムを起動した端末ウィンドウで Ctrl+C を押すことにより、そのインストールプログラムを終了します。

  2. その端末ウィンドウから次のコマンドを使ってアップグレードツールを起動します。


    as-install/bin/asupgrade --source as-install/domains --target 
    as-install --adminuser adminuser --adminpassword adminpassword 
    --masterpassword changeit

    adminuser および adminpassword は、アップグレード中のインストールで使用されている値に一致する必要があります。

  3. アップグレードツールがアップグレードプロセスを完了したあとは、ブラウザを起動して次の URL を入力することにより、「バージョン情報」ページを参照できます。


    file://as-install/docs-ee/about.html

製品を登録するインストールオプションを選択した場合には、「バージョン情報」ページ上の登録ページへのリンクをたどってください。

8.0 Platform Edition (PE) から 8.1 Enterprise Edition (EE) UR2 へのアップグレード中およびそのあと、自己署名付き証明書が信頼されない (6296105)

解決方法

アップグレード後、ターゲットの domain.xml から次のエントリを削除し、サーバーを再起動します。

<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}
/config/keystore.jks</jvm-options>-
<jvm-options>Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}
/config/cacerts.jks</jvm-options>

(sbs-manual、sbs-installer) 「サーバーインスタンスサーバーに null という名前のシステムコネクタがない」というエラーをスローする (6545145)

説明

Enterprise Server 8.0 PE から 2.1.1 へのアップグレード時に、サーバーに null という名前のシステムコネクタがないというエラーがスローされ、sbs-manual に示されているような無効なユーザー情報が表示されます。ハードコードされた値を変更しても、同じエラーメッセージが表示されます。

解決方法

このバグは、8.0 PE から Enterprise Server にアップグレードする場合にのみ発生します。回避策として、8.1、8.2、または 9.0 のいずれかにアップグレードしてから、Enterprise Server にアップグレードします。

異なるビルドの組み合わせを使用すると、アップグレード中に異なるドメインが失われる (6546130)

説明

インプレースアップグレード実行時に、ソースに複数のドメインがある場合、プロセスが中止になっても、インストーラはアップグレードツールを呼び出します。GUI モードで呼び出した場合にそうなります。

解決方法

  1. インプレースを CLI モードでインストールし、インストール処理の最後にインストーラがアップグレードツールを選択するプロンプトを表示したときに終了します。この操作を行っても、ドメインディレクトリにあるどのドメインも削除されません。アップグレードツールは bin ディレクトリから手動で呼び出す必要があります。

  2. GUI モードでインプレースをインストールする場合は、処理中にドメインが失われることがないようにするために、ドメインルートにあるドメインのバックアップを取ります。インストール処理の最後に、インストーラがアップグレードツールを選択するプロンプトを表示したときに終了します。失われているドメインがあれば、ドメインバックアップしたドメインをドメインディレクトリにコピーします。アップグレードツールを起動して、手動でアップグレードを実行します。

Solaris: アップグレードツールであらかじめ入力されているマスターパスワードに、AS8.2 ではなく Enterprise Server 2.1.1 のパスワードが使用される (6565825)

説明

AS 8.2 からのアップグレードで、8.2 インストール環境のマスターパスワードがターゲットのインストール環境に継承されません。これが原因となって、次の管理者ログイン時に認証エラーとなります。

解決方法

Enterprise Server 2.1.1 のデフォルト管理パスワードは changeit です。8.2 からアップグレードしたあと、Enterprise Server にログインするときの問題を回避するために、次の 3 つの手順のいずれかを行なってください。

asupgrade GUI のローカライズされたオンラインヘルプが存在しない (6610170)

説明

英語以外の言語で asupgrade GUI を実行すると、この GUI のオンラインヘルプが選択した英語以外の言語にローカライズされていません。

解決方法

現時点ではありません。オンラインヘルプは英語以外のすべての目標言語にローカライズされる予定です。

複数ドメインのアップグレード (逆順序) 時にアップグレードツールが nodeagents ディレクトリを削除する (6636871)

説明

複数のドメインを含む構成をサイドバイサイドアップグレードすると、最後に処理されたドメインのノードエージェントだけが存在します。この問題は、アップグレードツールがドメインを処理するたびに、ターゲットの nodeagents ディレクトリを削除してから再作成するために発生します。

Procedure解決方法: 複数ドメインのサイドバイサイドアップグレードですべてのノードエージェントを保持する

  1. 各ドメインの処理後に、nodeagents ディレクトリの zip ファイルを作成します。

  2. すべてのドメインが処理されたあとで、作成した zip ファイルを解凍します。

    これで、すべてのノードエージェントが存続します。

インプレースアップグレードで既存のドメインの index.html がアップグレードされない (6831429)

説明

インプレースアップグレードの実行中に、すでに存在しているドメインの index.html ファイルが置換されません。表示されるサーバーのバージョンが古いままになります。この index.html ファイルは、SGES_BASEindex.html ファイルで置換できます。


SGES_BASE/lib/install/templates/ee/index.html DOMAIN_DIR/docroot/index.html

Web コンテナ

ここでは、Web コンテナに関する既知の問題とその解決方法を示します。

Windows で、--precompilejsp=true を使用してアプリケーションを配備すると、アプリケーションの JAR ファイルがロックされ、そのあとの配備取り消しや再配備に失敗する (5004315)

説明

Microsoft Windows にアプリケーションを配備するときに JSP のプリコンパイルを要求すると、それ以降、そのアプリケーションの配備取り消しや、そのアプリケーション (または同一モジュール ID を持つ任意のアプリケーション) の再配備を試みても、予期したとおりに動作しません。この問題は、JSP のプリコンパイル処理でアプリケーションの JAR ファイルが開かれたまま閉じられないため、Microsoft Windows がこれらのファイルを配備取り消しで削除することや、これらのファイルを再配備で上書きすることを許可しないことにあります。

配備取り消しは、Application Server からアプリケーションが論理的に削除されるという点では成功します。また、asadmin ユーティリティーからエラーメッセージは返されませんが、そのアプリケーションのディレクトリとロックされた jar ファイルはサーバー上に残っています。サーバーのログファイルには、ファイルとアプリケーションディレクトリの削除に失敗した旨のメッセージが出力されます。

配備取り消し後のアプリケーションの再配備が失敗するのは、既存のファイルとディレクトリをサーバーが削除しようとして失敗するからです。これは、最初に配備されたアプリケーションと同じモジュール ID を持つアプリケーションを配備しようとしたときにも発生します。アプリケーションのファイルを保持するディレクトリの名前を、サーバーはモジュール ID から決定するからです。

同様の理由から、配備取り消しをせずにアプリケーションを再配備しようとすると失敗します。

診断

アプリケーションを再配備しようとすると、または、配備取り消しを行なってから配備しようとすると、asadmin ユーティリティーは次のようなエラーを返します。


An exception occurred while running the command. The exception 
message is: CLI171 Command deploy failed : Deploying application in 
domain failed; Cannot deploy. Module directory is locked and can't 
be deleted.

解決方法

アプリケーションを配備するときに --precompilejsps=false (デフォルトの設定) を指定すると、この問題は発生しません。そのアプリケーションを最初に使用するときに JSP コンパイルが起動されるため、最初の要求に対する応答時間は、その後の要求に比べて長くなります。

また、プリコンパイルを行う場合には、そのアプリケーションを配備取り消しまたは再配備する前に、サーバーを終了して再起動する必要があります。シャットダウンすると、ロックされている JAR ファイルが解放されるため、再起動後の配備取り消しや再配備が成功します。

空の <load-on-startup> 要素を持つ Servlet 2.4 ベースの web.xml を使用して WAR を配備できない (6172006)

説明

web.xml のオプションの load-on-startup 要素は、サーブレットを宣言する Web アプリケーションの起動の一環として、そのサーブレットをロードおよび初期化すべきことを示します。

この要素のオプションの内容は、Web アプリケーションのその他のサーブレットとの関係で、そのサーブレットをロードおよび初期化する順序を示す整数です。空の <load-on-startup> は、そのサーブレットを含む Web アプリケーションの起動時にそのサーブレットがロードおよび初期化される場合、その順序は意味を持たないことを表します。

web.xml の Servlet 2.4 スキーマでは、空の <load-on-startup> がサポートされなくなりました。つまり、Servlet 2.4 ベースの web.xml を使用する場合は、整数値を指定する必要があります。<load-on-startup/> の場合と同様に、空の <load-on-startup> を指定すると、web.xmlweb.xml の Servlet 2.4 スキーマに対する妥当性検証に失敗し、Web アプリケーションの配備も失敗します。

下位互換性の問題もあります。空の <load-on-startup> は、Servlet 2.3 ベースの web.xml では有効です。

解決方法

Servlet 2.4 ベースの web.xml を使用する場合は、<load-on-startup>0</load-on-startup> を指定して、サーブレットの読み込み順序が問題にならないことを示します。

リソースに制約のあるサーバー上で JSP ページをコンパイルできない (6184122)

説明

JSP ページにアクセスしてもコンパイルに失敗し、サーバーログには「Unable to execute command」というエラーメッセージと次のスタックトレースが記録されます。


at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.
exec(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.
launch(Execute.java:416) 
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:427) 
at org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter.
executeExternalCompile(DefaultCompilerAdapter.java:448) 
at org.apache.tools.ant.taskdefs.compilers.JavacExternal.execute
(JavacExternal.java:81) 
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:842) 
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:682) 
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:396)

解決方法

JSP のコンパイルスイッチを「fork」から「false」に設定します。

これは、次のいずれかの方法で行えます。

これらのいずれかを設定することにより、ant が javac コンパイルのための新規プロセスを生成することが防止されます。

Enterprise Server で、auth-passthrough Web Server 6.1 アドオンがサポートされない (6188932)

説明

Sun GlassFish Enterprise Server 2.1.1 では、Sun GlassFish Enterprise Server Enterprise Edition 7.1 で使用できる auth-passthrough プラグインが提供する機能に対するサポートが追加されています。ただし、ProductName; 2.1.1 での auth-passthrough プラグイン機能の設定方法は異なります。

Enterprise Server Enterprise Edition 7.1 での auth-passthrough プラグイン関数は、次に示す 2 層配備のシナリオで有効でした。

このようなネットワークアーキテクチャーの場合、クライアントは、service-passthrough プラグイン関数で設定されたフロントエンド Web サーバーに接続し、HTTP 要求を、プロキシされた Application Server インスタンスに転送して処理します。Application Server インスタンスは、要求をクライアントホストから直接にではなく、Web サーバープロキシからしか受信できません。その結果、プロキシされた Application Server インスタンス上に配備され、クライアントの IP アドレスなどのクライアント情報を照会する任意のアプリケーションは、中継された要求の実際の発信元ホストであるプロキシホストの IP を受信します。

解決方法

Application Server Enterprise Edition 7.1 では、プロキシされた Application Server インスタンス上で、そのインスタンスに配備された任意のアプリケーションがリモートクライアントの情報を直接使用するように auth-passthrough プラグイン関数を設定できました。その場合は、プロキシされた Application Server インスタンスが、service-passthrough プラグインを実行している中間の Web サーバー経由ではなく、要求を直接受信したかのように見えます。

Enterprise Server 2.1.1 では、domain.xml 内の <http-service> 要素の authPassthroughEnabled プロパティーを TRUE に設定することにより、auth-passthrough 機能を有効にすることができます。次に例を示します。


<property name="authPassthroughEnabled" value="true"/>

Application Server Enterprise Edition 7.1 の auth-passthrough プラグインと同じセキュリティーの問題が、Enterprise Server 2.1.1 の authPassthroughEnabled プロパティーにも適用されます。authPassthroughEnabled は、認証に使用される情報 (要求の送信元 IP アドレスや SSL クライアント証明書など) を上書き可能にするため、authPassthroughEnabled を TRUE に設定した信頼できるクラスタまたはサーバーのみに、Enterprise Server 2.1.1 インスタンスへの接続を許可することが必要です。予防措置として、authPassthroughEnabled を TRUE に設定するのは、企業ファイアウォールの内側にあるサーバーだけにすることをお勧めします。インターネット経由でアクセス可能なサーバーでは、決して authPassthroughEnabled を TRUE に設定しないでください。

プロキシ Web サーバーが service-passthrough プラグインを使用して設定されており、要求を authPassthroughEnabled が TRUE に設定された Enterprise Server インスタンスに転送するシナリオでは、SSL クライアント認証は Web サーバープロキシ上で有効になり、プロキシされた Enterprise Server インスタンス上で無効になる可能性があることに注意してください。この場合、プロキシされた Enterprise Server インスタンスは、SSL 経由で認証されたかのように引き続き要求を処理し、クライアントの SSL 証明書を、それを要求している任意の配備されたアプリケーションに提供します。

Web サーバー

AS 9.1 b50e.Linux: AS ロードバランサインストール後に WS インストールを開始できない: libjvm.so:cannot open shared エラーになる (6572654)

説明

この問題は、Linux システムで Sun GlassFish Web Server を Enterprise Server およびロードバランサとともに使用している場合にのみ起きます。このような場合、Enterprise Server とロードバランサのインストール後に、libicui18n.so.2libicuuc.so.2 が競合するため Web Server が起動に失敗することがあります。これらのライブラリは /opt/sun/private/lib /opt/sun/appserver/lib の両方にあります。

解決方法

使用すべき正しいライブラリは /opt/sun/appserver/lib にあるライブラリです。このライブラリに対して lbplugin が構築されているからです。/opt/sun/private/lib からこの 2 つのライブラリを削除すると、Web Server はエラーを出さずに起動します。

または、/opt/sun/private/lib からライブラリを削除できない場合は、Web サーバーの startserv スクリプトで、LD_LIBRARY_PATH/opt/sun/private/lib の前に /opt/sun/appserver/lib を配置することもできます。つまり、


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}:
/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib"; export LD_LIBRARY_PATH 

これを、次の項目で置き換えます。


# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux
LD_LIBRARY_PATH="/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib:
${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH

Web サービス

ここでは、Web コンテナに関する既知の問題とその解決方法を示します。

Ant タスク wsimport が Java EE SDK b33d (JDK 1.6 を使用) で NoClassDefFoundError を出して失敗する(6527842)

説明

Java EE SDK b33d に含まれる JDK 1.6 を使用して JAX—WS テストを実行するときに、問題が発生する場合があります。テストはただちに停止し、次のメッセージが表示されます。


[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \
com/sun/tools/ws/WsImport

webservices-tools.jarcom/sun/tools/ws/WsImport.classcom/sun/tools/ws/ant/WsImport.class、および com/sun/tools/ws/ant/WsImport2.class が含まれていても、このエラーは起きます。さらに、1.5.0-10 JDK を使用すると、同じテスト作業空間が問題なく機能します。

解決方法

JAX-WS テストを実行する前に、webservices-api.jar$JAVA_HOME/jre/lib/endorsed にコピーします。

IFR EE ビルドで publish-to-registry コマンドが失敗する (6602046)

説明

JAXR は SAAJ を使用して SOAP メッセージをレジストリに送信します。IFR 以外では、SAAJ impl クラスは lib/webservices-rt.jar の下にあります。IFR の場合、SAAJ クラスは引き続き lib/webservices-rt.jar の下にあります。また、saaj-impl.jar/usr/share/lib ディレクトリにあります。この jar ファイルは Enterprise Server で格上げされ、webservices-rt.jar のクラスよりも優先されています。この jar ファイルには、SOAP メッセージを Web サービスレジストリに送信するために必要なセキュリティー権限がありません。/usr/share/lib ディレクトリ内の jar に権限を付与するか、/usr/share/lib の jar に依存しないように、パッケージを変更する必要があります。

解決方法

server.policy ファイルに次の内容を追加します。


grant codeBase "file:/usr/share/lib/saaj-impl.jar" {
   permission java.security.AllPermission;
};

JDK6 u4 b3 で wscompile は「package javax.xml.rpc does not exist」エラーが発生する (6638567)

説明

wscompile Ant タスクは、JDK 6 Update 4 では失敗します。JAX-RPC API クラスごとに、次のエラーメッセージが表示されます。


package package-name does not exist

解決方法

wscompile Ant タスクを実行する前にj2ee.jar ではなく javaee.jar がクラスパスに指定されていることを確認します。