29.2.3. HA HttpInvoker - クラスターされた RMI/HTTP トランスポート

RMI/HTTP 層は、クラスター環境で呼び出しのソフトウェアロードバランシングが可能となります。HTTP 呼び出しの HA 対応拡張が追加され、HA-RMI/JRMP クラスタリングからその機能の多くを借りることができます。
HA-RMI/HTTP を有効にするには、EJB コンテナーに対して呼び出しを設定する必要があります。これは、jboss.xml 記述子、あるいは standardjboss.xml 記述子で設定できます。例29.3「HA-RMI/HTTP に対する jboss.xml ステートレスセッション設定」 は、org.jboss.test.hello testsuite パッケージから抜粋したステートレスセッション設定例を示しています。

例29.3 HA-RMI/HTTP に対する jboss.xml ステートレスセッション設定

<jboss>
    <enterprise-beans>
        <session>
            <ejb-name>HelloWorldViaClusteredHTTP</ejb-name>
            <jndi-name>helloworld/HelloHA-HTTP</jndi-name>
            <invoker-bindings>
                <invoker>
                    <invoker-proxy-binding-name>
                        stateless-httpHA-invoker
                    </invoker-proxy-binding-name>
                </invoker>
            </invoker-bindings>
            <clustered>true</clustered>
        </session>
    </enterprise-beans>
    <invoker-proxy-bindings>
        <invoker-proxy-binding>
            <name>stateless-httpHA-invoker</name>
            <invoker-mbean>jboss:service=invoker,type=httpHA</invoker-mbean>
            <proxy-factory>org.jboss.proxy.ejb.ProxyFactoryHA</proxy-factory>
            <proxy-factory-config>
                <client-interceptors>
                    <home>
                        <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor>
                        <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
                        <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
                        <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
                    </home>
                    <bean>
                        <interceptor>
                            org.jboss.proxy.ejb.StatelessSessionInterceptor
                        </interceptor>
                        <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor>
                        <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor>
                        <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
                    </bean>
                </client-interceptors>
            </proxy-factory-config>
        </invoker-proxy-binding>
    </invoker-proxy-bindings>
</jboss>
stateless-httpHA-invoker invoker-proxy-binding は、jboss:service=invoker,type=httpHA 呼び出しサービスを参照しています。このサービスは、以下のように設定することができます。
<mbean code="org.jboss.invocation.http.server.HttpInvokerHA"
       name="jboss:service=invoker,type=httpHA">
    <!-- Use a URL of the form
         http://<hostname>:8080/invoker/EJBInvokerHAServlet
         where <hostname> is InetAddress.getHostname value on which the server
         is running.
    -->
    <attribute name="InvokerURLPrefix">http://</attribute>
    <attribute name="InvokerURLSuffix">:8080/invoker/EJBInvokerHAServlet</attribute>
    <attribute name="UseHostName">true</attribute>
</mbean>
呼び出しプロキシが使う URL は、クラスターノードでデプロイされているような、 EJBInvokerHAServlet マッピングです。クラスター全体の HttpInvokerHA インスタンスは、http URL 候補となるものを集め、クライアント側のプロキシが、フェールオーバーおよび/もしくはロードバランシングに利用できるようにしています。