Spring 3.0 RmiProxyFactoryBean:如何在运行时更改serviceUrl?

4

我有一个这样的bean定义:

    <bean id="myService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    <property name="serviceInterface" value="org.myapp.MyService"/>
    <property name="serviceUrl" value="rmi://localhost:1099/myService"/>
</bean>

我这样获取服务bean:

我这样获取服务bean:

    ApplicationContext context = new ClassPathXmlApplicationContext("classpath:rmi-client-config.xml");
    MyService myService = context.getBean("myService", MyService.class);

当然,它返回"MyService" impl的实例,而不是RmiProxyFactoryBean。那么我如何使用上面的xml定义来更改"serviceUrl"参数,而不是手动实例化RmiProxyFactoryBean呢?

如果您想这样做,那么手动创建和配置RmiProxyFactoryBean是最好的选择。 - skaffman
@skaffman 用 new 手动创建它是有效的。但是,使用新的端点再次调用 new 会导致连接异常,因为缓存的旧端点不可访问;即使我们在 RmiProxyFactoryBean 上使用 new 然后调用 **afterPropertiesSet()**,它也不会更新以使用新的端点。 - abdelrahman-sinno
1个回答

2

要获取工厂创建的FactoryBean实例而非普通的bean,请使用BeanFactory.FACTORY_BEAN_PREFIX,即:

RmiProxyFactoryBean rpfb = (RmiProxyFactoryBean) context.getBean("&myService");


太好了!这正是我在寻找的!然后 rpfb.setServiceUrl(...) 和 rpfb.afterPropertiesSet(); 就可以完成剩下的工作。谢谢! - Randomize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接