Show Table of Contents
12.3. マルチホーム化されたサーバー
Remoting は複数のインターフェースにバインドされるサーバーを作成することができます。 このファシリティの適応例として、 1 つのサーバーをインターネットに面するインターフェースと LAN に面する別のインターフェースにバインドすることができます。 例えば、 前述の POJO 例に POJO を追加して (1) 変更することができます。
<bean name="homes1" class="java.lang.StringBuffer"> <constructor> <parameter class="java.lang.String"> <value-factory bean="ServiceBindingManager" method="getStringBinding"> <parameter>JBMConnector:bindingHome1</parameter> <parameter>${host}:${port}</parameter> </value-factory> </parameter> </constructor> </bean> <bean name="homes2" class="java.lang.StringBuffer"> <constructor factoryMethod="append"> <factory bean="homes1"/> <parameter> <value-factory bean="ServiceBindingManager" method="getStringBinding"> <parameter>JBMConnector:bindingHome2</parameter> <parameter>!${host}:${port}</parameter> </value-factory> </parameter> </constructor> </bean>
これにより、StringBuffer の値が 「external.acme.com:5555!internal.acme.com:4444」のようになります (JBMConnector:bindingHome1 and JBMConnector:bindingHome2 のServiceBindingManager 設定値による)。また、 「serverBindAddress」 パラメーターと 「serverBindPort」 パラメーターが次に置き換えられます (2)。
<entry> <key>homes</key> <value><value-factory bean="homes2" method="toString"/></value> </entry>
これにより、StringBuffer が文字列「external.acme.com:5555!internal.acme.com:4444」 に変換され、 JBMConnector に挿入されます。結果、 InvokerLocator は次のようになります。
bisocket://multihome/?homes=external.acme.com:5555!internal.acme.com: 4444&marshaller=org.jboss.jms.wireformat.JMSWireFormat& unmarshaller=org.jboss.jms.wireformat.JMSWireFormat