【问题标题】:Spring RMI using annotations, Modifications possible only on client sideSpring RMI 使用注释,只能在客户端进行修改
【发布时间】:2019-01-12 01:02:30
【问题描述】:

我正在尝试使用 Spring 和 Dropwizard 将我的应用程序从基于 xml 和属性文件的配置转换为基于注释和基于 java 的配置。我尝试在我的应用程序中使用以下客户端代码引用Spring RMI Remoting Annotation Configuration,但它给出了一个类转换异常。

@Bean
public BarService createBarServiceLink() {
    RmiProxyFactoryBean rmiProxyFactoryBean = new RmiProxyFactoryBean();
    rmiProxyFactoryBean.setServiceUrl("rmi://localhost:5000/BarService");
    rmiProxyFactoryBean.setServiceInterface(BarService.class);
    rmiProxyFactoryBean.afterPropertiesSet();
    return (BarService) rmiProxyFactoryBean.getObject();
}

旧应用程序的 BarService 类没有扩展任何其他类,整个配置在 xmls 中完成,但它仍然有效。

我无法在服务端进行更改,因为它是一个不同的系统,只能在客户端进行更改。 这是可行的吗?如何在不触及服务端(其他系统代码)的情况下做到这一点。

【问题讨论】:

    标签: spring annotations rmi


    【解决方案1】:

    https://www.baeldung.com/spring-remoting-rmi 中查看您的退货必须是:

    @Bean
    public RmiProxyFactoryBean createBarServiceLink() {
        RmiProxyFactoryBean rmiProxyFactoryBean = new RmiProxyFactoryBean();
        rmiProxyFactoryBean.setServiceUrl("rmi://localhost:5000/BarService");
        rmiProxyFactoryBean.setServiceInterface(BarService.class);
        rmiProxyFactoryBean.afterPropertiesSet();
        return rmiProxyFactoryBean;
    }
    

    在 getBean() 上称为调用 BarService 的弹簧。例如:

    public static void main(String[] args) throws BookingException {
        BarService service = SpringApplication
          .run(RmiClient.class, args).getBean(BarService.class);
        // use service
    }
    

    这样您就不会在服务器端或客户端进行更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2021-08-26
      • 2021-10-24
      • 2011-03-27
      • 2013-12-09
      相关资源
      最近更新 更多