使用弹簧的RMI。使用object作为参数在服务器中执行方法

时间:2014-12-19 11:31:34

标签: rmi

我正在尝试使用RMI从客户端到服务器执行方法。 只要参数是String,它就会被正确执行。如果我使用object作为方法参数。

我遇到以下异常:

java.rmi.UnmarshalException:错误解组返回;嵌套异常是:     java.lang.ClassNotFoundException:org.eclipse.persistence.exceptions.DatabaseException(没有安全管理器:禁用RMI类加载器)

服务器配置:

@Bean
public RmiServiceExporter getUserService() {
    RmiServiceExporter exporter = new RmiServiceExporter();
    exporter.setService(userService);
    exporter.setServiceName("UserService");
    exporter.setServiceInterface(UserService.class);
    exporter.setRegistryPort(1192);
    exporter.setReplaceExistingBinding(true);
    return exporter;
}

客户端配置:

public @Bean RmiProxyFactoryBean getUserService() {
    RmiProxyFactoryBean rmi = new RmiProxyFactoryBean();
    rmi.setServiceInterface(UserService.class);
    rmi.setServiceUrl("rmi://localhost:1192/UserService");
    return rmi;
}

测试代码:

User user = userService.getUser(String userName);

完美无缺。

userService.save(user);

保存用户会引发RMI异常。

我确保服务器和客户端中User对象的包名称相同。我仍然得到例外。 我错过了任何配置吗?如何使RMI服务器加载其他类?

0 个答案:

没有答案