SeamFramework.orgCommunity Documentation

第36章 パフォーマンスチューニング

36.1. インタセプターの迂回

この章は Seam アプリケーションから最善のパフォーマンスを引き出すためのコツを一箇所にドキュメント化したものです。

JSF dataTable や (ui:repeat のような)他の繰り返し制御で見られるような繰り返し参照される値バインディングが原因となって、完全なインタセプタスタックが Seam コンポーネントの呼び出しのたびに呼び出されます。この効果として、パフォーマンスへ大きな影響が及ぶという結果になります。特に、これはそのコンポーネントへのアクセスが何回も行われるときに顕著です。呼び出されようとしているSeam コンポーネントのインタセプタスタックを無効にすることでかなりパフォーマンスが向上させることが可能です。コンポーネントのインタセプターを無効にするには、@BypassInterceptors アノテーションをコンポーネントクラスに付加します。

次のコードはインタセプターを無効にした Seam コンポーネントの例です。

@Name("foo")
@Scope(EVENT)
@BypassInterceptors
public class Foo
{
   public String getRowActions()
   {
     // Role-based security check performed inline instead of using @Restrict or other security annotation
     Identity.instance().checkRole("user");
     
     // Inline code to lookup component instead of using @In
     Bar bar = (Bar) Component.getInstance("bar");
   
     String actions;   
     // some code here that does something     
     return actions;
   }
}