この付録は、WebCenterアプリケーションおよびポートレットの構築とデプロイで発生する問題を、ユーザーが診断する際に役立つことを目的としています。この付録で取り上げるのは、WebCenterアプリケーションおよびポートレットのトラブルシューティングです。内容は、次のとおりです。
この項では、Oracle WebCenter Frameworkでの作業中に発生する可能性のある代表的な問題と解決方法について説明します。次の分野に分類されます。
この項では、WebCenterアプリケーションの問題と解決方法について説明します。
デプロイされたアプリケーションでセキュアな資格証明を更新するために使用される資格証明MBeanが、Application Server Controlコンソールを使用してアクセスを試みるときに表示されません。
問題1
アプリケーションが停止しています。
解決方法1
アプリケーションを起動します。
問題2
アプリケーションのweb.xml
ファイルに、Oracle Application Development Framework(Oracle ADF)認証サーブレットが含まれていません。
解決方法2
アプリケーションのweb.xml
にOracle ADF認証サーブレットが確実に含まれるようにします。この方法については、12.5項「デプロイ済アプリケーションでの資格証明の更新」を参照してください。
問題3
Oracle ADF認証サーブレットが起動時にロードされませんでした。
解決方法3
起動時に認証サーブレットが確実にロードされるようにします。この方法については、12.5項「デプロイ済アプリケーションでの資格証明の更新」を参照してください。
問題4
oracle.extapp.runtime.jar
ファイルが、アプリケーションのクラスパスで使用できない可能性があります。
解決方法4
oracle.extapp.runtime.jarファイルがアプリケーションのクラスパスで確実に使用できるようにします。
大型のWebCenterアプリケーション(複数ページで、各ページに複数のコンポーネントがある)を実行中に、様々なエラーによりアプリケーションが機能しなくなります。
問題
プロジェクト・テンプレートのデフォルトのメモリー・サイズ設定が、大型WebCenterアプリケーションには小さすぎます。この問題が原因で、アプリケーションが様々なエラーによって機能しなくなる可能性があります。
解決方法
プロジェクトのMaxPermSize
を増やして、大型WebCenterアプリケーションに対応するようにします。
プロジェクトの「プロジェクト・プロパティ」に移動します。
左側のパネルで「実行/デバッグ」を選択します。
「実行構成」の「編集」ボタンをクリックします。
「Javaオプション」に、次のように入力します。
-XX:MaxPermSize=256m
「OK」をクリックします。
「OK」をクリックします。
WebCenterアプリケーションを事前生成済スタンドアロンOC4Jにデプロイするとき、メモリーが十分でないことを示すエラーが発生します。
問題
WebCenterアプリケーションを事前生成済スタンドアロンOC4Jにデプロイするとき、次のエラーが発生します。
2007-03-05 17:17:47.140 INTERNAL_ERROR oracle.adf.share.config.ADFConfigImpl nulldate time
java.lang.OutOfMemoryError: PermGen spacedate time
java.lang.OutOfMemoryError: PermGen spacedate time
java.lang.OutOfMemoryError: PermGen spacedate time
java.lang.OutOfMemoryError: PermGen spacedate time
java.lang.OutOfMemoryError: PermGen spacedate time
java.lang.OutOfMemoryError: PermGen space
デプロイ前ステージでは多数のクラスがロードされるため、デプロイ前ツールを実行する前に、事前生成済スタンドアロンOC4Jで使用される永続メモリー・サイズを増やす必要があります。
解決方法
永続メモリー・サイズを増やすためにJVM引数を組み込んでください。次の例のように、引数文字列に-XX:MaxPermSize=256m
(またはこれ以上)を指定して、クラスのロードで使用される永続メモリーを増やします。
Microsoft Windowsの場合:
cd OC4j_HOME\j2ee\home start java -server -XX:MAXPermSize=512M -Xmx256m -jar oc4j.jar
UNIX/Linux(Bourneシェル)の場合:
cd OC4J_HOME/j2ee/home java -server -XX:MAXPermSize=512M -Xmx256m -jar oc4j.jar &
この項では、ポートレットで発生する代表的な問題と解決方法について説明します。
Oracle JDeveloperでの設計時に、コンポーネント・パレット内の同じプロデューサの下に同じポートレットが2回表示されます。
問題
複数のプロデューサに、登録時に同じ名前が指定されました。同じ名前を指定されたプロデューサは、コンポーネント・パレット上で1回しか表示されません。したがって、2つのプロデューサを登録して、それぞれにMyProducerという名前を指定すると、MyProducerの名前は、コンポーネント・パレット上に1回しか表示されず、両方のプロデューサのポートレットが1つのインスタンスの下に表示されます。重複の問題に加えて、これではどのポートレットがどのプロデューサのものか判断するのが難しくなります。
解決方法
プロデューサを編集して、一意の名前を指定します。
同じアプリケーションを同じOC4Jインスタンスに、同じプロデューサに対して異なるURLを持つ別の名前で2回デプロイすると、ポートレットのカスタマイズは、一方のアプリケーションに対してのみ表示され、他方のアプリケーションには表示されません。
問題
同じアプリケーションを2回デプロイしたため、両方のアプリケーションでは、同じ名前のプロデューサとURLの接続を使用します。その結果、2つのアプリケーション間でプロデューサURLが異なる場合、connections.xml
はアプリケーションごとにではなく、グローバルにロードされるため、一方のプロデューサのカスタマイズのみが使用可能です。したがって、最初にロードされるアプリケーションが、接続エントリを使用されるアプリケーションです。その後、その接続がメモリーにグローバルにプールされ、アクセスされる2番目のアプリケーションでは最初のアプリケーションの接続マッピングが使用されます。したがって、2番目のアプリケーションのカスタマイズにはアクセスできません。これはそのプロデューサURLが最初のアプリケーションと異なるためです。
解決方法
同じアプリケーションを同じOC4Jインスタンスに複数回デプロイする場合、各アプリケーションが必ず同じ接続マッピングを使用するようにします。
外部アプリケーション・ポートレット上の「ログイン情報の更新」リンクをクリックすると、次のエラーが発生します。
"javax.faces.el.MethodNotFoundException: processExtAppsCredentailEvent"
問題
「ログイン情報の更新」リンクは、ユーザーの資格証明を格納するために資格証明プロビジョニング・ページを作成した場合にのみアクセスできます。現在、外部アプリケーション・ポートレットを含むプロジェクト内に資格証明プロビジョニング・ページがありません。
解決方法
外部アプリケーション対応プロデューサのポートレットを持つページを含むプロジェクト内で、資格証明プロビジョニング・ページを作成します。実行する手順は、10.7.2.1項「資格証明プロビジョニング・ページの追加」を参照してください。
Oracle Application Serverインスタンスは起動し実行中ですが、プロデューサにアクセスできません。
問題
インストール時にWebCenterのみオプションを選択した場合、ポートレット・プロデューサは、同じHTTPポートでアプリケーションをホスティングするOracle Application Serverとして実行されていません。
解決方法
Oracle Application Serverの「ようこそ」ページにアクセスすれば、ポートレットが実行されているポートを簡単に見つけることができます。
http://myhost:port
ページの右上の領域で、ポートレット・リンクをクリックします。
外部アプリケーション・ポートレット上の「ログイン情報の更新」リンクをクリックすると、資格証明プロビジョニング・ページが次のエラーとともに表示されます。
1. External application ID was found to be null while rendering the Credential Provisioning page! 2. Cause: The credential page was probably run standalone or invoked from a portlet added from a producer that must be but has not been associated with an external application. 3. Action: The credential page must be invoked from the link in portlets added from producers associated with the external application. Running the credential page standalone is not supported.
問題
外部アプリケーション認証が必要なプロデューサを登録しましたが、外部アプリケーションを定義し、このプロデューサと外部アプリケーションを関連付けていません。ページ上にこのプロデューサからのポートレットを追加すると、ページには実行時に資格証明をプロビジョニングするリンクが表示されました。NULL外部アプリケーションIDを持つエラーは、プロデューサが資格証明をプロビジョニングする外部アプリケーションと関連付けられていないことを意味します。
解決方法
外部アプリケーション認証が必要なすべてのプロデューサについて、必ずプロデューサを外部アプリケーションに関連付けます。
実行時に、ページ上のポートレットの1つに次のエラーが表示されます。
Unable to get portlet response (Internal Error) for portlet binding portlet_name_1
ログ・ファイルをチェックすると、このエラーに次の原因が示されています。
oracle.adf.extapp.exception.ExtAppNotFoundException: The external application with ID /oracle/adf/externalApps/extApp243128437261430784.xml cannot be found.
問題
外部アプリケーションは、偶然または意図的に削除されましたが、アプリケーションが関連付けられたプロデューサは登録が解除されていません。
解決方法
外部アプリケーションが偶然に削除された場合は、関連の外部アプリケーションを再び作成し、プロデューサを関連付けます。
外部アプリケーションを意図的に削除した場合は、アプリケーションを関連付けたプロデューサを確実に登録解除するようにします。実行する手順は、4.3.1.6項「ポートレット・プロデューサの登録解除」を参照してください。
同じセッション内で異なるURLから1つのポートレット・ページにアクセスすると、OC4Jではそのセッションが失われ、その結果、その後ポートレットにアクセスするとエラーが発生します。
問題
異なるURLから1つのページにアクセスすると、ポートレットが利用できないというエラーが発生します。たとえば、まず完全修飾URL(http://
hostname
.
domain
:
port
など)を介してポートレット・ページにアクセスするとします。その後、同じセッション中に、ドメインまたはポートを省略したショートカットURLを使用します。この2回目のアクセスで、セッションが失われているため、ポートレットが利用できないというエラーが発生します。
解決方法
ポートレット・ページにいつも同じURLを指定するようにします。URLを常に完全修飾するか、常にショートカット(ドメインおよびポートを省略)にする必要があります。様々なURLの書式を組み合せることはできません。
この項では、JPS(JSR 168)ポートレットで発生する代表的な問題と解決方法について説明します。
使用側のWebCenterアプリケーションで、SAMLトークンを使用して、プロデューサに対してWS-Securityによるセキュリティをアサートしようとすると、2台のコンピュータのシステム・クロックが同期していないために、アサーションの検証に失敗します。
問題
プロデューサを実行しているコンピュータのシステム・クロックが、そのプロデューサを使用する側のWebCenterアプリケーションを実行するコンピュータ上のシステム・クロックより進んでいます。この状況では、次のような結果になります。
「ポートレットがありません」
メッセージがポートレット・マークアップに表示されます。
次のエラー・メッセージがJ2EEログ(log.xml
)に表示されます。
<MSG_TEXT>Assertion NOT_BEFORE_CONDITION invalid : Mon Nov 06 13:15:04 PST 2006arrival time : Mon Nov 06 13:14:59 PST 2006</MSG_TEXT>
SAMLToken
はメッセージが生成された時間を示し、その時間より前のアサーションは有効でないため、検証は失敗します。
解決方法
クロックを必ず同期させるか、プロデューサのクロックをコンシューマのWebCenterアプリケーションのクロックより遅らせます。システム・クロックのチェックおよび設定の最善の方法を判断するには、ご使用のオペレーティング・システムのドキュメントを参照してください。プロデューサとコンシューマがどちらも同じOracle Application Serverインスタンスにデプロイされている場合、同じクロックを使用するため、この問題は発生しません。
プロデューサをWS-Securityに無事に登録しましたが、プロデューサのポートレットが実行時にページ上で使用不可として表示されます。
問題1
ポートレットの登録時に、WSRPプロデューサの登録ウィザードで、不注意に(「発行者」などに)間違った値を入力した可能性があります。ウィザードでは実際にはセキュリティ情報の検証ができないため、登録は無事に完了できますが、一部の間違ったセキュリティの値が原因で、実行時にポートレットにアクセスできません。
解決方法1
ポートレットの登録を解除し、正しい値を指定したことを確認して(特に、「発行者」など)登録しなおします。
問題2
キーストア・パスが絶対パスを使用するように正しく構成されていないか、Oracle Containers for J2EE(OC4J)インスタンスが構成後に再起動されませんでした。ログ・ファイル(通常、ORACLE_HOME
/j2ee/OC4J_WebCenter/log/OC4J_WebCenter_default_group_1/oc4j
にある)に、次のようなWARNINGレベルのログ・メッセージが含まれています。
<MSG_TEXT> Couldn't resolve kestore path : /ASINSTALL10132/j2ee/OC4J_WebCenter/META-INF/portal.jks </MSG_TEXT> <MSG_TEXT> Invalid keystore path META-INF/portal.jks </MSG_TEXT>
解決方法2
10.10.3項「コンシューマの構成」の「キーストア・パスの更新」の手順を実行します。
JPSポートレット・プロデューサEARファイルのWSRPプロデューサEARファイルへの変換が失敗します。
問題
JPSポートレット・プロデューサEARファイルをWSRPプロデューサEARファイルに変換しようとすると、次の例外が発生します。
Exception in thread "main" oracle.portlet.server.containerimpl.deploy.PortletDeployException: A network error occurred during XML transformation. Check your network, firewall and proxy settings.
解決方法
サーブレット・バージョン2.3で開発されたJPS準拠ポートレットの場合、次の形式のコマンドを使用してWebプロキシを指定する必要があります。
java -Dhttp.proxyHost=proxy_host -Dhttp.proxyPort=proxy_port -jar wsrp-predeploy.jar source_ear_file targeted_ear_file
プロデューサのプリファレンス・ストア・パスが、OC4Jインスタンス内の他のプロデューサと異なるため、ポートレットがPortlet unavailable
エラーをスローします。
問題
同じOC4Jインスタンス内の他のプロデューサのポートレットが使用可能でも、特定のプロデューサのJPSポートレットが使用できません。
解決方法
web.xml
内のプリファレンス・ストア・パスoracle/portal/wsrp/server/fileStoreRoot
は、同じOC4Jインスタンスにデプロイされたすべてのプロデューサで同じにする必要があります。プリファレンス・ストアの場所を明示的に指定せずに、単にデフォルトのままにした場合、すべてのプロデューサがデフォルトの場所としてportletdata
を使用します。OC4Jインスタンスのすべてのプロデューサに1つのパスを明示的に指定する場合、同じインスタンス内の他のすべてのプロデューサが同じパスを使用することを確認する必要があります。そうしないと、一部のポートレットが使用できなくなります。
JDeveloperを使用して作成されたJPSポートレットがPlutoで機能しません。
問題
PlutoにJPSポートレットをデプロイしようとすると、ポートレットによってエラーがスローされます。
解決方法
JPSポートレットをPlutoで機能させるには、ウィザードで次の手順を実行します。
ポートレット・モードのJSPがWEB-INF
フォルダに作成されるように変更する必要があります。
新たに作成されるweb.xmlで、<web-app>
ルートのversion="2.4"
以外のすべての属性を削除します。これが適用されるのは、JSR 168ポートレットを作成するときにServlet 2.4\JSP 2.0(J2EE 1.4)
のWebアプリケーション・バージョンを選択した場合のみです。
この項では、PDK-Javaポートレットで発生する代表的な問題と解決方法について説明します。
ポートレットにアクセスしたときに、次のメッセージが表示されました。
##REDIRECT##<URL>
問題
特定のポートレット・モードに切り替わった途端に、ポートレットがあるURLにリダイレクト・コールを発行したものと思われます。ポートレットでは、ポートレット内でのユーザー・アクション(フォーム・ポストなど)の結果としての場合を除き、リダイレクトを発行できません。
解決方法
この動作を回避するために、ポートレットをリライトします。
フル・ページ・ポートレット・モード(編集モードなど)に切り替えると、イメージが破損するかなくなります。
問題1
プロデューサをWebCenter Suite OC4Jインスタンス上で実行中に、ポートレットはOracle ADFページ上で実行されています。イメージのページ・マークアップに相対URL(/images/
image_name
など)が含まれている場合は、イメージがADFPサーブレット上にないことが、最も可能性の高い原因です。
マークアップにイメージへのフルURLが含まれている場合は、プロデューサがリソース・プロキシを使用するように構成されていないことが、最も可能性の高い原因です。この場合、URLは、ADFPサーブレットを介してではなく、プロデューサを直接参照しますが、ユーザーはプロデューサに直接アクセスできません。リソース・プロキシを使用すると、イメージURLはリソース・プロキシ・サーブレットを指します。
解決方法1
次のアクションを実行します。
プロデューサ・アプリケーションのweb.xml
にリソース・サーブレット構成詳細が含まれていることを確認し、それらを追加する必要がある場合は、プロデューサをバウンスします。これで、各イメージ・タグのsrc
属性にフルURLが表示されるはずです。A.1.1.9.2項「OracleAS PortalからのPDK-Javaプロデューサの再デプロイ」を参照してください。
Oracle Technology Networkからイメージzipファイルを取得し、ADFPサーブレット内で解凍します。
問題2
プロデューサをWebCenter Suite OC4Jインスタンス上で実行中に、ポートレットはOracle Application Server Portal(OracleAS Portal)ページ上で実行されています。この場合、リソース・プロキシが正しく構成されていないことが、最も可能性の高い問題です。
解決方法2
プロデューサ・アプリケーションのweb.xml
にリソース・サーブレット構成詳細が含まれていることを確認し、それらを追加する必要がある場合は、プロデューサをバウンスします。これで、各イメージ・タグのsrc
属性にフルURLが表示されるはずです。A.1.1.9.1項「OracleAS Portalからのポートレットの使用」を参照してください。
問題
いずれかのポートレット・モードのリソースがJSPで、そのファイル名に非ASCII文字が含まれている場合、PDK-Javaポートレットは機能しません。
解決方法
JSPポートレット・モード・リソースの名前をASCII文字のみ使用するように変更します。
PDK-Javaプロデューサは、サービスIDにマルチバイト文字を使用できません。
問題
登録は失敗し、プロデューサ・テスト・ページからエラーが返されます。
oracle.webdb.provider.v2.utils.soap.SOAPException: Can't read deployment properties for service: ??????
解決方法
プロデューサを構築しなおし、マルチバイト文字のないサービスIDを指定します。
問題
相対URLでアクセスされるイメージが、OracleAS Portal環境にあったため、Oracle WebCenter Framework環境では見つけられません。
解決方法
この問題は次の2つの方法のいずれかで解決できます。
Oracle WebCenter Frameworkサーブレットにイメージを追加し、イメージ・マークアップ内の相対URLがそれらを指すようにします。
UrlUtils.constructResourceURL
を使用して、リソースのプロキシ(リソース・プロキシがプロデューサに設定されている場合)を参照するか、またはWebプロデューサ上のイメージ・リソースを直接参照する絶対リンクを生成し、レンダリングします。Webプロデューサ・リソース・プロキシの詳細は、18.1.2.4項「内部/リソース・リンク」を参照してください。
この項では、後からポートレットとして公開できるOracle ADFページのコーディング中、またはOracle ADF Facesアプリケーションから構築したポートレットの実行中に、発生する可能性のある代表的な問題と解決方法について説明します。
Oracle ADFページをポートレット化しようとすると、エラーが発生し、先に進めなくなります。
問題
アプリケーションが、JSFを使用するWebアプリケーション・テンプレートを使用して構築されませんでした。
解決方法
必ずJSFを使用するWebアプリケーション・テンプレートの1つを使用して、アプリケーションを構築します。
ポートレットを実行すると、イメージとリソースを見つけることができずにエラーが発生します。
問題
これらのファイルのパスが、Webアプリケーション・コンテキスト・ルートを基準として指定されていません。
解決方法
web-app-context-root
を基準として、イメージとリソースの場所を指定します。相対パスの表記(../)を使用しないでください。
ポートレットの実行中に、ページから離れ、再び戻った場合、ポートレットの状態が失われていることがあります。つまり、以前に設定したプライベート・ポートレット・パラメータの設定が失われているのです。
問題
Oracle ADF Facesアプリケーションの場合、状態はサーバー側に保存する必要があります。デフォルトでは、Oracle ADF Facesはクライアント側で管理されます。
解決方法
web.xml
で次のように定義することにより、サーバー側の状態管理を使用するように、アプリケーションを明示的に構成する必要があります。
<context-param> <param-name>javax.faces.state_saving_method</param-name> <param-value>server</param-value> </context-param>
プロデューサのWeb Services Description Language(WSDL)URLを開発環境でテスト中に、エラーが発生します。
問題
OC4Jインスタンスはバウンスされませんでした。
解決方法
ブラウザでWSDL URLをテストする前にOC4Jを再起動します。
WSRPポートレットがOracle Application Server内のOC4Jインスタンスにデプロイされ、ブラウザでテストされるときに、404エラーが発生します。
問題
WSRPポートレットが、Oracle Application Server内のWSRPコンテナのないOC4Jのホーム・インスタンスにデプロイされました。
解決方法
WSRPポートレットを、ホーム・インスタンスのかわりに、Oracle Application ServerのOC4J_Portalインスタンスにデプロイします。
ポートレットから別のページにナビゲートできません。
問題
別のページへのナビゲートにresponse.sendRedirect("")
を使用した可能性があります。
解決方法
ポートレット環境で正常に作業を行うには、faces-config.xml
でナビゲーション・ルールを持つナビゲーションを実装する必要があります。
ページにJSFポートレットをレンダリングしようとするときに、問題が発生する可能性があります。
問題
ページ定義pageDef.xml
では、doExecuteWithParams
実行可能ファイルのRefresh
属性が、prepareModel
ではなくrenderModel
に設定されている必要があります。
解決方法
Refresh
属性を、次の例に示すようにrenderModel
に設定します。
<invokeAction id="doExecuteWithParams" Binds="ExecuteWithParams"
Refresh="renderModel" RefreshCondition="${param.id != null}"/>
ポートレット・デプロイメント・ディスクリプタportlet.xml
を更新し、アプリケーションをデプロイしようとすると、欠落クラス・エラーが発生します。
問題
正しいクラスがportlet.xml
に定義されていません。portlet.xml
ファイルは、web.xml
ファイルで指定されたフィルタと一致するように構成されていない可能性があります。
解決方法
portlet.xml
ファイルでBridgeLifecycleListeners
属性を使用して、次のようにクラスを指定します。
<init-param> <name>BridgeLifecycleListeners</name> <value>listener_class_n[,listener_class_n+1,...]</value> </init-param>
たとえば、アプリケーションで、そのweb.xml
に次のコードが含まれるとします。
<filter> <filter-name>adfFaces</filter-name> <filter-class>oracle.adf.view.faces.webapp.AdfFacesFilter</filter-class> </filter>
次のクラスをportlet.xml
に含める必要があります。
<init-param> <name>BridgeLifecycleListeners</name> <value>oracle.portlet.server.bridges.jsf.adf.ADFFacesBridgeLifecycleListener </value> </init-param>
同様に、ADFBindingFilter
が、web.xml
で次のように定義されているとします。
<filter> <filter-name>adfBindings</filter-name> <filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class> </filter>
次のクラスをportlet.xml
に含める必要があります。
<init-param> <name>BridgeLifecycleListeners</name> <value>oracle.portlet.server.bridges.jsf.adf. BindingFacesBridgeLifecycleListener</value> </init-param>
JSFアプリケーションを、JSFポートレット・ブリッジを使用してポートレットに変え、ポートレットをパッケージ化、デプロイおよび使用すると、ポートレットに次のエラー・メッセージが表示されます。
Portlet Unavailable
問題
アプリケーションではOracle ADFバインディングを使用していませんが、portlet.xml
にBindingFacesBridgeLifecycleListener
が含まれています。portlet.xml
に次のようなものが含まれている可能性があります。
<init-param> <name>BridgeLifecycleListeners</name> <value> oracle.portlet.server.bridges.jsf.adf.ADFFacesBridgeLifecycleListener, oracle.portlet.server.bridges.jsf.adf.BindingFacesBridgeLifecycleListener </value> </init-param>
解決方法
portlet.xml
がBindingFacesBridgeLifecycleListener
を参照しないようにします。次のようになります。
<init-param> <name>BridgeLifecycleListeners</name> <value> oracle.portlet.server.bridges.jsf.adf.ADFFacesBridgeLifecycleListener </value> </init-param>
この場合、BindingFacesBridgeLifecycleListener
が省略されていることがわかります。
この項では、OmniPortletの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。
実行時に「定義」リンクを使用して、OmniPortletを定義できません。
問題
OmniPortletでは、true
のRenderPortletInIFrame
値のみをサポートします。つまり、OmniPortletは、IFrame内でレンダリングする必要があるため、OmniPortletプロパティのRenderPortletInIFrame
はtrue
に設定します。「プロパティ・インスペクタ」で、RenderPortletInIFrame
プロパティは、「表示オプション」の下にあります。
現在、RenderPortletInIFrame
プロパティの値はfalse
で、その結果、実行時に「定義」リンクをクリックすると、「タイプ」タブが表示されないため、OmniPortletの定義を進めることができません。
解決方法
OmniPortletを定義するために、「処理」リストから「カスタマイズ」を選択するか、Oracle JDeveloperの「構造」ペインでOmniPortletを選択して、RenderPortletInIFrame
をtrue
に設定します。
この項では、WebCenterアプリケーションまたはそのコンポーネントをデプロイまたは事前デプロイするときに発生する可能性のある代表的な問題と解決方法について説明します。
デプロイ前ツールは、一時ファイルを作成するための一時ディレクトリをロック解除できないため、一時ファイルの作成に失敗します。
問題
デプロイ前ツールを異常終了する(たとえば、[Ctl]を押しながら[C]を押す)と、一部の一時ファイルがロックされ、MS Windows上で、このロックが起動中のcmd
プロセスに送信される可能性があります。したがって、一時ファイルに対するロックは解除されておらず、デプロイ前ツールを再び実行しようとすると、ロックのために、操作に必要な一時ファイルを作成できません。次のエラーが発生します。
Unable to create temporary work area
解決方法
Windowsのタスク マネージャを起動して、起動中のcmd
プロセスを見つけ、終了します。
Oracle JDeveloperでアプリケーションをEARファイルにデプロイすると、デプロイメント・コンソールに次のようなエラーが表示されます。
Error during export
問題
アプリケーション・ポートレット・プロデューサの1つが使用できない可能性があります。
解決方法
プロデューサが停止している場合は、再起動する必要があります。プロデューサが起動しても、まだこのエラーが出る場合は、Oracleサポート・サービスに連絡し、Oracle JDeveloperログ・ウィンドウからの例外スタックを伝えてください。
要求されたすべての設定を指定した後、デプロイ前ツールが次のエラーのため機能しなくなります。
Unable to find MDS Repository for Portlet Producers
問題
WebCenterアプリケーションWARデプロイメント・プロファイルで、汎用EARファイルを作成しなかった可能性があります。不注意にWARファイル・デプロイメント・プロファイルを使用したものと思われます。
解決方法
必ず「WebCenterアプリケーションWAR」を選択して、デプロイメント・プロファイルを作成しなおします。修正したデプロイメント・プロファイルを使用して、汎用EARファイルを再生成します。
要求されたすべての設定を指定した後、デプロイ前ツールが次のいずれかのエラーのため機能しなくなります。
Unexpected PortletException Error during import
問題
ターゲット・プロデューサが停止している可能性があります。
解決方法
ターゲット・プロデューサをチェックし、プロデューサが起動され、稼働中であることを確認します。停止している場合は、再起動します。
アプリケーションはOracle JDeveloperの埋込みOC4Jでは問題なく実行されますが、Oracle JDeveloper外のOC4Jインスタンスにデプロイすると、ページ上のポートレットはすべてエラーを表示します。
No object with ID /oracle/adf/portlet/...
問題
ポートレットのメタデータが格納されているOracle Metadata Services(MDS)ディレクトリが見つかりません。
解決方法
Oracle JDeveloperでアプリケーションの汎用デプロイメント・ディスクリプタを作成する際、必ずディスクリプタをターゲット・プラットフォーム(たとえば、OC4J)に関連付けてください。
ページを実行しようとすると、ブラウザに次のいずれかのエラーが表示されます。
Servlet error: An exception occurred. The current application deployment descriptors do not allow ... MDSRuntimeException: No metadata found for metadata object .../*.jspx
問題
これらのエラーは、多数の問題が原因で起こる可能性があります。
Oracle ADF Facesページと自分のURLがフェース・サーブレットを起動しない。
adf-config.xml
に無効なメタデータ・パスの指定が含まれている。
web.xml
に、無効なoracle.mds.web-app-root
指定が含まれている。
指定した場所に表示文書が存在しない。
アプリケーションにorion-application.xml
が含まれていない。
解決方法
次のことをすべてチェックします。
URLがフェース・サーブレットを参照することを確認します。通常、このURLは次のようになっているはずです。
<protocol>://<host>:<port>/<context root>/faces/<jspx document path>
MDSディレクトリで、表示文書の場所は次のとおりです。
metadata-path_in_adf-config.xml/oracle.mds.web-app-root_in_web.xml/ view_document_path_after_/faces_in_the_URL
adf-config.xml
およびweb.xml
内の設定が有効なパスを指し、指定したパスに文書が存在することを確認します。
注意: Oracle JDeveloperから実行するとき、adf-config のmetadata-path エントリが相対パスの場合があります。その場合、adf-config.xml の場所が基準となります。 |
OC4Jの場合、アプリケーションにはorion-application.xml
が必要です。このファイルがなければ、adf-config.xml
は見つかりません。デプロイされたアプリケーションのMETA-INFディレクトリにorion-application.xml
が見つからない場合、Oracle JDeveloper内のアプリケーション・デプロイメント・ディスクリプタが、プラットフォーム設定でOC4J/Oracle Application Server接続に関連付けられていることを確認します。
MDSパスに西欧の文字(母音字上のウムラウトなど)が含まれる場合、デプロイ前ツールで生成されるパスが文字化けします。
問題
事前デプロイ後、adf-config.xml
のMDSパスは文字化けし、使用できません。この破損したパスは、アプリケーションをデプロイしようとするとエラーを引き起こします。
解決方法
コマンド・プロンプトで、chcp
を実行することで、コード・ページの値をチェックします。返された値が、その言語のDOSコード・ページ(たとえば、850)の場合、これをWidowsコード・ページ(たとえば、1252)に変更する必要があります。コード・ページを変更するには、コマンド・プロンプトでchcp
code_page_number
を実行します。次に例を示します。
chcp 1252
Oracle WebCenter Frameworkでは、受信するリクエストに関する情報をログ・ファイルに記録できます。この項では、ランタイムおよびデザインタイムの問題を診断する手順を提供します。内容は、次のとおりです。
Oracle WebCenter Frameworkロギングは、JDKロギング・フレームワークに基づいています。これにはJDKロギングApplication Programming Interface(API)が含まれます。JDKロギングには、JDK1.4以来Javaプラットフォームで使用可能な標準API、java.util.logging.Logger
が使用されています。基本のJDKロギングを強化するために、Oracle Diagnostic Logging(ODL)フレームワークでは、eXtensible Markup Language(XML)ファイルによる拡張Oracle固有メッセージの書式設定および構成をサポートしています。JDKロギング単独で、ODLの機能強化なしで使用することも、または診断メッセージの記録にJDK APIを使用し、強化された出力の書式設定および構成を、XMLファイルを介して提供するためにODLを使用することもできます。両方の方法について、この後の項で説明します。
ロギングを構成する前に、次のことを知っておく必要があります。
同じロギング・フレームワークがデザインタイムとランタイムのどちらにも使用されるため、構成における唯一の違いは、デザインタイム(Oracle JDeveloper)には、必ずjdev.conf
が正しいロギング構成ファイルを指すようにする必要があることです。このステップは、次の手順で必要に応じてコールアウトされます。
ロギングは次のいずれかの方法で構成できます。最初の方法は、強化されたODL出力を提供します。2番目の方法は、標準のJDKロギング出力のみが提供されます。ただし、いかなる場合でも、基本メッセージの本体は同じ情報を提供します。
ログ出力は、WebCenterアプリケーションの特定のコンポーネントまたは領域の診断メッセージを提供します。表G-1は、使用可能なログ出力と、それらの追跡対象を示しています。ログ出力は、標準の階層ネーミング・スキームに準拠しています。したがって、親ログ出力(oracle.portlet
など)を指定して、すべての子(oracle.portlet.binding
やoracle.portlet.client
)に対するロギングをオンにできます。
表G-1 Oracle WebCenter Frameworkで使用可能なログ出力
ログ出力名 | 説明 |
---|---|
oracle.portlet |
ポートレット・バインディングとポートレット・ランタイムの両方のロギングを提供します。 |
oracle.portlet.binding |
ポートレット・バインディングのロギングを提供します。 |
oracle.portlet.client |
ポートレット・ランタイムのロギングを提供します。 |
oracle.portlet.management.mbean |
ポートレットMBeanのロギングを提供します。 |
oracle.portal |
ポータル・サーバー・コンポーネント(WSRP、PDK-Java、Omniportlet、Webクリッピングなど)のロギングを提供します。 |
oracle.vcr |
すべてのJavaコンテンツ・リポジトリ(JCR)関連機能のロギングを提供します。 |
oracle.vcr.datacontrol |
JCRデータ・コントロールのロギングを提供します。 |
oracle.vcr.jam |
JCRアダプタ・マネージャのロギングを提供します。 |
oracle.vcr.share |
JCRランタイム共有パッケージのロギングを提供します。 |
oracle.vcr.dav |
JCRゲット・ハンドラのロギングを提供します。 |
oracle.vcr.adapter |
JCRアダプタのロギングを提供します。 |
oracle.adfdtinternal.config |
Oracle JDeveloperでWebCenterアプリケーションのアプリケーション・ワークスペース構成のロギングを提供します。 |
oracle.adfdtinternal.model.portlet |
ポートレットのデザインタイム拡張のロギングを提供します。 |
oracle.adfinternal.model.portlet |
ポートレットのデザインタイム・モデルのロギングを提供します。 |
oracle.adfinternal.view.faces.renderkit.html.customizable |
カスタマイズ可能なコンポーネントのロギングを提供します。 |
oracle.adfinternal.view.faces.ui.action |
カスタマイズ可能なコンポーネントのロギングを提供します。 |
oracle.adf.share.security logger |
Oracle ADFセキュリティのロギングを提供します。 |
oracle.adf.extapp |
外部アプリケーションおよび資格証明マッピング・サービスのロギングを提供します。 |
oracle.adf.richtextportlet |
リッチ・テキスト・ポートレットのロギングを提供します。 |
ロギングのレベルを指定することにより、記録するログ情報の量を選択できます。表G-2には、デフォルトのJavaログ・レベルおよびODLログ・レベルが示されています。JDKおよびODLの両方のロギング構成ファイルで、JDKロギング・レベルを使用できます。ODLレベルは、ODLロギング構成ファイルでのみ使用できます。
表G-2 ロギング有効範囲
JDKロギング・レベル | ODLロギング・レベル | 説明 |
---|---|---|
SEVERE+100脚注1 (コードでの指定のみ) |
INTERNAL_ERROR |
予期しないエラーまたは例外を記録します。これらのエラーは通常コード中の不具合を意味し、顧客はサポートに連絡して問題を報告する必要があります。 |
SEVERE |
ERROR:1 |
システム管理者の注意が必要なシステム・エラーを記録します。 |
WARNING |
WARNING:1 |
検出されたアクションまたは状態で、綿密に調べる必要があり、場合によってはエラーが発生する前に処置が必要になるものを記録します。 |
INFO |
NOTIFICATION:1 |
デフォルトのロギング・レベル。 正常なアクションまたはイベントを記録します。これは、ユーザー操作(ログイン完了など)、または自動操作(ログ・ファイルの回転など)です。 |
CONFIG |
NOTIFICATION:16 |
構成関連のメッセージまたは問題を記録します。 |
FINE |
TRACE:1 |
デバッグまたはパフォーマンス監視に使用されるトレース・メッセージまたはデバッグ・メッセージを記録します。通常は、詳細なイベント・データが含まれます。 |
FINER |
TRACE:16 |
かなり詳細なトレース・メッセージまたはデバッグ・メッセージを記録します。 |
FINEST |
TRACE:32 |
きわめて詳細なトレース・メッセージまたはデバッグ・メッセージを記録します。 |
脚注1 SEVERE+100は、コード内でのみ使用できます。構成ファイルでは使用できません。
JDKロギング・レベルの詳細は、次のURLを参照してください。
http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/Level.html
OLD機能を利用するロギングを構成するには、ORACLE_HOME/j2ee/
oc4j_instance
/config
ディレクトリにインストールされているj2ee-logging.xml
ファイルを使用します。
ODLフレームワークには、Oracleログ分析ツールとログ・データを自動的に統合するために、標準Javaフレームワークを補完するプラグイン・コンポーネントが用意されています。ODLフレームワークでは、ログ・ファイルはプレーン・テキストまたはXMLに書式設定され、他のOracle Application Serverやカスタム開発コンポーネントでの分析や再利用が容易になります。
oracle.core.ojdl.logging
パッケージには、ハンドラ・クラスODLHandler
が含まれており、XMLベースのODL形式またはプレーン・テキストのいずれかでログ出力を生成します。Javaログ出力でODL形式によるログ・メッセージを出力できるようにするには、各ログ出力をODLHandler
にマップする必要があります。このマッピングは、j2ee-logging.xml
を介して管理します。ODLフレームワークを使用するためのJavaログ出力構成の詳細は、『Oracle Containers for J2EE開発者ガイド』を参照してください。j2ee-logging.xml
の一般情報は、『Oracle Application Development Framework開発者ガイド』を参照してください。
j2ee-logging.xml
ファイルを使用してロギング情報を構成し、ログ・メッセージをODL形式で出力する手順は、次のとおりです。
ORACLE_HOME
/j2ee/home/config
ディレクトリにナビゲートし、エディタでj2ee-logging.xml
ファイルを開きます。コンポーネントがホーム・インスタンス以外のインスタンスにデプロイされる場合、それに応じてhome
をそのパスに置き換える必要があります。たとえば、OC4J_WebCenter
というOC4Jインスタンスのパスは、ORACLE_HOME
/j2ee/OC4J_WebCenter/config
となります。
ログ出力をXMLまたはプレーン・テキストのいずれの形式にするかを選択します。デフォルトの形式はXMLです。
注意: j2ee-logging.xml では、その他のログ・プロパティ(ログ・ファイルの場所など)も変更できます。次に例を示します。
<property name='path' value='C:/TEMP/log/'/> |
例G-1は、サンプルj2ee-logging.xml
のXML出力のロギングを構成する部分です。
例G-1 XMLロギング出力のためのj2ee-logging.xml
<logging_configuration> <log_handlers> ... <log_handler name='ptlLoggingHandler' class='oracle.core.ojdl.logging.ODLHandlerFactory'> <property name='path' value='C:/TEMP/log/'/> <property name='maxFileSize' value='104857600'/> <property name='maxLogSize' value='1048576000'/> </log_handler> </log_handlers> <loggers> ... <logger name='oracle.adfinternal.model.portlet' level='FINER' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> <logger name='oracle.adfdtinternal.model.portlet' level='FINER' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> <logger name='oracle.portlet.client' level='FINE' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> </loggers> </logging_configuration>
例G-2は、サンプルj2ee-logging.xml
のプレーン・テキスト出力のロギングを構成する部分です。太文字の行に注意してください。最初の太文字の2行で、プレーン・テキスト出力のログを構成します。2番目の太文字の2行は、プレーン・テキスト形式で出力を表示する場合によくあるクラッタを削減します。
例G-2 プレーン・テキスト出力のためのj2ee-logging.xml
<logging_configuration> <log_handlers> ... <log_handler name='ptlLoggingHandler' class='oracle.core.ojdl.logging.ODLHandlerFactory'> <property name='path' value='C:/TEMP/log/diag.log'/> <property name='maxFileSize' value='104857600'/> <property name='maxLogSize' value='1048576000'/> <property name='format' value='ODL-Text'/> <property name='useSourceClassAndMethod' value='true'/> <property name='useDefaultAttributes' value='false'/> </log_handler> </log_handlers> <loggers> ... <logger name='oracle.adfinternal.model.portlet' level='FINER' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> <logger name='oracle.adfdtinternal.model.portlet' level='FINER' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> <logger name='oracle.portlet.client' level='FINE' useParentHandlers='false'> <handler name='ptlLoggingHandler'/> </logger> </loggers> </logging_configuration>
j2ee-logging.xml
ファイルを保存します。
デザインタイム環境で、JDEV_HOME/jdev/bin/jdev.conf
を次のように更新することで、ログ出力の設定用にj2ee-logging.xml
を指定する必要があります。
# Add OJDL jars in the classpath
AddJavaLibFile ../../BC4J/lib/adfshare.jar
AddJavaLibFile ../../diagnostics/lib/ojdl.jar
# Add logger configuration for diagnostics logging
AddVMOption
-Djava.util.logging.config.class=oracle.core.ojdl.logging.LoggingConfiguration
AddVMOption -Doracle.core.ojdl.logging.config.file=
JDEV_HOME/j2ee/home/config/j2ee-logging.xml
Oracle Application Serverを再起動します。
ログ・ファイルは、j2ee-logging.xml
ファイルで指定した場所、つまりC:/TEMP/log/diag.log
に生成されます。ログ・ファイルは、Oracle Enterprise Manager 10gでも表示できます。
注意: デザインタイム環境で、デフォルトのj2ee-logging.xml ファイルを使用するかわりに、カスタム・プロパティ・ファイルを作成し、そのファイルをロギング構成の指定に使用できます。ただし、カスタム・プロパティ・ファイルを使用する場合、新しいプロパティ・ファイルを指すように< JDEV_HOME >/jdev/bin/jdev.conf ファイルを編集する必要があります。 |
標準JDKロギングを構成するには、デフォルトのロギング・プロパティ・ファイルjdk/jre/lib/logging.properties
を使用し、次の手順を実行します。
jdk/jre/lib
ディレクトリにナビゲートし、エディタでlogging.properties
を開きます。
Global properties
セクションで、使用するログ・ハンドラ・クラスを指定します。これにより、ログ情報をコンソールに出力するか、ログ・ファイルに記録するかが決まります。デフォルトでは、コンソール出力が構成されており、エントリは次のように表示されます。
handlers= java.util.logging.ConsoleHandler
ファイル出力も有効にするには、FileHandler
エントリを次のように非コメント化します。
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
Global properties
セクションでlevel
を設定して、グローバル・ロギング・レベルを指定します。この指定により、記録する必要のあるイベントのタイプを制御します。デフォルトのグローバル・ロギング・レベルはINFO
です。サポートされているログ・レベルについては、G.2.2.2項「ロギング・レベル」で説明しています。
Handler specific properties
セクションで、次の値を指定します。
java.util.logging.FileHandler.pattern
: ログ・ファイルの名前および場所を指定します。
注意: デザインタイムに、FileHandler パターンをportlet.log と指定した場合、ログ・ファイルは< JDev_install >/jdev/bin ディレクトリに生成されます。
UNIXおよびWindowsの各プラットフォームに使用される
|
java.util.logging.ConsoleHandler.level
: コンソールに出力されるメッセージを制限するロギング・レベルを指定します。
Facility specific properties
セクションで、各ログ出力に、次の例に示すように追加のコントロールを指定できます。
oracle.adfinternal.model.portlet.level = FINER oracle.adfdtinternal.model.portlet.level = FINER oracle.portlet.client.level = FINE oracle.vcr.datacontrol.level = FINE oracle.vcr.adapter.fs.level = FINE
logging.properties
ファイルを保存します。
例G-3は、logging.properties
ファイルでのサンプル構成を示しています。新しい設定は太字のテキストで示されています。
例G-3 logging.propertiesファイルのサンプル構成
# "handlers" specifies a comma separated list of log Handler # classes. These handlers will be installed during VM startup. # Note that these classes must be on the system classpath. # By default we only configure a ConsoleHandler, which will only # show messages at the INFO and above levels. handlers= java.util.logging.ConsoleHandler # To also add the FileHandler, use the following line instead. handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler # Default global logging level. .level= INFO ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ # default file output is in user's home directory. java.util.logging.FileHandler.pattern = %h/portlet%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter # Limit the message that are printed on the console to INFO and above. java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ oracle.adfinternal.model.portlet.level = FINER oracle.adfdtinternal.model.portlet.level = FINER oracle.portlet.client.level = FINE
デザインタイムで、デフォルトのlogging.properties
ファイルを使用するかわりに、カスタム・プロパティ・ファイルを作成し、そのファイルを使用して標準のJDKロギング構成を指定できます。ただし、カスタム・プロパティ・ファイルを使用する場合、新しいプロパティ・ファイルを指すようにJDEV_HOME/jdev/bin/jdev.conf
ファイルを編集し、次のエントリを更新する必要があります。
AddVMOption -Djava.util.logging.config.file=<path and name of the properties file>
たとえば、/tmp
ディレクトリの下でportlet-logging.properties
というカスタム・ファイルを作成できます。G.2.2.4項「デフォルトJDKロギング・プロパティ・ファイルによるロギングの構成」で説明しているように、デフォルトのlogging.properties
ファイルの内容を新しいファイルにコピーし、構成情報を更新します。この後、ログ出力設定用にportlet-logging.properties
を指すように、JDEV_HOME/jdev/bin/jdev.conf
ファイルを次のように更新する必要があります。
AddVMOption -Djava.util.logging.config.file=/tmp/portlet-logging.properties
ログ出力の設定は、作成したportlet-logging.properties
ファイルから取得されるようになります。
適切なエディタまたはビューアを使用すれば、構成ファイルで指定したどの場所からでもログ・ファイルを開けます。Oracle JDeveloperを使用している場合は、Oracle JDeveloperログ・ウィンドウで診断の出力を表示できます。Oracle JDeveloperログ・ファイルのデフォルトの場所は、JDEV_HOME/jdev/bin/portlet.log
です。
次のURLにあるOracle MetaLinkで、さらに多くの解決方法が見つかります。
問題の解決方法が見つからない場合は、サービス・リクエストを記録してください。
Oracleサポート・サービスに問い合せてください。
関連項目: Oracle Application Serverのリリース・ノート(Oracle Technology Network(OTN)のhttp://www.oracle.com/technology/documentation/index.html で入手可能) |