【问题标题】:Spring 3.0 RmiProxyFactoryBean: how to change serviceUrl at runtime?Spring 3.0 RmiProxyFactoryBean:如何在运行时更改 serviceUrl?
【发布时间】:2012-05-08 17:49:45
【问题描述】:

我有一个这样的 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:

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

当然,它返回一个“MyService”实例,而不是 RmiProxyFactoryBean。

那么如何使用上面的 xml 定义更改“serviceUrl”参数而不手动实例化 RmiProxyFactoryBean?

【问题讨论】:

  • 如果你想这样做,那么手动创建和配置RmiProxyFactoryBean 是最好的方法。
  • @skaffman 使用 new 作品手动创建它。但是由于无法访问 cached 旧端点,再次使用新端点调用 new 会导致连接异常;它不会更新以使用新端点,即使我们使用 new 然后在 RmiProxyFactoryBean 上调用 afterPropertiesSet() 也是如此。

标签: spring javabeans rmi


【解决方案1】:

要获取FactoryBean 实例而不是工厂创建的bean,请使用BeanFactory.FACTORY_BEAN_PREFIX。即

RmiProxyFactoryBean rpfb = (RmiProxyFactoryBean) contex.getBean("&amp;myService");

【讨论】:

  • 太棒了!这正是我想要的!然后 rpfb.setServiceUrl(...) 和 rpfb.afterPropertiesSet();做剩下的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 2023-01-24
  • 2017-10-15
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多