Sto utilizzando Spring per gestire le chiamate RMI su un server remoto. È semplice costruire un contesto applicativo ed ottenere il fagiolo di invocazioni remoti nel client:Passare le proprietà a un contesto Spring
ApplicationContext context = new ApplicationContext("classpath:context.xml");
MyService myService = (MyService) context.getBean("myService ");
Tuttavia non vedono un modo semplice per passare proprietà nella configurazione. Ad esempio se voglio determinare il nome host per il server remoto in fase di esecuzione all'interno del client.
avrei idealmente avere una voce nel contesto primavera come questo:
<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>
e passare le proprietà del contesto da parte del cliente come parametro.
Posso usare un PropertyPlaceholderConfigurer nel contesto per sostituire queste proprietà, ma per quanto posso dire questo funziona solo per le proprietà lette da un file.
Ho un'implementazione che risolve questo problema (aggiunta come risposta) ma sto cercando un'implementazione standard di Spring per evitare di far girare il mio. C'è un altro configuratore Spring (o qualsiasi altra cosa) per aiutare a inizializzare la configurazione o sto meglio guardando java config per raggiungere questo?
Dove altro si potrebbe memorizzare le proprietà? –
il client può connettersi a qualsiasi server, ad es. l'utente può digitare il nome host in un campo di testo. Quindi non è determinato al momento della compilazione. –