使用注释的Spring RMI,只能在客户端进行修改

时间:2018-08-04 09:50:03

标签: spring annotations rmi

我正在尝试使用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类,没有扩展任何其他类,并且整个配置都在xml中完成,但是仍然可以使用。

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

1 个答案:

答案 0 :(得分: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
}

通过这种方式,您无需在服务器或客户端进行更改。