Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド 11g リリース2(11.1.2.4.0) B66719-05 |
|
![]() 前 |
![]() 次 |
この付録では、JSFおよびADF Facesの機能を各種XML構成ファイルで構成する方法、RequestContext
APIを使用してADF Faces構成値を取得する方法、およびJavaScriptのパーティション化の使用方法について説明します。
この章では、次の項目について説明します。
JSF Webアプリケーションには、特定の構成ファイルのセット(web.xml
およびfaces-config.xml
)が必要です。ADFアプリケーションでは、構成情報がadf-config.xml
ファイルおよびadf-settings.xml
ファイルにも格納されます。ADF FacesはMyFaces Trinidadと同じコード・ベースを共有するため、UIにADF Facesコンポーネントを使用するJSFアプリケーションでは、trinidad-config.xml
ファイル(オプションでtrinidad-skins.xml
ファイル)も含める必要があります。TrinidadとADF Facesとの関係の詳細は、第1章「ADF Facesの概要」を参照してください。
JSFアプリケーションの構成の一部は、Java EEアプリケーション・デプロイメント・ディスクリプタ(web.xml
)の内容で決まります。/WEB-INF
ディレクトリにあるweb.xml
ファイルでは、サーバーが認識する必要のあるアプリケーションに関するすべての情報(JDeveloperで自動的に割り当てられる、あるいはアプリケーションのデプロイ時にシステム管理者によって割り当てられるルート・コンテキスト・パス以外)を定義する必要があります。web.xml
ファイルでの典型的なランタイム設定には、初期化パラメータ、カスタム・タグ・ライブラリの場所およびセキュリティ設定があります。
ADF Facesを使用するすべてのアプリケーションに対する次の設定がweb.xml
ファイルで構成されます。
client
に設定されたjavax.faces.STATE_SAVING_METHOD
コンテキスト・パラメータ
MyFaces Trinidadフィルタおよびマッピング
MyFacesTrinidadリソース・サーブレットおよびマッピング
JSFサーブレットおよびマッピング
注意: ADF Facesコンポーネントをアプリケーションで最初に使用した際に、JDeveloperで、必要なADF Faces構成が |
必要な要素の詳細は、A.2.2項「web.xmlに必要な要素について」を参照してください。
web.xml
のADF Faces関連のオプションの構成要素の詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
ADF Faces以外のweb.xmlの構成の詳細は、『Oracle Fusion Middleware Developing Web Applications, Servlets, and JSPs for Oracle WebLogic Server』を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、デフォルト・サーブレットとマッピング要素を使用して、web.xml
の基礎ファイルが/WEB-INF
ディレクトリに作成されます。
プロジェクトでADF Facesコンポーネントを使用(ライブラリをインポートするだけでなく、コンポーネント・タグをページで使用)する場合、JDeveloperで、デフォルトJSF構成要素だけでなく、次のものもweb.xml
に自動的に追加されます。
MyFaces TrinidadフィルタおよびMyFaces Trinidadリソース・サーブレットに関連する構成要素
client
の値を持つjavax.faces.STATE_SAVING_METHOD
コンテキスト・パラメータ
アプリケーションでJSPフラグメントを使用するよう選択した場合、アプリケーションで.jsff
ファイルを認識および解釈するためのJSP構成要素が、JDeveloperで自動的に追加されます。
例A-1に、JSF、ADF Facesおよび.jsff
ファイルを使用する場合にJDeveloperで追加されるデフォルト要素を持つweb.xml
ファイルを示します。
JSFおよびADF Facesの処理に必要なweb.xml
構成要素の詳細は、A.2.2項「web.xmlに必要な要素について」を参照してください。
例A-1 生成されるweb.xmlファイル
<?xml version = '1.0' encoding = 'windows-1252'?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <description>Empty web.xml file for Web Application</description> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>35</session-timeout> </session-config> <mime-mapping> <extension>html</extension> <mime-type>text/html</mime-type> </mime-mapping> <mime-mapping> <extension>txt</extension> <mime-type>text/plain</mime-type> </mime-mapping> </web-app>
注意: データバインドされたWebページの作成にADFデータ・コントロールを使用する場合、アプリケーション・バインディング・コンテナのADFバインディング・フィルタとサーブレット・コンテキスト・パラメータが |
ADF Facesの構成オプションは、<context-param>
要素を使用してweb.xml
に設定されます。
web.xmlにADF Faces構成要素を追加する手順:
アプリケーション・ナビゲータで、「web.xml」をダブルクリックし、ファイルを開きます。
JDeveloperでは、web.xml
はデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。
概要エディタを使用してエントリを宣言的に追加または編集すると、JDeveloperでweb.xml
ファイルが自動的に更新されます。
web.xml
ファイルのXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。
XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに反映されます。
追加できるコンテキスト・パラメータの一覧は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
web.xml
に必要なJSFおよびADF Facesに関するアプリケーション全体の構成要素は次のとおりです。
コンテキスト・パラメータjavax.faces.STATE_SAVING_METHOD
: アプリケーションのビューの状態の格納場所を指定します。デフォルトでは、この値はclient
であり、アプリケーションのビュー状態がブラウザ・クライアントに格納されます。client
に設定した場合、ADF Facesでトークンベースのクライアント側の状態保存が自動的に使用されます。デフォルトの15を使用するかわりに、使用するトークンの数を指定できます。状態保存コンテキスト・パラメータの詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
MyFaces Trinidadフィルタおよびマッピング: 部分的にRequestContext
オブジェクトを構成することで、ADF Facesが適切に初期化されていることを保証するサーブレット・フィルタである、MyFaces Trinidadフィルタorg.apache.myfaces.trinidad.webapp.TrinidadFilter
をインストールします。TrinidadFilter
は、ファイル・アップロードも処理します。フィルタ・マッピングは、JSFサーブレットのシンボリック名をMyFaces Trinidadフィルタにマップします。フォワードおよびリクエスト・ディスパッチャは、MyFaces Trinidadフィルタに転送中のその他のフィルタに必要です。
ヒント: アプリケーションで複数のフィルタを使用する場合、フィルタを実行順に |
MyFaces Trinidadリソース・サーブレットおよびマッピング: リソース・ローダーに委任することでWebアプリケーション・リソース(イメージ、スタイルシート、JavaScriptライブラリ)を処理する、MyFaces Trinidadリソース・サーブレットorg.apache.myfaces.trinidad.webapp.ResourceServlet
をインストールします。サーブレット・マッピングは、MyFaces Trinidadリソース・サーブレットのシンボリック名をURLパターンにマップします。JDeveloperではデフォルトで、MyFaces Trinidad Coreには/adf/*
が、ADF Facesには/afr/*
が使用されます。
JSFサーブレットおよびマッピング(JSFページを作成する場合、またはADF Facesコンポーネントにテンプレートを使用する場合に追加): JSFサーブレットservlet javax.faces.webapp.FacesServlet
では、JSFを使用してユーザー・インタフェースを作成するWebアプリケーションのリクエスト処理ライフサイクルが管理されます。マッピングでは、JSFサーブレットのシンボリック名が、パス接頭辞または拡張子接尾辞パターンを使用するURLパターンにマップされます。
デフォルトでは、次のコードに示すように、パス接頭辞/faces/*
がJDeveloperで使用されます。
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping>
たとえば、Webページがindex.jspx
の場合、URL http://localhost:8080/MyDemo/faces/index.jspx
が送信されると、このURLによってJSFサーブレットがアクティブ化されます。JSFサーブレットでfaces
接頭辞が取り除かれ、/MyDemo/index.jspx
ファイルがロードされます。
ADF Facesの構成オプションは、<context-param>
要素を使用してweb.xml
に定義されます。次に例を示します。
<context-param> <param-name>oracle.adf.view.rich.LOGGER_LEVEL</param-name> <param-value>ALL</param-value> </context-param>
ADF Facesでは、次のコンテキスト・パラメータがサポートされています。
次の状態保存コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.CLIENT_STATE_METHOD
: クライアント側状態保存がjavax.faces.STATE_SAVING_METHOD
を使用して有効になっている場合、使用するクライアント側状態保存のタイプを指定します。CLIENT_STATE_METHOD
の値は次のとおりです。
token
: (デフォルト)ページの状態はセッションに格納しますが、トークンはクライアントに永続させます。HttpSession
オブジェクトに格納されている状態のブロックを識別するシンプル・トークンは、クライアントに格納されます。これにより、複数回表示される同一ページがADF Facesで明確になります。フェイルオーバーがサポートされます。
all
: すべての状態情報がクライアントの(場合によっては非常に大きい)非表示のフォーム・フィールドに格納されます。これは、HttpSession
を使用しない開発者にとって有用です。
パフォーマンスのヒント: すべての状態情報を格納するとサイズが大きくなる可能性があることから、クライアント側状態保存を |
org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS
: トークンベースのクライアント側の状態保存が有効化されている場合に、ユーザーごとに一度に保存できるトークンの数を指定します。デフォルトは15です。トークンがこの数を超えると、表示頻度の最も低いページの状態が失われるため、「戻る」ボタンを頻繁に使用するユーザーや、同時に複数のウィンドウを開いているユーザーが影響を受けます。フレームへの依存度が高いHTMLアプリケーションを作成する場合は、この値を増やすことができます。
org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE
: セッションで状態保存をグローバルに圧縮するかどうかを指定します。各ユーザー・セッションには、ライブ・メモリーを大量に消費する複数のpageState
オブジェクトが含まれていることがあり、その場合はパフォーマンスに影響があります。このオーバーヘッドは、セッション・レプリケーションの実行時に、クラスタリングではるかに大きな問題になる可能性があります。デフォルトはoff
です。
次のデバッグ・コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT
: ADF Facesでは、クライアントへ配信するJavaScriptの曖昧化がデフォルトで行われ、同時にコメントと空白が取り除かれます。これにより、ADF Faces JavaScriptのダウンロード・サイズが大幅に削減されますが、JavaScriptのデバッグが複雑にもなります。アプリケーションの開発時に曖昧化を無効にするには、true
に設定します。アプリケーションのデプロイ時には、false
に設定します。
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
: このパラメータは、デフォルトではfalse
に設定されます。true
に設定した場合、ADF FacesでJSPファイルとCSSファイルの更新日付が自動的に確認され、ファイルに変更があった場合、保存されている状態が破棄されます。
パフォーマンスのヒント:
|
oracle.adf.view.rich.LOGGER_LEVEL
: このパラメータでは、デフォルト・レンダー・キットがoracle.adf.rich
の場合、JavaScriptロギングを有効にします。デフォルトは、OFF
です。JavaScriptロギングを有効にする場合、SEVERE
、WARNING
、INFO
、CONFIG
、FINE
、FINER
、FINEST
、ALL
のいずれかのレベルを使用します。自動プロファイラ・インストルメンテーション・コードが有効(A.2.3.8項「プロファイリング」
のoracle.adf.view.rich.profiler.ENABLED
を参照)な場合、INFOに設定します。
パフォーマンスのヒント: JavaScriptロギングはパフォーマンスに影響します。実行環境では、この値は |
oracle.adf.view.rich.REQUEST_ID_TRACING
: このパラメータは、エンド・ユーザー・レポートをサーバー側のログの対応するエントリに関連付けることで、失敗した部分ページ・レンダリング(PPR)リクエストの診断に使用されます。これは、サーバー・ログの一意のECIF番号をPPR URLに追加することで実行されます。このパラメータは、デフォルトではoff
に設定されています。診断機能をアクティブ化するには、パラメータをPPR
に設定します。
次のファイル・アップロード・コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY
: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大メモリー容量を指定します。デフォルトは100KBです。
org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE
: アップロードしたファイルを格納する1つのリクエストで使用されるディスク領域の最大サイズを指定します。デフォルトは2000KBです。
org.apache.myfaces.trinidad.UPLOAD_TEMP_DIR
: ファイルのアップロード時に一時ファイルを格納するディレクトリを指定します。デフォルトは、ユーザーの一時ディレクトリです。
注意: ファイル・アップロードの初期化パラメータは、デフォルトの |
次の内容を指定できます。
org.apache.myfaces.trinidad.resource.DEBUG
: リソース・デバッグ・モードが有効かどうかを指定します。デフォルトは、false
です。リソース・デバッグ・モードを有効にする場合、true
に設定します。有効な場合、リソース(JavaScriptライブラリ、イメージ、CSSなど)がキャッシュ可能なことがブラウザで認識されるよう、ADF FacesによってHTTPレスポンス・ヘッダーが設定されます。
ヒント: リソース・デバッグ・モードを有効にした後、ブラウザのキャッシュをクリアして、ブラウザでリソースの最新バージョンがロードされるようにします。 |
パフォーマンスのヒント: 本番環境では、このパラメータは削除するか、 |
セッション変更永続性の有効化および使用の詳細は、第32章「JSFページでのユーザー・カスタマイズの許可」を参照してください。
Real User Experience Insight(RUEI)はWebベースのユーティリティで、ネットワークからリクエストされる、またはネットワークで生成される実際のユーザーのトラフィックに対してレポートを作成します。ネットワーク・インフラストラクチャの最も重要となるポイントで、ページやトランザクションのレスポンス時間を測定します。セッション診断情報を使用すれば、根本原因分析を実行できます。
RUEIでは、実際のユーザー体験に基づいてサーバーおよびネットワーク時間を表示し、キー・パフォーマンス・インディケータ(KPI)とサービス・レベル合意(SLA)を監視し、定義済のターゲットに違反するインシデントが発生した場合にアラート通知をトリガーすることが可能です。ページ・コンテンツ、サイト・エラー、およびトランザクションの機能要件に関するチェックを実施できます。この情報を使用することで、業務面、技術面から運用を検証できます。RUEIで認識されるすべての項目の可用性、スループットおよびトラフィックに関して、カスタム・アラートを設定することもできます。
web.xml
ファイルにパラメータを追加して、その値をtrue
に設定し、RUEIでoracle.adf.view.faces.context.ENABLE_ADF_EXECUTION_CONTEXT_PROVIDER
を有効にするかどうかを指定します。デフォルトでは、このパラメータは設定されていないかfalse
に設定されています。
RUEIの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のReal User Experience Insightに対するアプリケーションの有効化に関する項を参照してください。
oracle.adf.view.rich.ASSERT_ENABLED
パラメータを使用して、ADF Faces内でアサーションを使用するかどうかを指定できます。デフォルトは、false
です。アサーションを有効にするにはtrue
に設定します。
パフォーマンスのヒント: アサーションはパフォーマンスに影響します。実行時環境では、この値は |
次のJavaScriptプロファイリング・コンテキスト・パラメータを指定できます。
oracle.adf.view.rich.profiler.ENABLED
: JavaScript Profilerで用意されている自動プロファイラ・インストルメンテーション・コードを使用するかどうかを指定します。デフォルトは、false
です。JavaScriptプロファイルを有効にするにはtrue
に設定します。プロファイラが有効な場合、各ページでプロファイラ・データをフェッチするために追加のラウンドトリップが必要になります。デフォルトでは、/WEB-INF/profiler.xml
構成ファイルがJDeveloperで使用されます。profiler.xml
の場所をオーバーライドするには、次に説明するROOT_FILE
コンテキスト・パラメータを使用します。DEBUG_JAVASCRIPT
をtrue
に設定し、JavaScriptの曖昧化を無効にする場合もあります。LOGGER_LEVEL
を最低でもINFO
に設定する必要もあります。
oracle.adf.view.rich.profiler.ROOT_FILE
: 自動プロファイラ・インストルメンテーション・コードが有効の場合にロードする初期profiler.xml
ファイルを指定します。ROOT_FILE
が指定されていない場合、デフォルトでは、/WEB-INF/profiler.xml
ファイルがJDeveloperで使用されます。
ダイアログを起動する接頭辞を変更するには、org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIX
パラメータを設定します。
デフォルトはdialog:
で、ダイアログを起動するJSFナビゲーション・ルールの結果の冒頭に使用されます(dialog:error
など)。
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION
パラメータを設定して、スキニング・キーのCSSクラス名の圧縮を決定できます。
デフォルトは、false
です。圧縮を無効にする場合、true
に設定します。
パフォーマンスのヒント: 圧縮はパフォーマンスに影響します。本番環境では、このパラメータを |
スキニング・フレームワークは、アプリケーションがリクエストする各スキンの生成されたCSSファイルに関する情報をメモリーにキャッシュします。アプリケーションで異なるスキンが多数使用される場合は、これがパフォーマンスに影響します。org.apache.myfaces.trinidad.skin.MAX_SKINS_CACHED
パラメータの値として、メモリーに情報をキャッシュするスキンの最大数を指定します。このパラメータのデフォルト値は20
です。
oracle.adf.view.rich.automation.ENABLED
パラメータをtrue
に設定し、コンポーネントID属性がnull
の場合、自動テストの際、IDがnullでないようコンポーネントのtestId
が使用されます。testId
はタグのみの属性です。JavaコンポーネントAPIの一部ではありません。このコンテキスト・パラメータで有効化されるのはテスト自動化のインフラストラクチャのみであり、テスト自体は開始されません。テストを開始するには、オープン・ソースのSelenium IDEのようなツールが必要になります。
注意: テスト自動化コンテキスト・パラメータを |
また、テスト自動化を有効化することによって、実行中のアプリケーションでアサーションが有効になります。使用しているアプリケーションで予想外のコンポーネント動作が発生し、新規アサーションの失敗エラーが表示されるようになったら、アプリケーション・コンポーネントの実装の詳細を調べる必要があります。たとえば、応答のなくなったユーザー・アクションなど、ポップアップ・ダイアログ関連の問題が発見されることは珍しいことではありません。
テスト自動化を有効にした後でのみアサーション失敗エラーを生成する既知のコーディング・エラーが表示されます。
ユーザーのコンポーネントでは、もはやページ定義ファイルに存在しないADFイテレータ・バインディングを参照します。アサーションが有効になっていない場合、このエラーは表示されず、存在していないイテレータを参照するコンポーネントはレンダリングしません。
ユーザーのコンポーネントは、レンダリングしないように定義されている部分トリガー・コンポーネントです(属性がrendered="false"
に設定されています)。たとえば、レンダリングされた属性の使用によってアサーション失敗エラーが発生します。
<af:commandButton id="hiddenBtn" rendered="false" text="Test"/> <af:table var="row" id="t1" partialTriggers="::hiddenBtn">
このエラーの回避策として、rendered="false"
ではなく、visible="false"
に設定された属性を使用します。
ユーザーのコンポーネントは、イベントが適切なコンポーネント・ハンドラに到達できないようにするネスト化階層によって構成されています。たとえば、次のネスト化は正しくありません。
<af:commandLink <af:showPopupBehavior <af:image <af:clientListener
したがって、次のように書き直す必要があります。
<af:commandLink <af:image <af:showPopupBehavior <af:clientListener
システム管理者は、コマンドライン・フラグ-Doracle.adf.view.rich.automation.ENABLED=true
を指定してサーバーを起動することにより、スタンドアロンのOracle WebLogic Serverのレベルでテスト自動化を有効にできます。テスト自動化を有効にしてアプリケーション・サーバー・インスタンスでアプリケーションを実行すると、デプロイされたアプリケーションのweb.xml
ファイルのコンテキスト・パラメータの設定がオーバーライドされます。
UIViewRoot
キャッシングを有効化または無効化するには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOT
パラメータを使用します。トークンのクライアント側状態保存が有効化されている場合、各トークンを使用してUIViewRoot
ツリー全体をキャッシュすることにより、MyFaces Trinidadで更なる最適化が行われます。(これは、スレッドの安全性やセッションのフェイルオーバーには影響しないことに注意してください。)UIViewRoot
ツリーを再インスタンス化する必要がなく、ポストバックの処理スピードが大幅に速くなるため、これはAJAX集中型システムにとって重要な最適化です。
キャッシングを有効にするには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOT
パラメータをtrue
に設定します。これがデフォルトです。キャッシングを無効にするには、パラメータをfalse
に設定します。
注意: この種のキャッシングは、一部のJSFテクノロジと干渉することが認識されています。特に、Apache MyFaces Tomahawk |
oracle.adf.view.rich.tonalstyles.ENABLED
パラメータは下位互換性のためにまだ使用可能ですが、パラメータをfalse
に設定し、.AFDarkTone
、.AFMediumTone
、.AFLightTone
および.AFDefaultTone
の色調スタイル・クラスの置換えスタイルとしてテーマを使用します。テーマは色調スタイルより作成しやすく、依存するセレクタが少ない上に、CSS包含セレクタも使用されません。このため、不具合が起こりにくくなります。1つのCSSファイル内のセレクタ数に対する制限により、色調スタイルおよびテーマの両方を、同じアプリケーションでサポートすることはできません。
部分ページ・レンダリング(PPR)最適化を有効化および無効化するには、org.apache.myfaces.trinidad.PPR_OPTIMIZATION
パラメータを使用します。このパラメータは、デフォルトではoff
に設定されています。パフォーマンスとPPRの効率を向上するにはon
に設定します。
oracle.adf.view.rich.pprNavigation.OPTIONS
パラメータを使用して、部分ページ・ナビゲーションを有効化および無効化します。デフォルトでは、値はoff
です。部分ページ・ナビゲーションでは、アプリケーション全体で同じベース・ページを使用し、単にページ本体のコンテンツを各ナビゲーションに置き換えます。このプロセスにより、ページが新しくなるたびにJavaScriptライブラリとスタイル・シートを再ロードする必要がなく、パフォーマンスが向上します。詳細は、8.4項「部分ページ・ナビゲーションの使用」を参照してください。
有効な値は次のとおりです。
on
: アプリケーションのPPRナビゲーションを有効にします。
注意: パラメータを有効にする場合、ナビゲーションに含まれるコマンド・コンポーネントの |
off
: アプリケーションのPPRナビゲーションを無効にします。
onWithForcePPR
: コマンド・コンポーネントでのアクションの結果としてナビゲーションが行われる場合、コンポーネントのpartialSubmit
属性がtrue
に設定されている場合と同様に、アクションは常にPPRを使用して配信されます。partialSubmit
の詳細は、6.1.1項「イベントおよび部分ページ・レンダリング」を参照してください。コンポーネントのpartialSubmit
がすでにtrue
に設定されている場合、フレームワークでの処理はありません。partialSubmit
がtrue
に設定されていない場合、ドキュメント全体がリフレッシュされ、古いページ・リフレッシュ動作が保持されます。アクション・コンポーネントにナビゲーションが含まれない場合も、ドキュメント全体がリフレッシュされます。
oracle.adf.view.rich.libraryPartitioning.ENABLED
パラメータを使用して、JavaScriptのパーティション化の有効/無効を切り替えます。デフォルトでは、値はtrue
(有効)です。JavaScriptのパーティション化を使用すると、ページのクライアント・コンポーネントによって必要とされるJavaScriptのみをダウンロードできます。
有効な値は次のとおりです。
true:
JavaScriptのパーティション化が有効にされています(デフォルト)。
false:
JavaScriptのパーティション化が無効にされています。
JavaScriptのパーティション化の使用および構成の詳細は、4.9項「JavaScriptライブラリのパーティション化」を参照してください。
アプリケーションでフレームバスティングを使用するには、org.apache.myfaces.trinidad.security.FRAME_BUSTING
コンテキスト・パラメータを使用します。フレームバスティングは、悪意のあるWebサイトが別のドメインのページをフレームに引き出して偽のページで覆い隠し、元のページの一部のみが表示されるようにしたり、クリックジャックされたページ(ボタンなど)が表示されるようにするクリックジャックを防ぐ方法です。ユーザーがボタンをクリックすると、実際はクリックジャックされたページでボタンをクリックしているため、予期しない結果になります。
たとえば、DomainA
に存在するWebベースの電子メール・アプリケーションに対して、IFrameを使用してDomainA
の電子メール・アプリケーションのページを指すページを作成してDomainB
のWebサイトでページをクリックジャックするとします。2つのページを組み合せて、DomainB
から引き出されたページがIFrameでページの大部分を占めるようにして、アカウントのすべての電子メールを削除するボタンのみが表示されるようにします。実際に電子メール・アプリケーション内で操作していることを認識していないユーザーがボタンをクリックすると、意図せずにすべての電子メールが削除されることになります。
フレームバスティングは次のJavaScriptを使用して、アプリケーションのページがフレーム内で実行されるのをブロックし、クリックジャックを防ぎます。
top.location.href = location.href;
パラメータをalways
に設定して、アプリケーションがフレームバスティングを使用するように構成すると、フレームでページの実行が試行されるたびに、ユーザーにはページがリダイレクトされているというアラートが表示され、ページが最上位であることを定義するJavaScriptコードが実行され、ページのフレーム内での実行が却下されます。
アプリケーションでフレームを使用する必要がある場合は、パラメータの値をdifferentOrigin
に設定できます。この設定では、フレームの派生元が親ページと同じである場合のみ、フレームバスティングが実行されます。これがデフォルトの設定です。
注意: ページの派生元はドメイン名、アプリケーション・レイヤー・プロトコル、およびほとんどのブラウザではスクリプトを実行しているHTMLドキュメントのTCPポートを使用して定義されます。これらの値がすべて完全に同一である場合にのみ、ページは同じドメインから派生したとみなされます。 たとえば、次のページは、ポート番号が違うため派生元のチェックに失敗します。
|
たとえば、DomainApage2
ページを含むフレームを使用するアプリケーションにDomainApage1
という名前のページがあるとします。外部のDomainBpage1
がDomainApage1
ページのクリックジャックを試行するとします。結果は次のようなウィンドウ階層になります。
DomainBpage1
DomainApage1
DomainApage2
アプリケーションでdifferentOrigin
にフレームバスティングが設定されていれば、フレームワークは親ウィンドウ階層をたどって、任意の祖先ウィンドウが別のドメインから引き出されているかどうかを判断できます。DoaminBpage1
は別のドメインから派生しているため、DomainApage1ページに対してフレームバスティングJavaScriptコードが実行され、トップレベル・ウィンドウが表示されます。DomainApage2
は同じドメインから派生しているため、DomainApage1
はフレーム内での実行が許可されます。
有効な値は次のとおりです。
always:
フレームでの実行が試行されると常にエラーが表示されリダイレクトします。
differentOrigin
: 別のドメインから派生したページでフレームの実行が試行される場合のみ、エラーが表示されリダイレクトします(デフォルト)。
never
: 任意の派生元ドメインの任意のフレームでページを実行できます。
注意: ADF Facesページの場合、次のコンテキスト・パラメータのいずれかを
これはMyFaces Trinidadパラメータであるため、これらのページにも使用できます。My Faces Trinidadアプリケーションにおけるこのパラメータの使用の詳細は、MyFaces Trinidadドキュメントを参照してください。 |
oracle.adf.view.rich.versionString.HIDDEN
パラメータを使用し、バージョン情報をページのHTML上に表示するかどうかを決めます。パラメータがfalse
に設定されると、ADF FacesページのHTMLには、ADF Facesのバージョン、および例A-2に示すページの作成に使用される他のコンポーネントの情報が含まれます。
例A-2 HTMLにおけるバージョン情報
</body><!--Created by Oracle ADF (ADF Faces API - 11.1.1.4.0/ADF Faces Implementation - 11.1.1.4.0, RCF-revision: 39851 (branch: faces-1003-11.1.1.4.0, plugins: 1.2.3), Trinidad-revision: 1051544 (branch: 1.2.12.3-branch, plugins: 1.2.10), build: adf-faces-rt_101221_0830, libNum: 0355 powered by JavaServer Faces API 1.2 Sun Sep 26 03:21:43 EDT 2010 (1.2)), accessibility (mode:null, contrast:standard, size:medium), skin:customSkin.desktop (CustomSkin)--></html>
新しいアプリケーションを作成すると、パラメータはtrue
に設定されます。これは本番環境においてもtrue
に設定します。情報のデバッグの際は、このバージョン情報を表示するため、パラメータをfalse
に設定します。
注意: 本番環境においては、セキュリティ問題を回避するため、このパラメータを |
プログラムでaf:outputText
またはaf:outputFormatted
コンポーネントを部分ターゲットとして(addPartialTarget()
へのコールを使用して)追加する際は、auto
に設定されたoracle.adf.view.rich.SUPPRESS_IDS
コンテキスト・パラメータを使用します。
デフォルトでは、このパラメータはexplicit
に設定されているため、次のいずれかに当てはまる場合を除き、自動生成されたコンポーネントIDと明示的に設定されたコンポーネントIDの両方を抑制することでコンテンツ・サイズが削減されています。
コンポーネントのpartialTriggers
属性が設定されている場合
clientComponent
がtrue
に設定されている場合
addPartialTarget()
へのコールでは、partialTriggers
属性が設定されておらず、部分ページ・レンダリングは成功しません。これらのコンポーネントの自動生成されたコンポーネントIDのみを抑制する場合は、パラメータをauto
に設定します。
ADF Facesキャッシング・フィルタ(ACF)は、イメージ、スタイルシート、.pdf
や.zip
ファイルといったドキュメントなどの静的アプリケーション・オブジェクトのキャッシング(または圧縮、あるいはその両方)を有効にすることで、Webアプリケーションのパフォーマンスを上げる場合に使用可能なJava EEサーブレット・フィルタです。これらのオブジェクトは、Oracle Web CacheやOracle Traffic Directorなどの外部Webキャッシュまたはブラウザ・キャッシュでキャッシュされます。コンテンツのキャッシュ可能性は、主に、Webキャッシュ管理者が定義するURLベースのルールで決まります。ADFアプリケーション管理者または作成者はACFを使用して、adf-config.xml
ファイルに直接キャッシング・ルールを定義できます。キャッシング・ルールの定義方法の詳細は、A.4.2項「ADF Faces Caching Filterへのキャッシング・ルールの定義」を参照してください。
ADF Facesのタグ・ライブラリJARには、.js
、.css
およびイメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれています。これらの固定ルールはadf-settings.xml
ファイルに定義されており、アプリケーションのデプロイ中やデプロイ後には変更できません。ルールが競合する場合は、アプリケーション開発者によってadf-config.xml
に定義されているキャッシング・ルールが優先されます。adf-settings.xml
の設定の詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
Webキャッシュを介したWebアプリケーションへのすべてのトラフィックをルーティングするには、Webキャッシュ管理者がOracle Web CacheおよびOracle Traffic Directorを構成する必要があります。Oracle Web CacheまたはOracle Traffic Directorをインストールしていない場合、<agent-caching>
子要素がtrue
に設定されていれば、adf-config.xml
に定義されたキャッシング・ルールがブラウザのキャッシュに適用されます。ACFがURLリクエスト・パスに含まれるように構成するには、web.xml
ファイルに、次のサーブレット・フィルタ定義を追加します。
ACFフィルタ・クラス: adf-config.xml
に定義されているルールにURLの一致を実行するクラスを指定します。
ACFフィルタ・マッピング: adf-config.xml
に定義されているキャッシング・ルールに一致するURLパターンを定義します。
例A-3に、ACFサーブレット定義のサンプルを示します。
例A-3 ACFサーブレット定義
<!- Servlet Filter definition -> <filter> <filter-name>ACF</filter-name> <filter-class>oracle.adf.view.rich.webapp.AdfFacesCachingFilter</filter-class> </filter> <!- servlet filter mapping definition -> <filter-mapping> <filter-name>ACF</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
注意: アプリケーションに定義されている一連のフィルタの中で、ACFサーブレット・フィルタを最初のフィルタにする必要があります。 |
リンクをレンダリングするADF Facesコマンド・コンポーネントのコンテキスト・メニューの提供を、エンド・ユーザーのブラウザで有効化または無効化するには、oracle.adf.view.rich.ACTION_LINK_BROWSER_CONTEXT_SUPPRESSION
コンテキスト・パラメータを使用します。コンテキスト・メニューにより、コマンド・コンポーネントに指定されている別のアクション(新しいウィンドウにリンクを開くなど)を起動するメニュー・オプションが提供されます。
このパラメータはデフォルトでyes
に設定されているため、ADF Facesコマンド・コンポーネントのコンテキスト・メニューはレンダリングされません。パラメータをno
に設定すると抑制を無効化することができ、ネイティブのブラウザ・コンテキスト・メニューが表示されます。この機能を構成できるADF Facesコマンド・コンポーネントの詳細は、参照してください。
サーバーにリクエストが送信されると、セッション・タイムアウト値がページに記述され、コンテキスト・パラメータoracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUT
によってセッション・タイムアウトの警告間隔が定義されます。ユーザーは警告ダイアログでセッションを拡張することができ、セッションの期限が切れて、ページがリフレッシュされると通知が送信されます。セッションの期限が切れると、アプリケーションのセキュリティ構成に応じて、ユーザーはログイン・ページにリダイレクトされます。
警告ダイアログが表示されるセッション・タイムアウトまでの秒数を設定するには、oracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUT
コンテキスト・パラメータを使用します。WARNING_BEFORE_TIMEOUT
の値が120秒より少ない場合、ページにクライアントの状態保存が使用されている場合、またはセッションが無効化されている場合は、機能が無効化されます。セッション・タイムアウト値は、セッションから直接取得されます。
例A-4に、セッションがタイムアウトする120秒前に警告ダイアログを表示する構成を示します。
例A-4 セッション・タイムアウトの警告の構成
<context-param> <param-name>oracle.adf.view.rich.sessionHandling.WARNING_BEFORE_ TIMEOUT</param-name> <param-value>120</param-value> </context-param>
このパラメータのデフォルト値は120秒です。セッション・タイムアウトが短すぎる場合に、ユーザーに頻繁に通知しないようにするために、WARNING_BEFORE_TIMEOUT
の実際の値は動的に決定されますが、セッション・タイムアウトを2分より長くするか、機能を無効化する必要があります。
JSPページの処理中に、HTTPストリーミング・リクエストでのJSPタグの実行を有効化または無効化するには、oracle.adf.view.rich.tag.SKIP_EXECUTION
パラメータを使用します。Faceletsの処理は含まれません。
デフォルトでは、このパラメータはstreaming
に設定されており、ストリーミング・リクエスト中のJSPタグの実行はスキップされます。ストリーミング・リクエストにタグの実行が必要な場合に、リクエストごとにJSPタグを実行するには、パラメータをoff
に設定します。
ADF FacesはURLパラメータを使用して、ウィンドウIDや状態などの情報を保持します。しかし、実際に同じURLがある場合、URLパラメータのために検索エンジンではURLの認識が妨げられ、分析できなくなります。URLパラメータのために、ブックマークを付けることもできなくなります。
デフォルトにより、ADF Facesでは、HTML5履歴管理APIを使用してこれらの内部使用された動的URLパラメータが削除されます(ADF Controllerのトークンは削除されません)。このAPIを使用できない場合、セッションのCookieが使用されます。
注意: 内部使用されたADF Facesパラメータのみ( |
必要に応じて、コンテキスト・パラメータoracle.adf.view.rich.prettyURL.OPTIONS
を使用して、URLパラメータの削除方法を手動で構成することもできます。パラメータが削除されないように、このパラメータをoff
に設定してください。HTML5履歴管理APIを使用する場合にのみ、パラメータをuseHistoryApi
に設定します。ブラウザがこのAPIをサポートしていない場合、パラメータは削除されません。セッションのCookieを使用してパラメータを削除する場合は、パラメータをuseCookies
に設定します。ブラウザがCookieをサポートしていない場合、パラメータは削除されません。
グラフ・コンポーネントとゲージ・コンポーネントのデフォルトの出力形式をHTML5に変更するには、oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMAT
パラメータを追加します。
<context-param> <param-name>oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMAT</param-name> <param-value>HTML5</param-value> </context-param>
デフォルトでは、このパラメータはありません。有効値はHTML5
およびFLASH
です。
アプリケーション全体に関わるその他のオプションのコンテキスト・パラメータは次のとおりです。
javax.faces.CONFIG_FILES
: JSFアプリケーション構成リソース・ファイルへのパスを指定します。次のコードに示すとおり、値には、アプリケーション・コンテキストの相対パスのカンマ区切りリストを使用します。アプリケーションで複数のJSF構成ファイルを使用する場合、このパラメータを設定します。
<context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value> /WEB-INF/faces-config1.xml,/WEB-INF/faces-config2.xml </param-value> </context-param>
javax.faces.DEFAULT_SUFFIX
: JSFコンポーネントを含むJSPページのファイル拡張子(接尾辞)を指定します。デフォルト値は.jsp
です。
注意: JSFサーブレットに対する接頭辞マッピング( |
javax.faces.LIFECYCLE_ID
: javax.faces.lifecycle.LifecycleFactory.DEFAULT_LIFECYCLE
定数によるデフォルト設定以外のライフサイクル識別子を指定します。
注意:
|
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
: 実行時の変更の表示に、JSPファイルとCSSファイルで再起動が必要かどうかを指定します。デフォルトではfalse
に設定されています。サーバーを再起動せずに変更を表示できるようにする場合は、true
に設定します。
JSF構成ファイルには、JSFアプリケーションのリソース(カスタム・バリデータ、マネージドBeanなど)を登録し、ページ間のナビゲーション・ルールをすべて定義します。JSF構成ファイル名は、アプリケーションで任意の名前にできますが、通常、faces-config.xml
ファイルです。小規模なアプリケーションには、通常faces-config.xml
ファイルが1つ含まれます。
アプリケーションでADF Facesコンポーネントを使用する場合、JDeveloperにより、必要な構成要素がfaces-config.xml
に自動で追加されます。faces-config.xml
ファイルの詳細は、Sun社のWebサイト(http://java.sun.com
)の「Java EE 5 tutorial」を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、空のfaces-config.xml
ファイルが/WEB-INF
ディレクトリに作成されます。JSFテクノロジを使用するアプリケーション・テンプレート(Java EE Webアプリケーション・テンプレートなど)を基に、新規アプリケーション・ワークスペースを作成した場合も、空のfaces-config.xml
ファイルが自動的に追加されます。詳細は、3.2項「アプリケーション・ワークスペースの作成」を参照してください。
アプリケーションでADF Facesコンポーネントを使用する場合、ADFデフォルト・レンダー・キットIDをoracle.adf.rich
に設定する必要があります。JSFページへのADF Facesコンポーネントの最初の挿入時、またはFusionテンプレートを使用して作成されたアプリケーション・ワークスペースへの最初のJSFページの追加時、例A-5に示すとおり、ADFコンポーネントのデフォルト・レンダー・キットがfaces-config.xml
ファイルにJDeveloperで自動的に挿入されます。
例A-5 faces-config.xmlでのADFデフォルト・レンダー・キット構成
<?xml version="1.0" encoding="windows-1252"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"> <application> <default-render-kit-id>oracle.adf.rich</default-render-kit-id> </application> </faces-config>
通常、次のものをfaces-config.xml
で構成します。
メッセージ・バンドル、サポートされているロケールなどのアプリケーション・リソース
ページ間のナビゲーション・ルール
カスタム・バリデータおよびコンバータ
データを保持および処理、UIイベントの処理およびビジネス・ロジックの実行用マネージドBean
注意: アプリケーションでADF Controllerを使用する場合、これらの項目は |
JDeveloperでは、宣言的概要エディタを使用してfaces-config.xml
ファイルを変更できます。JSF構成要素に精通している場合は、XMLエディタを使用してコードを直接編集できます。
faces-config.xmlを編集する手順:
アプリケーション・ナビゲータで、faces-config.xmlをダブルクリックし、ファイルを開きます。
JDeveloperでは、faces-config.xml
はデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。
概要エディタを使用してマネージドBeanやバリデータなどを宣言的に追加すると、JDeveloperでfaces-config.xml
ファイルが自動的に更新されます。
faces-config.xml
のXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。
XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに反映されます。
ヒント: JSFでは、1つの |
adf-config.xml
ファイルは、セキュリティ、キャッシュ、変更永続性などのアプリケーション全体の機能の構成に使用されます。他のOracleコンポーネントもこのファイルでプロパティを構成します。
アプリケーションの構成を行う前に、まず、adf-config.xml
ファイルを作成する必要があります。その後、アプリケーションで使用するアプリケーション全体のADF機能の構成を追加できます。
adf-config.xmlを作成および編集する手順:
プロジェクト用のMETA-INF
ディレクトリの作成がまだの場合は、これを作成します。
META-INF
ディレクトリを右クリックし、「新規」を選択します。
「新規ギャラリ」で、「一般」を展開し、「XML」→「XMLドキュメント」を選択して、「OK」をクリックします。
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ファイル名にadf-config.xml
と入力し、META-INF
ディレクトリに保存します。
ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。
これで、使用する機能の構成に必要な要素を追加できます。
ADF Faces Caching Filter (ACF)のキャッシング・ルールは、Webアプリケーションの.adf/META-INF
ディレクトリにあるadf-config.xml
ファイルに定義されています。これらのURLの一致ルールに対して、ACFがリクエスト・パスに含まれるように構成する必要があります。ACFサーブレット・フィルタ定義の追加方法の詳細は、A.2.3.21項「ADF Facesキャッシング・フィルタ」を参照してください。
1つ以上のキャッシング・ルールの単一のルート要素は<caching-rules>
で、ネームスペースhttp://xmlns.oracle.com/adf/faces/config
に<adf-faces-config>
要素の子として構成されます。
<caching-rule>
要素は各キャッシング・ルールを定義し、構成ファイルにリストされている順序で検証されます。例A-7に、adf-config.xml
でキャッシング・ルールを定義する構文を示します。
例A-7 ACFキャッシング・ルールの構文
<adf-config xmlns="http://xmlns.oracle.com/adf/config"> <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config"> <caching-rules xmlns="http://xmlns.oracle.com/adf/faces/rich/acf"> <caching-rule id="cache-rule1"> <cache>true|false</cache> <duration>3600</duration> <agent-caching>true|false</agent-caching> <agent-duration>4800</agent-duration> <compress>true|false</compress> <cache-key-pattern>....</cache-key-pattern> <search-key> <key>key1</key> <key>key2</key> </search-key> <varyBy> <vary-element> <vary-name><cookieName>|<headerName></vary-name> <vary-type>cookie|header</vary-type> </vary-element> </varyBy> </caching-rule> </caching-rules> </adf-faces-config> </adf-config>
各キャッシング・ルールは、<caching-rule>
要素に定義されます。オプションのid
属性を定義して、ルールの場所をサポートできます。表A-1に、アプリケーションのオブジェクトをキャッシュまたは圧縮するためのパラメータの定義に使用される<caching-rule>
子要素を説明します。
表A-1 AFCキャッシング・ルールの要素および属性
ルール要素の子 | 属性の説明および値 |
---|---|
|
オブジェクトをWebキャッシュにキャッシュする必要があるかどうかを指定します。値を |
|
オブジェクトがWebキャッシュにキャッシュされる期間を秒単位で定義します。デフォルトは |
|
Webキャッシュがない場合にブラウザ・キャッシュを使用するには、 |
|
オブジェクトがブラウザ・キャッシュにキャッシュされる期間を秒単位で定義します。デフォルトは |
|
Webキャッシュにキャッシュされたオブジェクトを圧縮する必要があるかどうかを指定します。デフォルト値は |
|
ルールに一致するURLを決定します。リクエストURLのファイル拡張子またはパス接頭辞に、 |
|
キャッシュされたオブジェクトにタグ付けされている検索キーを定義します。各 |
|
Webキャッシュにキャッシュされたオブジェクトのバージョニングに使用されます。 各
Webキャッシュにより、リクエスト・パラメータが自動的にバージョニングされます。リクエスト・パラメータに基づき、オブジェクトの複数のバージョンがWebキャッシュに格納されます。 |
アプリケーションではデフォルトで、各コンポーネントに指定されている出力形式が使用されます。たとえば、ADFデータ視覚化コンポーネントを使用するアプリケーションは、アニメーションと対話効果をWebブラウザに表示するFlash出力形式を指定します。コンポーネントの出力形式がFlashで、AppleのiOSオペレーティング・システムのように、ユーザーのプラットフォームでFlash Playerがサポートされていない場合は、出力形式は使用可能な最善のフォールバックに自動的にダウングレードされます。
adf-config.xml
にflash-player-usage
コンテキスト・パラメータを設定することで、アプリケーション全体のFlashコンテンツの使用を構成できます。有効な設定は次のとおりです。
downgrade
: 出力形式がFlashで、Flash Playerを使用できない場合に、使用可能な最善のフォールバックにダウングレードすることを指定します。ユーザーは、Flash Playerのダウンロードを要求されません。
disable
: アプリケーション全体におけるFlashの使用の無効化を指定します。クライアントでFlash Playerを使用できるかどうかに関係なく、すべてのコンポーネントがFlash以外でレンダリングされます。
例A-8に、adf-config.xml
でFlashをアプリケーション全体で無効にするための構文を示します。
例A-8 adf-config.xmlで無効化されるFlash
<adf-config xmlns="http://xmlns.oracle.com/adf/config"> <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config"> <flash-player-usage>disabled</flash-player-usage> </adf-faces-config></adf-config>
コンテキスト・パラメータでは、EL式の値もサポートされています。このため、アプリケーションの異なる部分や、それぞれのユーザーでプリファレンスに基づいて、Flashを有効化するか無効化するかをアプリケーションで選択することが可能です。
注意: これまで、データ可視化の |
コンテンツ配信ネットワーク(CDN)では、ネットワークでのコンテンツへのアクセスがさらに効率的になることで、Webアプリケーションのパフォーマンスが向上します。アプリケーションでは、様々なCDN構成を使用してユーザー・エクスペリエンスを最適化できます。CDNを介してすべてのリクエストをルーティングする構成がよく利用されるようになっています。CDNは、クライアントとアプリケーションとの間のプロキシとして機能します。CDN固有の構成ツールを使用して、キャッシングや圧縮のルールを指定できます。
また、CDNからルーティングされるリクエストを制限する方法もあります。たとえば、予備リソース(イメージ、JavaScriptライブラリ、スタイルシートなど)のリクエストのみをCDNに誘導し、アプリケーション生成HTMLコンテンツのリクエストを直接処理できます。この場合、相対リソースURIを、CDNで処理されるホストを指し示す絶対URIに変換する必要があります。
たとえば、アプリケーション定義のイメージが、imagesというローカル・ディレクトリに保存されるとします。イメージを参照するコードは、例A-9のようになります。
例A-10に示すように、イメージをCDNから取得するには、イメージ・ソースの絶対URIを明示的に指定する方法があります。
例A-10 絶対URIを使用したCDNからのイメージ参照
<af:image source="http://mycdn.com/images/logo.png" shortDesc="My Company Logo" id="i1"/>
この方法では、アプリケーションの多くの場所(すべてのイメージ参照の可能性がある)を更新する必要があるため、ページ間でCDNベースURIが重複してしまうマイナス面があります。これにより、CDN使用の有効/無効が切り替えられたり、CDNから別の極めて困難なCDNに切り替えられたりする可能性があります。
あるいは、例A-11に示すように、リソース関連属性をELでバインドする方法もあります。
例A-11 CDNベースURIへのELバインディング
<af:image source="#{preferences.baseUri}/logo.png" shortDesc="My Company Logo" id="i1"/>
この方法では、CDNベースURIを1箇所(マネージドBeanなど)で指定できます。ただし、コンテンツ全体で正しいEL式を使用することは、アプリケーション開発者の負担になります。
ADF Facesでは、アプリケーション全体で(直接またはEL式を介して)CDNの場所の参照を繰り返すのではなく、リソースURIを変更する一元管理メカニズムが用意されています。このメカニズムを使用すると、1つ以上の接頭辞(ベース・リソースURI)をリソースに指定できます。これらのベース・リソースURIは、ネームスペースhttp://xmlns.oracle.com/adf/rewrite/config
の下にある、アプリケーションのadf-config.xml
ファイルで定義されます。
たとえば、例A-12では、イメージ・ディレクトリのすべてのpng
イメージが、http://mycdn.com
接頭辞を含めて書き換えられるように指定されています。
例A-12 adf-config.xmlでのCDN接頭辞の指定
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config"> <resource-uris> <base-resource-uri uri="http://mycdn.com/"> <match-pattern>^/.*/images/.*\.png$</match-pattern> </base-resource-uri> </resource-uris> </adf-uri-rewrite-config>
<match-pattern>
要素で指定された正規表現(^/.*/images/.*\.png$
)は、アプリケーションでレンダリングされるすべてのリソースURIに対してテストされます。一致するURIは、<base-resource-uri>
要素のURI属性で指定された接頭辞を含めるように変換されます。
この解決方法では、アプリケーション定義のリソースURIのみでなく、ADF Faces自体で使用されるURIの変更にも使用できるというメリットがあります。このタスクを簡略化するために、ADF Facesでは、正規表現のかわりに<match-alias>
要素で使用できるエイリアスの小規模セットを公開します。
たとえば、例A-13の構成では、http://mycdn.com/
接頭辞を、ADF Facesコンポーネントで定義されるすべてのイメージに適用しています。
例A-13 接頭辞のリソースへの適用
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config"> <resource-uris> <base-resource-uri uri="http://mycdn.com/"> <match-alias>af:images</match-alias> </base-resource-uri> </resource-uris> </adf-uri-rewrite-config>
<match-pattern>
要素で指定した正規表現とは異なり、<match-alias>
で使用されるエイリアスは、アプリケーション定義のリソースと一致しません。そのため、たとえば、前述の構成のaf:images
エイリアスの場合、ADF Facesコンポーネントで定義されるイメージ(ADF Facesに付属のデフォルトの背景イメージやアイコン)に接頭辞が付けられます。アプリケーションに明示的にバンドルされるイメージに接頭辞は付きません。
af:images
エイリアスの他に、ADF Facesスキン(スタイルシート)、JavaScriptライブラリおよびリソース・ドキュメントを対象とするエイリアスも提供されます。
CDNのURIを設定する手順:
adf-config.xml
ファイルを作成するか開きます(詳細は、A.4.1項「adf-config.xmlでのADF Facesの構成方法」を参照)。
表A-2に示す要素を使用して、CDNの置換えURIを定義する書換えルールを作成します。
注意: すべての属性値は、ELにバインドされます。ただし、ELにバインドされた属性の評価は一度のみです(解析時)。 |
表A-2 CDN URI書換え要素
要素 | 定義 |
---|---|
|
この |
|
指定リソースのパスを書き換えるルールを定義します。 |
|
書き換えられたパスのベースURIを定義します。
|
|
レンダリングされるリソースURIに対してテストされる正規表現。一致が見つかった場合、リソースURIの先頭には、 実行時のオーバーヘッドを最小限に抑えるために、リソースURIの書換えの結果がキャッシュされることに注意してください。過度のキャッシュを防ぐには、 |
|
ADF Facesで提供されるリソースのいずれかに一致するエイリアスを定義します。リソースは、次のいずれかになります。
各 |
一致要素に指定された値は、ExteralContext.encodeResourceURL()
を通過するすべてのURIと比較されます。URIが一致した場合、囲んでいる<base-resource-uri>
要素で指定された接頭辞が適用されます。
例A-14に、CDNを使用するように構成されるアプリケーションを示します。
例A-14 CDN URI要素
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config"> <resource-uris> <base-resource-uri uri="http://mycdn.com/" secure-uri="https" output-context-path="remove"> <match-pattern>^/.*/images/.*\.png$</match-pattern> <match-pattern>^/.*\.png\?ln=images$</match-pattern> <match-alias>af:documents</match-alias> <match-alias>af:coreScripts</match-alias> </base-resource-uri> </resource-uris> </adf-uri-rewrite-config>
af:skins
エイリアスを使用して、CDNを指し示すようにスキン・スタイルシートを書き換えることができますが(CDNはアプリケーション・サーバーにリクエストをプロキシするように構成される)、アプリケーションがクラスタまたはロードバランスされた環境(あるいはその両方)で実行している場合、問題が生じることがあります。
スキン・スタイルシートは、包含ページ・コンテンツをレンダリングしたサーバーに生成されて格納されます。CDNを介してスタイルシート・リクエストをルーティングすることで、サーバー・アフィニティが失われる可能性があります(たとえば、CDNが別のドメインで機能する場合、セッションCookieが失われます)。その結果、スタイルシート・リクエストは、リクエストしたスタイルシートをまだ生成していないサーバーにルーティングされます。このような場合、スタイルシート・リクエストは正常に完了しません。
ロードバランス環境またはクラスタ化環境(あるいはその両方)で起こる可能性のある失敗を回避するには、Cookieまたはセッション・アフィニティが失われる場合、スキン・スタイルシートURIを書き換えないでください。
af:coreScripts
エイリアスを使用して、ADFの「コア」JavaScriptライブラリ(すべてのADFページにあるJavaScript)をCDNに書き換えることができます。また、<match-pattern>
の正規表現を使用して、任意(アプリケーション定義など)のJavaScriptライブラリURIを書き換えることができます。ただし、JavaScriptライブラリがページに動的に導入されている場合(部分ページレンダリングの結果など)、いくつかの起源ポリシー制限が適用されます。その結果、クロスオリジン・ホストに書き換えられたJavaScriptライブラリURIはロードに失敗します。
JavaScriptライブラリURIの書換えを、af:coreScripts
で扱われるライブラリに制限し、アプリケーション提供ライブラリが既知の場合も、初期ページ・レンダーの一部(つまり、ライブラリはPPRリクエストの一部として導入されていない)として含まれるように制限する必要があります。
adf-settings.xml
ファイルには、ADF Facesヘルプ・プロバイダやキャッシング/圧縮ルールなどのプロジェクトレベルおよびライブラリレベルの設定が含まれます。adf-settings.xml
ファイルの構成設定は固定で、アプリケーションのデプロイ時やデプロイ後に変更できません。アプリケーションには複数のadf-settings.xml
ファイルがある場合があります。ADF設定ファイルのユーザーは、これらの構成の内容をマージする必要があります。
デフォルトでは、view_project
/src/META-INF
ディレクトリに作成済のadf-settings.xml
ファイルがあります。
adf-settings.xml
ファイルが存在しない場合、これを作成する必要があります。その後、アプリケーションで使用するプロジェクトの機能の構成を追加できます。このファイルでの構成の詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
adf-settings.xmlを作成および編集する手順:
adf-settings.xml
ファイルはMETA-INF
ディレクトリに存在する必要があります。ディレクトリを作成する場所は、adf-settings.xml
ファイルを使用するプロジェクトのデプロイ時の計画によって異なります。
プロジェクトをアプリケーションのEARファイルでデプロイする場合、META-INF
ディレクトリを/application_name
/.adf
ディレクトリに作成します。
プロジェクトにadf-settings.xml
ファイルへの依存性があり、アプリケーションと別にデプロイされる可能性がある場合(たとえば、ADFライブラリでデプロイされるバインドされたタスク・フローなど)、META-INF
ディレクトリをビュー・プロジェクトの/src
ディレクトリに作成します。
ヒント: アプリケーションでOracle ADF Modelを使用している場合、 |
JDeveloperで、「ファイル」→「新規」の順に選択します。
「新規ギャラリ」で、「一般」を展開し、「XML」→「XMLドキュメント」を選択して、「OK」をクリックします。
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ソース・エディタで汎用コードを例A-15に示すコードに置き換えます。Webアプリケーション・ルートに対する正しい設定を使用します。
これで、使用する機能の構成に必要な要素を追加できます。詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
手順1で作成したMETA-INFディレクトリに、ファイルをadf-settings.xml
として保存します。
adf-settings.xml
ファイルでは次の構成要素がサポートされています。
次の要素を使用して、ヘルプ・システムで使用されるヘルプ・プロバイダを登録します。
<adf-faces-config>
: ADF Faces固有の構成をグループにまとめる親要素。
<prefix-characters>
: ヘルプ・プロバイダで、特定の接頭辞で始まるヘルプ・トピックIDにのみヘルプ・トピックを提供する場合、その接頭辞を指定します。接頭辞を使用しない場合は、省略できます。
<help-provider-class>
: ヘルプ・プロバイダ・クラス。
<custom-property>
および<property-value>
: ヘルプ・プロバイダ・クラスで受け入れるパラメータを定義するプロパティ要素。
例A-16に、登録されたヘルプ・プロバイダの例を示します。このケースでは、アプリケーションのヘルプ・プロバイダは1つのみのため、接頭辞を含める必要がありません。
例A-16 ヘルプ・プロバイダの登録
<adf-settings xmlns="http://xmlns.oracle.com/adf/settings"> <adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings"> <help-provider prefix="MYAPP"> <help-provider-class> oracle.adfdemo.view.webapp.MyHelpProvider </help-provider-class> <property> <property-name>myCustomProperty</property-name> <value>someValue</value> </property> </help-provider> </adf-faces-config> </adf-settings>
アプリケーション固有のライブラリおよびJARには、ファイルのキャッシングまたは圧縮(あるいはその両方)を必要とする様々なリソースが含まれています。ライブラリまたはJARが複数ある場合は、アプリケーションに、一致URLに基づいて様々なキャッシング・ルールを含む1つ以上のadf-setting.xml
ファイルが存在することがあります。キャッシング・ルールは、実行時に順序付けられたリストにマージされます。リソースに対するリクエストが複数のキャッシング・ルールに一致する場合は、リストでの順序が先のルールが優先されます。
ADF Faces JARには、.js
、.css
およびイメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれています。これらの固定ルールはadf-settings.xml
ファイルに定義されており、アプリケーションのデプロイ中やデプロイ後には変更できません。アプリケーション開発者は、adf-config.xml
ファイルにアプリケーション・キャッシング・ルールを定義でき、このルールはadf-settings.xml
に定義されるルールより優先されます。例A-17に、ADF Faces JARのadf-settings.xml
ファイルを示します。
例A-17 ADF Facesのadf-settings.xmlファイル
<adf-settings> <adf-faces-settings> <caching-rules> <caching-rule id="cache css"> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.css</cache-key-pattern> </caching-rule> <caching-rule id="cache js"> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.js</cache-key-pattern> </caching-rule> <caching-rule id="cache png"> <compress>false</compress> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.png</cache-key-pattern> </caching-rule> <caching-rule id="cache jpg"> <compress>false</compress> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.jpg</cache-key-pattern> </caching-rule> <caching-rule id="cache jpeg"> <compress>false</compress> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.jpeg</cache-key-pattern> </caching-rule> <caching-rule id="cache gif"> <compress>false</compress> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.gif</cache-key-pattern> </caching-rule> <caching-rule id="cache html"> <compress>true</compress> <duration>99999</duration> <agent-caching>true</agent-caching> <cache-key-pattern>*.html</cache-key-pattern> </caching-rule> </caching-rules> </adf-faces-settings> </adf-settings>
ADF Facesコンポーネントを使用してJSFアプリケーションを作成する場合、ADF Facesの機能(スキン・ファミリ、ページ・アクセシビリティ・サポートのレベルなど)をtrinidad-config.xml
ファイルで構成します。faces-config.xml
同様、trinidad-config.xml
は、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。
注意: システム・プロパティで |
JDeveloperで、ADF FacesコンポーネントをJSFページへ初めて追加すると、trinidad-config.xml
の基礎ファイルが/WEB-INF
ディレクトリに自動的に作成されます。例A-18に、trinidad-config.xml
の基礎ファイルを示します。
例A-18 JDeveloperによって作成されるtrinidad-config.xml基礎ファイル
<?xml version="1.0" encoding="windows-1252"?> <trinidad-config xmlns="http://xmlns.oracle.com/trinidad/config"> <skin-family>fusion</skin-family> </trinidad-config>
JDeveloperでは、ADF Facesを使用するJSFアプリケーションに対して、fusion
スキン・ファミリがデフォルトで構成されます。これをblafplus-rich
、blafplus-medium
、simple
に変更することも、カスタム・スキンを使用することもできます。カスタム・スキンを使用する場合は、trinidad-skins.xml
構成ファイルを作成し、カスタム・スキンを使用するようtrinidad-config.xml
を変更します。カスタム・スキンの作成の詳細は、第28章「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。
通常、次のものをtrinidad-config.xml
ファイルで構成します。
ページ・アニメーション
ページ・アクセシビリティ・サポートのレベル
タイムゾーン
拡張デバッグ出力
Oracle Help for the Web(OHW)のURL
ファイルのアップロードに使用するカスタム・ファイル・アップロード・プロセッサの登録もできます。
JDeveloperでは、XMLエディタを使用してtrinidad-config.xml
を変更できます。
trinidad-config.xmlを編集する手順:
アプリケーション・ナビゲータでtrinidad-config.xmlをダブルクリックし、XMLエディタにファイルを開きます。
要素名に精通している場合は、エディタに入力します。そうでない場合は、構造ウィンドウを使用して挿入します。
構造ウィンドウで次のようにします。
「前に挿入」または「後ろに挿入」メニューから選択する要素を右クリックし、挿入する要素をクリックします。
構造ウィンドウで新しく挿入された要素をダブルクリックし、プロパティ・インスペクタで開きます。値を入力するか、ドロップダウン・リスト(使用できる場合)から選択します。
大抵の場合、JSF EL式(#{view.locale.language=='en' ? 'minimal' : 'blafplus-rich'}
など)または静的値(<debug-output>true</debug-output>
など)を入力できます。EL式は、リクエストごとに動的に再評価され、適切なオブジェクト(ブール・オブジェクトなど)を戻す必要があります。
使用できる構成要素のリストは、A.6.2項「trinidad-config.xmlの要素について」を参照してください。
trinidad-config.xml
ファイルの構成後、プログラムから、あるいはJSF EL式を使用してプロパティ値を取得できます。詳細は、A.8項「RequestContext EL暗黙オブジェクトの使用」を参照してください。
すべてのtrinidad-config.xml
ファイルは、http://myfaces.apache.org/trinidad/config
XMLネームスペースの<trinidad-config>
要素で始まる必要があります。<trinidad-config>
内の要素の順序は任意です。要素のインスタンスを複数含めることができます。
一部のADF Facesコンポーネントでは、レンダリング時にアニメーションが使用されます。たとえば、ツリーおよびツリー表でノードを展開および縮小する際、アニメーションが使用されます。次のコンポーネントでレンダリング時にアニメーションが使用されます。
ファセットを公開および非公開にする場合の表の詳細ファセット
ノードを展開および縮小する際のツリーおよびツリー表
メニュー
ポップアップ・セレクタ
ダイアログ
ノート・ウィンドウおよびメッセージの表示
使用されるアニメーションのタイプとタイミングは、アプリケーションのスキンの一部として構成されます。詳細は、第28章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
animation-enabled
要素はtrue
またはfalse
に設定できます。また、true
またはfalse
に解決されるEL式を使用できます。デフォルトで、animation-enabled
はtrue
に設定されています。
注意: アニメーションを有効化すると、パフォーマンスに影響します。詳細は、『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracle Application Development Frameworkのパフォーマンス・チューニングに関する項を参照してください。 |
A.6.1項「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、JDeveloperでは、ADF Facesを使用するJSFアプリケーションにfusion
スキン・ファミリがデフォルトで使用されます。<skin-family>
の値をblafplus-rich
、blafplus-medium
、simple
、またはカスタム・スキン定義に変更することもできます。カスタム・スキンの作成および使用の詳細は、第28章「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。
次のコードに示すように、スキン・ファミリ値にEL式を使用できます。
<skin-family>#{prefs.proxy.skinFamily}</skin-family>
日付を処理して表示するためのタイムゾーンと、2桁のみの年を解析するための年オフセットを設定するには、次の要素を使用します。
<time-zone>
: 値が設定されていない場合、ADF Facesではデフォルトで、アプリケーション・サーバーで使用されているタイムゾーンが使用されます。必要な場合は、TimeZone
と評価されるEL式を使用できます。この値は、文字列をDate
に変換する際にorg.apache.myfaces.trinidad.converter.DateTimeConverter
で使用されます。
<two-digit-year-start>
: 値が設定されていない場合、これによってデフォルトの1950になります。必要な場合は、静的整数値またはInteger
オブジェクトと評価されるEL式を使用できます。この値は、文字列のDate
への変換にorg.apache.myfaces.trinidad.converter.DateTimeConverter
で使用されます。
デフォルトでは、<debug-output>
要素はfalse
です。<debug-output>
をtrue
に設定すると、ADF Facesでデバッグ出力が拡張されます。デバッグ出力に次の機能が追加されます。
自動インデント
HTMLのブロックを処理したコンポーネントを識別するコメント。
対応していない要素、1つの要素内での同じ属性の繰り返しの使用またはその他の不適切なマークアップの問題の検出。
一般的なHTMLエラー(他の<form>
タグ内の<form>
タグ、無効な場所に使用されている<tr>
タグや<td>
タグなど)の検出。
パフォーマンスのヒント: デバッグはパフォーマンスに影響します。本番環境ではこのパラメータを |
<accessibility-mode>
を使用して、アプリケーションでのアクセシビリティ・サポートのレベルを定義します。サポートされている値は次のとおりです。
default
: 出力でアクセシビリティ機能がサポートされます。
inaccessible
: 出力サイズを最適化するため、アクセシビリティ固有の構成要素は削除されます。
screenReader
: スクリーン・リーダーを使用する際の動作を改善するために、アクセシビリティ固有の構成が追加されます。
注意: スクリーン・リーダー・モードは、他のユーザーには使用しにくくなる場合があります。たとえば、アクセシビリティ・モードがスクリーン・リーダー・モードに設定されていると、アクセス・キーは表示されません。 |
<accessibility-profile>
を使用して、アプリケーションで使用する色のコントラストやフォント・サイズを構成します。サポートされている値は次のとおりです。
high-contrast
: デフォルト・コントラストではなく高コントラストを使用してアプリケーションが表示されます。
large-fonts
: デフォルト・サイズのフォントではなく大きいフォントを使用してアプリケーションが表示されます。
複数の設定を使用するには、値を空白で区切ります。
ADF Facesのデフォルトのページ・レンダリング方向は、ブラウザで使用されている言語に基づきます。しかし、次のコードに示すように、Booleanオブジェクトに評価されるEL式、あるいはtrue
またはfalse
を使用して<right-to-left>
要素にデフォルト・ページ・レンダリング方向を明示的に設定できます。
<!-- Render the page right-to-left for Arabic --> <!-- and left-to-right for all other languages --> <right-to-left> #{view.locale.language=='ar' ? 'true' : 'false'} </right-to-left>
通貨フィールドの書式設定に使用する通貨コードを指定する場合、および数値の桁と小数点に使用する区切り記号を定義する場合、次の要素を使用します。
<currency-code>
: コンバータで明示的に通貨コードが指定されていない通貨フィールドの書式設定に、org.apache.myfaces.trinidad.converter.NumberConverter
で使用されるデフォルトのISO 4217通貨コードを定義します。静的値またはString
オブジェクトと評価されるEL式を使用します。次に例を示します。
<!-- Set the currency code to US dollars. --> <currency-code>USD</currency-code>
<number-grouping-separator>
: 数値の桁区切りに使用される文字(カンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacter
オブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.myfaces.trinidad.converter.NumberConverter
クラスで使用されます。
たとえば、アプリケーションでドイツ語が使用されている期間に数値グループ区切りを設定する場合は、次のコードを使用します。
<!-- Set the number grouping separator to period for German --> <!-- and comma for all other languages --> <number-grouping-separator> #{view.locale.language=='de' ? '.' : ','} </number-grouping-separator>
<decimal-separator>
: 小数点に使用されるセパレータ(たとえば、ピリオドやカンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacter
オブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.mtfaces.trinidad.converter.NumberConverter
クラスで使用されます。
たとえば、アプリケーションでドイツ語が使用されている際に小数区切りをカンマに設定する場合は、次のコードを使用します。
<!-- Set the decimal separator to comma for German --> <!-- and period for all other languages --> <decimal-separator> #{view.locale.language=='de' ? ',' : '.'} </decimal-separator>
ADF FacesおよびMyFaces Trinidadは、デフォルトでは、ローカライズされたテキストに使用されているのと同じロケール(デフォルトではブラウザのロケール)で、日付(週の最初の曜日も)と数値を書式設定します。ただし、その他のロケールで日付と数値を書式設定する場合は、IANA形式のコード(ja、fr-CAなど)を値とする<formatting-locale>
要素を使用できます。この要素の内容は、IANA文字列を指すEL式またはjava.util.Locale
オブジェクトです。
ADF Facesで使用される出力モードを変更するには、次のいずれかの値を使用して<output-mode>
要素を設定します。
default
: デフォルト・ページ出力モード(通常、表示)。
printable
: 印刷可能ページに適した出力モード。
email
: ページのコンテンツを電子メールするのに適した出力モード。
ADF Facesのデフォルトでは、アクティブなPageFlowScope
インスタンスの最大数が常に15に設定されます。この数を変更するには、<page-flow-scope-lifetime>
要素を使用します。その他の要素とは違い、静的な値を使用する必要があり、EL式はサポートされていません。
ファイルのアップロード・パラメータはweb.xml
に構成できますが、trinidad-config.xml
にファイルのアップロード・パラメータを構成すると、値の設定を変更するために実行時の検証が可能なEL式がサポートされるという利点があります。次の要素がサポートされています。
<uploaded-file-processor>
: このパラメータは、org.apache.myfaces.trinidad.webapp.UploadedFileProcessor
インスタンスを実装するクラスの名前にする必要がありますが、このインスタンスにより、個々のアップロード・ファイルが着信リクエストから取得される際に処理され、そのコンテンツを残りのリクエストで使用できるようになります。ほとんどの開発者とっては、デフォルトのUploadedFileProcessor
で十分ですが、大規模ファイルのアップロードをサポートする必要のあるアプリケーションでは、リクエスト中にApache Trinidadで一時記憶域を処理するかわりに、ファイルをただちに最終的な宛先に格納することでパフォーマンスが向上します。
<uploaded-file-max-memory>
: ディスクへのデータの書込みが開始されるまでに、ファイルのアップロード・プロセス中に使用されるメモリーの最大量を設定するために使用します。この設定は、web.xml
のorg.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY
の設定を直接オーバーライドします。この値は、ハードコードすることも、Long
オブジェクトを戻すEL式を使用して明示的に構成することも可能です。
<uploaded-file-max-disk-space>
: EOFException
がスローされるまでに、アップロード・ファイルが使用できるディスク領域の最大量を設定するために使用します。この設定は、web.xml
のorg.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE
の設定を直接オーバーライドします。この値は、ハードコードすることも、Long
オブジェクトを戻すEL式を使用して明示的に構成することも可能です。
<uploaded-file-max-disk-space>
: アップロード・ファイルが格納されるデフォルトの場所を変更するために使用します。この設定は、web.xml
のorg.apache.myfaces.trinidad.UPLOAD_TEMP_DIR
の設定を直接オーバーライドします。この値は、ハードコードすることも、String
オブジェクトを戻すEL式を使用して明示的に構成することも可能です。
大半のアプリケーションでは、ADF Facesで用意されているデフォルトのUploadedFileProcessor
インスタンスを置き換える必要はありません。しかし、アプリケーションで非常に大きなファイルのアップロードをサポートする必要がある場合、またはファイルのアップロードに大きく依存する場合、デフォルト・プロセッサをカスタムUploadedFileProcessor
実装で置き換えることができます。
たとえば、ADF Facesでリクエスト時に一時格納を処理するかわりに、最終的な格納場所にファイルを即座に格納する実装を使用することにより、パフォーマンスを向上させることができます。デフォルト・プロセッサを置き換えるには、次のコードに示すように、<uploaded-file-processor>
要素を使用してカスタム実装を指定します。
<uploaded-file-processor> com.mycompany.faces.myUploadedFileProcessor </uploaded-file-processor>
ADF Facesのバリデータとコンバータでは、サーバー側の検証および変換と同様に、クライアント側の検証および変換がサポートされます。ADF Facesのクライアント側のバリデータおよびコンバータは、サーバー側のバリデータおよびコンバータと同じように動作しますが、クライアントではJavaScriptが使用されます。
JavaScript対応のバリデータとコンバータは、フォームの送信時にクライアントで実行されるため、サーバーへのラウンドトリップなしにエラーが捕捉されます。
リッチ・クライアント版のADF Facesでは、<client-validation-disabled>
構成要素はサポートされていません。つまり、ADF Facesアプリケーションでは、クライアント側検証と変換を無効にできません。
Trinidad構成オプションの一部は、システム・プロパティによって設定されます。高可用性テストをサポートするには、org.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATION
を使用します。システム・プロパティで、次のものを含む、大/小文字が区別されないカンマ区切りの一連の値を渡します。
NONE
: 状態のシリアライズ・チェックは実行されません(デフォルト)。
ALL
: 使用可能なすべてのテストを実行します(NONE
が優先されるため、NONEも指定されている場合は除きます)。
SESSION
: シリアライズ可能なオブジェクトのみがセッション・マップに配置されていることをテストするために、ExternalContextにより戻されたセッション・マップをラップし、オブジェクトがシリアライズ可能でない場合はCastCastExceptionをスローします。
TREE
: 状態保存中にコンポーネントの状態のシリアライズを積極的に試行し、シリアライズに失敗した場合は例外をスローします。
COMPONENT
: 問題のあるコンポーネント(遅い)を識別するために、状態保存中に、各コンポーネント・サブツリーの状態のシリアライズを積極的に試行します。
PROPERTY
: 問題のあるプロパティ(遅い)を識別するために、状態保存中に、各プロパティ値のシリアライズを積極的に試行します。
たとえば、セッションとJSFの状態がシリアライズ可能な場合は、システム・プロパティを次のように設定することで、テスターが検証を開始します。
-Dorg.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATION=session,tree
JSFの状態のシリアライズが検出された場合は、次のように、コンポーネントとプロパティのフラグが有効化された状態でテストが再実行されます。
-Dorg.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATION=all
JDeveloperでは、ADF Facesコンポーネントを使用してJSFページを作成する場合、blafplus-rich
スキン・ファミリがデフォルトで使用されます。A.6.1項「trinidad-config.xmlでのADF Faces機能の構成方法」で説明されているように、スキン・ファミリは、trinidad-config.xml
ファイルに構成されています。アプリケーションでカスタム・スキンを使用する場合は、アプリケーションへのカスタム・スキンの登録に使用するtrinidad-skins.xml
ファイルを作成します。
カスタム・スキンの作成の詳細は、第28章「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。
ADF Facesでは、EL暗黙オブジェクトrequestContext
を使用して、trinidad-config.xml
ファイルで定義されている構成プロパティから値を取得できます。requestContext
暗黙オブジェクトはorg.apache.myfaces.trinidad.context.RequestContext
クラスのインスタンスで、java.util.Map
タイプのいくつかのプロパティを公開して、JSF EL式によるコンテキスト・オブジェクト・プロパティ値の取得を可能にします。
たとえば、EL式#{requestContext}
はRequestContext
オブジェクト自体を返し、EL式#{requestContext.skinFamily}
は、<skin-family>
要素の値をtrinidad-config.xml
ファイルから返します。
EL式を使用して、コンポーネント属性値をrequestContext
暗黙オブジェクトのプロパティにバインドすることもできます。たとえば、次のEL式では、<currency-code>
プロパティがJSF ConvertNumber
コンポーネントのcurrencyCode
属性値にバインドされています。
<af:outputText> <f:convertNumber currencyCode="#{requestContext.currencyCode}"/> </af:outputText>
次に示す、requestContext
暗黙的オブジェクト・プロパティを使用できます。
requestContext.accessibilityMode
: <accessibility-mode>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.agent
: リクエストを行っているクライアント・エージェントを示し、レンダリングされた出力を表示するオブジェクトを返します。agent
オブジェクトのプロパティは次のとおりです。
agentName
: エージェント・ブラウザの正規の名前(gecko
、ie
など)。
agentVersion
: エージェント・ブラウザのバージョン番号。
capabilities
: 現在のクライアント・リクエストに対する機能名(高さ、幅など)とその値をマップします。
hardwareMakeModel
: ハードウェア・メーカーとモデルの正規の名前(nokia6600
、sonyericssonP900
など)。
platformName
: プラットフォームの正規の名前(ppc
、windows
、mac
など)。
platformVersion
: プラットフォームのバージョン番号。
type
: エージェント・タイプ(desktop
、pda
、phone
など)。
requestContext.clientValidationDisabled
: <client-validation-disabled>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.colorPalette
: カラー・パレット名をキーとし、カラー・パレットを結果として返すMapを返します。各カラー・パレットは、java.awt.Color
オブジェクトの配列です。4つの標準カラー・パレットへのアクセスを提供します。
web216
: 216のWebセーフ・カラー
default49
: 全透明のエントリを1つ含む49色のパレット
opaque40
: 全透明のエントリを含まない49色のパレット
default80
: 全透明のエントリを1つ含む80色のパレット
requestContext.currencyCode
: <currency-code>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.debugOutput
: <debug-output>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.decimalSeparator
: <decimal-separator>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.formatter
: 再帰的Map
構造を使用してメッセージを書式設定するMap
オブジェクトを返します。最初のキーはメッセージの書式設定マスクで、2番目のキーはメッセージの最初のパラメータです。
requestContext.helpSystem
: ヘルプ・システム・プロパティをキーとして受け入れ、URLを結果として返すMap
オブジェクトを返します。たとえば、EL式#{requestContext.helpSystem['frontPage']}
は、ヘルプ・システムのフロント・ページへのURLを返します。trinidad-config.xml
ファイルに<oracle-help-servlet-url>
要素を構成してあることを前提とします。
requestContext.helpTopic
: トピック名をキーとして受け入れ、URLを結果として返すMap
オブジェクトを返します。たとえば、EL式#{requestContext.helpTopic['foo']}
は、ヘルプ・トピックfooへのURLを返します。trinidad-config.xml
ファイルに<oracle-help-servlet-url>
要素を構成してあることを前提とします。
requestContext.numberGroupingSeparator
: <number-grouping-separator>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.oracleHelpServletUrl
: <oracle-help-servlet-url>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.outputMode
: <output-mode>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.pageFlowScope
: pageFlowScope
オブジェクトでのオブジェクトのマップを返します。
requestContext.rightToLeft
: <right-to-left>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.skinFamily
: <skin-family>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.timeZone
: <time-zone>
要素の値をtrinidad-config.xml
ファイルから返します。
requestContext.twoDigitYearStart
: <two-digit-year-start>
要素の値をtrinidad-config.xml
ファイルから返します。
プロパティの完全なリストは、org.apache.myfaces.trinidad.context.RequestContext
のJavadoc
を参照してください。
注意: リクエストごとに、 構成プロパティをプログラムで取得するには、次のコードに示すように、まず、静的 RequestContext context = RequestContext.getCurrentInstance(); // Get the time-zone property TimeZone zone = context.getTimeZone(); // Get the right-to-left property if (context.isRightToLeft()) { . . . } |
『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』のOracle Application Development Frameworkのパフォーマンス・チューニングに関する項には、特定の構成オプションに関連するパフォーマンスのヒントに加え、パフォーマンス・チューニングに関する詳細も記載されています。