我正在尝试使用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服务器加载其他类?