我正在尝试从我支持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从服务中获取数据并获得高于一切的效果
答案 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)
让您的客户端连接到此注册表。
问候 利昂