ヘッダーをスキップ
Oracle Application Serverリリース・ノートおよび新機能
10gリリース3(10.1.3.4)
B50870-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

12 Oracle Containers for J2EE

この章では、Oracle Containers for J2EEに関連する問題と新機能について説明します。内容は次のとおりです。

12.1 アプリケーションにより共有されるHTTPクライアントの静的メモリー

HTTPクライアント・ライブラリは、OC4Jシステム・クラス・ローダーによってロードされるため、OC4Jインスタンスにデプロイされているすべてのアプリケーションによって継承されます。その結果、HTTPクライアントの静的メモリーは、すべてのアプリケーションで共有されます。HTTPクライアントの静的メモリーに格納されているデフォルト値をアプリケーションが変更すると、同じHTTPクライアント・ライブラリに依存する他のアプリケーションに影響を与える可能性があります。この問題の回避方法は、各アプリケーションでHTTPクライアント・ライブラリのローカル・コピーをインポートすることです。その結果、HTTPクライアントの静的メモリーは、そのアプリケーション専用となり、別のアプリケーションによって変更できません。

次の例では、HTTPクライアント・ライブラリのローカル・コピーをインポートし、OC4Jシステム・クラス・ローダーによってロードされたHTTPクライアント・ライブラリを継承しないように、アプリケーションを構成する方法を示しています。変更は、アプリケーションのorion-application.xmlファイルで行う必要があります。

<orion-application>
   ...
   <imported-shared-libraries>
      <remove-inherited name="oracle.http.client">
   </imported-shared-libraries>
   ...
   <library path="ORACLE_HOME/j2ee/home/lib/http_client.jar"/>
   ...
</orion-application>

12.2 JAZN移行ツールでADFPrincipalタイプが正しく移行されない

OracleAS JAAS Provider移行ツールを使用して、ファイルベースのプロバイダからOracle Identity Management(基本的にはOracle Internet Directory)セキュリティ・プロバイダに、policyモードまたはallモードのいずれかでポリシーを移行するときには、次の問題に注意してください。移行ツールは、ポリシー構成において、Oracle Internet Directoryレルム名を、権限受領者エントリのカスタムまたは非レルムのプリンシパル名の先頭に追加します。(カスタム・プリンシパルは、たとえば、カスタム・ログイン・モジュールを使用した認証時に、作用する可能性があります。)

移行された構成では、権限受領者エントリのカスタム・プリンシパル名は、たとえば、単なるanyoneではなく、us/anyoneになります(usはレルム名)。その結果、権限の問題が生じます。たとえば、ADFアプリケーションの場合、セキュリティ・プロバイダとしてのOracle Internet Directoryへの移行後に公開ページが機能しなくなります。

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

12.3 外部LDAPプロバイダ使用時の構成の問題

アプリケーション用に外部LDAPプロバイダを使用する予定の場合、デフォルトのXMLセキュリティ・プロバイダで構成される中間層インストールの使用をお薦めします。

インフラストラクチャ・インストール(OIDなど)と関連する中間層インストールがあり、外部LDAPプロバイダを使用する場合、手動でjazn.xmlファイルを編集する必要があります。<jazn>要素のprovider属性とlocation属性を次のように変更します。

<jazn provider="XML" location="./system-jazn-data.xml" ... >

12.4 AIXおよびLinux on POWER: JDK 1.4.2でプロセスが起動しない

