Spring 構成でプレースホルダーを使用して、特定の値をプロパティ ファイルに移動できます。そのためには、まず、ファイルからプロパティを解決する Bean が必要です。
<!-- Read file that contains properties -->
<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:app.properties" />
</bean>
次にentityRmiServiceExporter
、そのファイルの値を使用するように Bean を変更できます。
<bean id="entityRmiServiceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="entityService"/>
<property name="service" ref="entityServiceImpl"/>
<property name="serviceInterface" value="IEntityService"/>
<property name="registryPort" value="1099"/>
<property name="registryHost" value="${rmi.endpoint}"/>
</bean>
そして、次のような行を含む app.properties ファイルが必要です。
rmi.endpoint=10.0.2.15
代替アプローチ
RmiServiceExporter Javadocによると、別のアプローチがあるかもしれません。この Javadoc は次のように述べています。
注: RMI は、完全修飾ホスト名を取得するために最善を尽くします。判別できない場合は、フォールバックして IP アドレスを使用します。ネットワーク構成によっては、IP がループバック アドレスに解決される場合があります。
-Djava.rmi.server.hostname=server.mycompany.com
起動時に JVM に渡すことで、マシンのホスト名を RMI に伝えることができます。
これは、Spring Bean を構成する必要がないことを意味します。代わりに、別のインターフェースで RMI インターフェースを公開するように JVM を構成します。あなたのマシンがインターネットに直接公開されている場合 (つまり、ファイアウォールやその間に何かが存在しない場合)、私はそうしません。マシンが会社のネットワーク内にある場合は、この方法で問題を解決することが許容されるか、むしろ望ましいことですらあるかもしれません。