获取数据时出错使用RMI从服务到WEB应用程序

时间:2013-04-08 06:26:18

标签: java java-ee spring-mvc rmi

我正在尝试从我支持hibernate 4的服务中获取任务列表到支持hibernate 3的Web应用程序

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

             Services       ------------------>      WEB 
             (Hibernate 4)                           (Hibernate 3)

Web试图通过RMI从服务中获取数据并获得高于一切的效果

1 个答案:

答案 0 :(得分:0)

显然,您的客户端没有看到您服务中的课程。实现此目的的方法之一是拥有共享的rmi代码库。请考虑以下脚本将lib文件夹中的所有jar和dist文件夹中的主jar添加到rmi codebase中,并使它们对客户端可见:

#!/bin/bash
lib_path=lib
artefact=name-of-your.jar
for file in $(ls $lib_path); do
 lib=$lib:$lib_path/$file
 rmicodebase="$rmicodebase file:$PWD/$lib_path/$file"
done

lib=$lib:dist/$artefact:etc
rmicodebase="$rmicodebase file:$PWD/dist/$artefact"
CLASSPATH=classes:etc:$lib
echo CLASSPATH: $CLASSPATH
echo rmicodebase=$rmicodebase

java -Xmx64M -Xms64M -classpath $CLASSPATH -Djava.rmi.server.codebase="$rmicodebase" $*

我假设您在服务器的中央进程中有一个共享的rmi注册表。实现类可见性的另一种可能性是在服务器进程中运行单独的rmi注册表:

java.rmi.registry.LocateRegistry.createRegistry(port)

让您的客户端连接到此注册表。

问候 利昂