首页 > 解决方案 > Spring 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 类而不扩展任何其他类,并且整个配置是在 xmls 中完成的,但它仍然可以工作。

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

标签: springannotationsrmi

解决方案


请参阅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
}

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


推荐阅读