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 候補となるものを集め、クライアント側のプロキシが、フェールオーバーおよび/もしくはロードバランシングに利用できるようにしています。