SIP アプリケーション構成の設定
SIP アプリケーションの JSR 116 標準の 2.4 節には、同じ SIP 要求に対して複数のアプリケーションを起動できることが示されています。 この標準に準拠するようにアプリケーションを設定するプロセスは、アプリケーション構成と呼ばれています。
このタスクについて
アプリケーション構成では、 実装にカスケード・サービス・モデルを使用することが要求されます。カスケード・サービス・モデルでは、 トリガーが異なるホストで発生しているかのように、 同じホストでトリガーされるサービス・アプリケーションが順にトリガーされることが要求されます。したがって、応答は逆流し、 対応する要求の逆順にアプリケーションがヒットします。
SIP コンテナーは、最初の着信要求に対して、可能性のあるルールを順番に試行します。 コンテナーは、n 番目の一致を見つけると、対応するサーブレットを起動します。
サーブレットで要求のプロキシーが必要な場合、コンテナーは再度ルールをスキャンし、別の一致を探します。 コンテナーは、(n+1) 番目の一致が見つかると、対応するサーブレットを起動します。
前に起動されたサーブレットと同じアプリケーションのすべてのサーブレットは、マッチング・プロセスから除外されます。同じ SIP 要求に対してサーブレットが 2 回起動されることはありません。
load-on-startup 優先順位指定できます。 sip.xml の <load-on-startup> では、 サーブレットが始動時に初期化される順序を定義しています。 この値がゼロ未満の場合、マッチング・ルールと構成順序に従って、最初の要求がサーブレットに一致したときにそのサーブレットが初期化されます。 ゼロは、始動時の初期化順序に対する正当なウェイトです。 このタグが存在しない場合、またはこのタグに負の値が入っている場合は、 サーブレットは始動時には初期化されません。
また、web.xml の同じタグを手動で変更する場合は、 それに <load-on-startup> を追加する必要があります。 サーブレット (および siplet) をロードする WebContainer で、web.xml のみを調べます。SAR をデプロイする場合は、sip.xml のみを変更する必要があります。 web.xml は、デプロイメント後、正確に自動構成されます。
サーブレットの SIP デプロイメント記述子タグに埋め込まれている load-on-startup タグは、 アプリケーションがサーバーの始動時にロードされる順序を指示しています。 アプリケーションが、到着する新規メッセージを処理するルールに一致するアプリケーション構成チェーンのメンバーである場合に呼び出される順序を指示していません。
アプリケーションおよびそのモジュールの開始ウェイトは、deployment.xml ファイルで指定します。 モジュールが構成で要求を取り上げる順序は、初めにアプリケーションのウェイト、次にモジュールのウェイトで評価されます。 以下の手順を任意の順序で実行して、管理コンソールからアプリケーションのウェイトまたはモジュールのウェイトを指定することができます。
手順
- アプリケーション (EAR) のウェイトを指定するには、 と展開して、 始動順序を設定します。
- モジュール (WAR) のウェイトを指定するには、 と展開し、開始ウェイトを設定します。
- 変更されたアプリケーションを再始動します。
例
sip.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sip-app
PUBLIC "-//Java Community Process//DTD SIP Application 1.0//EN"
"http://www.jcp.org/dtd/sip-app_1_0.dtd">
<sip-app>
<display-name>SIPSampleProxy</display-name>
<servlet>
<servlet-name>SIPSampleProxy</servlet-name>
<servlet-class>sipes.test.container.proxy.SIPSampleProxy</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SIPSampleProxy</servlet-name>
<pattern>
<equal>
<var>request.uri.user</var>
<value>SIPSampleProxy</value>
</equal>
</pattern>
</servlet-mapping>
<proxy-config>
<sequential-search-timeout>1000</sequential-search-timeout>
</proxy-config>
<session-config>
<session-timeout>12</session-timeout>
</session-config>
</sip-app>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp">
<display-name>SIPSampleProxy</display-name>
<servlet>
<servlet-name>SIPSampleProxy</servlet-name>
<display-name>SIPSampleProxy</display-name>
<servlet-class>sipes.test.container.proxy.SIPSampleProxy</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SIPSampleProxy</servlet-name>
<url-pattern>/SIPSampleProxy</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
以下の例は、スタンドアロン・サーバー用です。
deployment.xml
<?xml version="1.0" encoding="UTF-8" ?>
- <appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi"
xmi:id="Deployment_1137951186883">
- <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1137951186883"
deploymentId="0" startingWeight="1" binariesURL="$(APP_INSTALL_ROOT)/OrangeNode08Cell/SipContainerTestSuite.ear"
useMetadataFromBinaries="false" enableDistribution="true" createMBeansForResources="true" reloadEnabled="false"
appContextIDForSecurity="href:OrangeNode08Cell/SipContainerTestSuite"
filePermission=".*\.dll=755#.*\.so=755#.*\.a=755#.*\.sl=755" allowDispatchRemoteInclude="false"
allowServiceRemoteInclude="false">
<targetMappings xmi:id="DeploymentTargetMapping_1137951186883" enable="true" target="ServerTarget_1137951186883" />
<classloader xmi:id="Classloader_1137951186883" mode="PARENT_FIRST" />
- <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1137951186883"
deploymentId="1" startingWeight="10000" uri="sipunit.war">
<targetMappings xmi:id="DeploymentTargetMapping_1137951186884" target="ServerTarget_1137951186883" />
<classloader xmi:id="Classloader_1137951186884" /> </modules>
<properties xmi:id="Property_1137951186883" name="validateinstall" value="warn" /> </deployedObject>
<deploymentTargets xmi:type="appdeployment:ServerTarget" xmi:id="ServerTarget_1137951186883"
name="server1" nodeName="OrangeNode10" /> </appdeployment:Deployment>