Estoy usando Spring para manejar llamadas RMI a algún servidor remoto. Es sencillo de construir un contexto de aplicación y obtener el grano para invocaciones remotas desde el cliente de:Pasando propiedades a un contexto Spring
ApplicationContext context = new ApplicationContext("classpath:context.xml");
MyService myService = (MyService) context.getBean("myService ");
Sin embargo no ver una forma sencilla de pasar propiedades en la configuración. Por ejemplo, si deseo determinar el nombre de host para el servidor remoto en tiempo de ejecución dentro del cliente.
Me ideal sería tener una entrada en el contexto de primavera como esta:
<bean id="myService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://${webServer.host}:80/MyService"/>
<property name="serviceInterface" value="com.foo.MyService"/>
</bean>
y pasar las propiedades con el contexto desde el cliente como parámetro.
Puedo usar PropertyPlaceholderConfigurer en el contexto para sustituir estas propiedades, pero hasta donde puedo decir esto solo funciona para las propiedades leídas de un archivo.
Tengo una implementación que aborda esto (agregada como una respuesta) pero estoy buscando una implementación estándar de Spring para evitar hacerla mía. ¿Hay otro configurador de Spring (o cualquier otra cosa) para ayudar a inicializar la configuración o me conviene más mirar la configuración de java para lograr esto?
¿Dónde más se puede almacenar sus propiedades? –
el cliente puede conectarse a cualquier servidor, p. el usuario puede escribir el nombre de host en un campo de texto. Por lo tanto, no está determinado en el momento de la compilación. –