JDK 1.5をJDK 1.4.2に置き換えると、OC4Jが起動せず、OPMNログ(ORACLE_HOME/opmn/logs//default_group~home~default_group~1.log)には次のようなエラーが記録されます。

--------
Start process
--------
**************************** WARNING ******************************
You are currently running with data limits not set to unlimited.
You may experience out of memory(OOM) conditions.
In the event of an OOM error, please increase the data limit value.
You may use "ulimit -d unlimited" to set data limit as unlimited.
*******************************************************************

[ Unrecognized option:
-Xjit:exclude={oracle/sysman/emSDK/eml/util/iAS/IASLogConfig.getViewLogsURL(Ljav
ax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/
http/HttpServletResponse;)Ljava/lang/String;},
exclude={oracle/security/jazn/util/OHSH.update([B)V},
exclude={com/phaos/ASN1/ASN1Sequence.<init>(Ljava/io/InputStream;)V},
exclude={com/phaos/crypto/DES.l([B[IZ)V} ]
[ JVMCI123: Unable to parse 1.2 format supplied options - rc=-6 ]
Could not create JVM.

JDK 1.4.2でOC4Jが確実に起動するようにするには、次の回避方法を使用します。

  1. opmn.xml ($ORACLE_HOME/opmn/conf/opmn.xml)から次の行を削除します。

    -Xjit:exclude={oracle/sysman/emSDK/eml/util/iAS/IASLogConfig.getViewLogsURL(
    Ljavax/servlet/ServletContext;Ljavax/servlet/http/HttpServletRequest;Ljavax/s
    ervlet/http/HttpServletResponse;)Ljava/lang/String;},
    exclude={oracle/security/jazn/util/OHSH.update([B)V},
    exclude={com/phaos/ASN1/ASN1Sequence.&lt;init>(Ljava/io/InputStream;)V},
    exclude={com/phaos/crypto/DES.l([B[IZ)V}
    
  2. 次のコマンドを使用して、OC4Jインスタンスを起動します。

    opmnctl startall
    

12.5 HP-UXおよびSolarisオペレーティング・システム(x86)の場合のみ: JDK 1.4.2 ()でOC4Jプロセスが起動しない

JDK 1.5をJDK 1.4.2に置き換えると、OC4Jが起動せず、OPMNログ(ORACLE_HOME/opmn/logs//default_group~home~default_group~1.logには次のようなエラーが記録されます。

--------
Start process
--------
Unrecognized VM option 'AppendRatio=3'
Could not create the Java virtual machine.

JDK 1.4.2でOC4Jが確実に起動するようにするには、次の回避方法を使用します。

  1. 次のコマンドを使用して、OC4Jインスタンスを停止します。

    opmnctl stopall
    
  2. opmn.xml($ORACLE_HOME/opmn/conf/opmn.xml)から次の行を削除します。

    AppendRatio=3
    
  3. 次のコマンドを使用して、OC4Jインスタンスを起動します。

    opmnctl startall
    

12.6 HP-UX PA-RISC(64-Bit)の場合: JDK 1.6を使用してJAZN移行ツールを実行すると失敗する

Oracle Application Server 10gリリース10.1.3.4でJDK 1.6の使用中に、JAZN移行ツールに障害が発生します。

JAZN移行ツールをJDK 1.6で実行する前に、次のコマンドを使用して、環境変数SHLIB_PATHを設定する必要があります。

export SHLIB_PATH=$ORACLE_HOME/jdk/jre/lib/PA_RISC2.0/jli

12.7 新機能

この項では、Oracle Containers for J2EE用の新機能について説明します。この項の内容は次のとおりです。

12.7.1 orion-web.xmlのURLのリライトを有効または無効にする属性

orion-web.xml内の<session-tracking>要素に、URLのリライトを有効または無効にするurl-rewriting属性が含まれるようになりました。次に例を示します。

<session-tracking url-rewriting="false"/>

url-rewritingのデフォルト値はtrueです。値がfalseに設定されている場合、URLのリライトは無効です。

URLのリライトは、セッションIDをURLにエンコードする手法です。WebクライアントでCookieがサポートされておらず、アプリケーションでHTTPセッション・データにアクセスする必要がある場合、Cookieを使用するかわりに、URLのリライトを有効にすることができます。たとえば、CookieをサポートしていないWireless Application Protocol(WAP)クライアントに対して、URLのリライトを使用できます。

URLへのセッションIDのエンコードを抑止するには、<session-tracking>url-rewriting属性をfalseに設定します。

12.7.2 プロキシ・セッション・サポートの向上

データソース・プロキシ・セッション・サポートは、管理データソースの接続プールで自動的にプロキシ・セッションを使用できるようにすることで向上しました。プロキシ・セッションが有効の場合、OC4Jにより、プールで接続リクエストが作成されるたびに、アプリケーション認証されたユーザーの接続に対して、プロキシ・セッションが開かれます。接続がプールに返されると、プロキシ・セッションは閉じます。

プロキシ・セッション・サポートには、別のユーザーがあるユーザーとして接続できるプロキシ認証が含まれています。たとえば、プロキシ認証により、中間層で汎用アカウントを使用して一度データベースに対して認証されると、実際のユーザーにかわって軽量セッションを確立できます。プロキシ接続は、接続リクエスト時に現行のスレッド状態に関連付けられたユーザーによって取得されます。

プロキシ接続サポートを有効にするには、proxy-sessions属性(trueに設定)を、次に示すように、data-sources.xmlの接続プール定義に追加します。デフォルトでは、プロキシ・セッションは無効です。

<managed-data-source name="OracleDS"
    connection-pool-name="Example Connection Pool"
    jndi-name="jdbc/OracleDS"/>

<connection-pool name="Example Connection Pool"
    max-connections="100"
    min-connections="20"
    num-cached-statements="10"
    proxy-sessions="true">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"
      user="user"
      password="password"
      url="jdbc:oracle:thin:@localhost:5521:main">
    </connection-factory>
  </connection-pool>

プロキシ認証では、データベースにアプリケーション・ユーザーが存在し、適切なCONNECT THROUGH権限を付与されていることが必要です。次のSQLは、app_userがユーザーscottとして認証され、接続できるようにデータベースを設定するために使用されます。ユーザーscottは、接続プール、またはdata-sources.xmlの管理データソースに対して定義する必要があります。

ALTER USER app_user GRANT CONNECT THROUGH scott