Topics
Enterprise Architecture
WebLogic Server 9.0におけるワークロード(作業負荷)管理
Pages:
1,
2,
3,
4,
5
自分のアプリケーション用にワークマネージャを設定する方法について説明する前に、デフォルトのコンフィグレーションが十分良くできていることを 知っておいてください。先に述べたように、各アプリケーションは、デフォルトのフェアシェアを持つ固有のワークマネージャを持ちます。これは、すべてのア プリケーションが同じ重要度で扱われるので、アプリケーションがスレッドを占有することはできないことを意味します。以下のような理由がある場合は、ワー クマネージャを設定して、デフォルト値をオーバーライドする要求に関連付けることができます。
ワークマネージャを設定する際のガイドラインを以下に示します。
weblogic-application.xmlで定義することにより、ワークマネージャにアプリケーションスコープを持たせることができます。ワークマネージャのコンフィグレーションをアプリケーションのそばに置いておくと、移植の際に役立ちます。
先に述べたように、ワークマネージャは、アプリケーションスコープを持たせるか、またはグローバルに定義できます。ワークマネージャからは、要求クラスや制約など独立に定義されたコンポーネントを名前で参照できます。名前解決は、以下のように処理されます。
ワークマネージャコンポーネントを参照する際に使われる名前は、デプロイメント記述子で定義されている名前です。JNDIの名前ではない点に注意してください。アプリケーション内に定義されるワークマネージャのコンフィグレーション例を以下に示します。
<weblogic-application>
...
<max-threads-constraint>
<name>MyConstraint</name>
<pool-name>MyDataSource</pool-name>
</max-threads-constraint>
...
<work-manager>
<name>MyAppScopedWorkManager-1</name>
<fair-share-request-class>
<name>high_fairshare</name>
<fair-share>80</fair-share>
</fair-share-request-class>
<max-threads-constraint-name>MyConstraint
</max-threads-constraint-name>
</work-manager>
<work-manager>
<name>MyAppScopedWorkManager-2</name>
<fair-share-request-class>
<name>high_fairshare</name>
<fair-share>20</fair-share>
</fair-share-request-class>
<max-threads-constraint-name>MyConstraint
</max-threads-constraint-name>
</work-manager>
...
</weblogic-application>
2つのワークマネージャが、どのようにして同じ最大スレッド制約を共有しているかに注目してください。最大スレッド制約は名前で参照されています。
ワークマネージャの設定について見てきましたので、ここからは、ワークマネージャを要求とリンクする方法について見ていきましょう。それには、ディ スパッチポリシーを定義します。サーブレットの場合は、dispatch-policy初期化パラメータを設定することによって、ディスパッチポリシーを 定義できます。EJBの場合は、以前のリリースでも存在していた
dispatch-policy要素を使わなければなりません。以前のリリースでは、ディスパッチポリシーは実行キューの名前を参照していました。WebLogic Server 9.0では、同じ
dispatch-policy要素を、ワークマネージャを参照するために使います。ディスパッチポリシーの解決は以下のように行われます。
dispatch-policy名を持つワークマネージャが、同じアプリケーション内に見つかった場合は、それが使われます。
web.xmlのサーブレット内でディスパッチポリシーを設定する方法を以下に示します。
<web-app>
<servlet>
<servlet-name>WorkServlet</servlet-name>
<servlet-class>workservlet.WorkServlet</servlet-class>
<init-param>
<param-name>wl-dispatch-policy</param-name>
<param-value>MyAppScopedWorkManager-1</param-value>
</init-param>
</servlet>
</web-app>
このコンフィグレーションは、
WorkServlet呼び出しすべてにおいて、
MyAppScopedWorkManager-1ワークマネージャを使用しなければならないことを意味しています。
weblogic-ejb-jar.xmlでの
dispatch-policy要素の使用例を以下に示します。
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>WorkEJB</ejb-name>
<jndi-name>WorkEJB</jndi-name>
<dispatch-policy>MyAppScopedWorkManager-2</dispatch-policy>
</weblogic-enterprise-bean>
...
</weblogic-ejb-jar>
上の2つの例では、
MyAppScopedWorkManager-1と
MyAppScopedWorkManager-2を使用しています。これらは、「WebLogicワークマネージャのコンフィグレーション」で説明したアプリケーションレベルで定義したワークマネージャです。