メタデータの末尾に移動
メタデータの先頭に移動

MyFaces Core 2.0.2 (または 1.2.10) 以降では、ELResolver の定義済みの順序を変更することができjます。

JSF 2.0 仕様で定義されている標準の順序は次のとおりです。

  1. faces.ImplicitObjectELResolverForFaces
  2. faces.CompositeComponentAttributesELResolver
  3. el.CompositeELResolver (faces-config および Application.addELResolver() からの ELResolver)
  4. faces.ManagedBeanELResolver
  5. faces.ResourceELResolver
  6. el.ResourceBundleELResolver
  7. faces.ResourceBundleELResolver
  8. el.MapELResolver
  9. el.ListELResolver
  10. el.ArrayELResolver
  11. el.BeanELResolver
  12. faces.ScopedAttributeELResolver

この順序はあらゆるケースで適切に動作しますが、必ずしも処理が最も高速なわけではありません。たとえば、CDI を使っている場合には、ごく簡単な ELExpression に対して何度も CDI-ELResolver が呼び出されます。これは、CDI-ELResolver が faces-config によってインストールされていて、上の順序の中でかなり上位にあるためです。

順序の変更

こうした定義済みの順序を変更するには、上に示した ELResolver のリストに適用される java.util.Comparator<ELResolver> の実装を提供します。

コンパレータは、web.xml 構成パラメータで次のように指定するだけでインストールできます。

<context-param>
    <param-name>org.apache.myfaces.EL_RESOLVER_COMPARATOR</param-name>
    <param-value>com.acme.el.MyELResolverComparator</param-value>
</context-param>

MyFaces Core に付属しているデフォルト実装

MyFaces Core には、あらかじめ java.util.Comparator<ELResolver> の 3 つの実装が用意されています。

  • org.apache.myfaces.el.unified.OpenWebBeansELResolverComparator - Apache OpenWebBeans 用に最適化されています。
  • org.apache.myfaces.el.unified.CustomFirstELResolverComparator - 独自の ELResolver を先頭に置きます。
  • org.apache.myfaces.el.unified.CustomLastELResolverComparator - 独自の ELResolver を最後に置きます。
Apache MyFaces と OpenWebBeans の最適化

MyFaces と OpenWebBeans の組み合わせを最適化するには、次の構成パラメータを設定します。

<context-param>
    <param-name>org.apache.myfaces.EL_RESOLVER_COMPARATOR</param-name>
    <param-value>org.apache.myfaces.el.unified.OpenWebBeansELResolverComparator</param-value>
</context-param>

これで、WebBeansELResolver は ELResolver チェインのほぼ最後に移動するので、ELExpression 評価の全体的なパフォーマンスが向上します。

リンク

関連する JIRA の課題: MYFACES-2873

Enter labels to add to this page:
Please wait 
Looking for a label?Just start typing.