java.rmi.UnmarshalException:无法识别的方法哈希:远程对象不支持的方法
java.rmi.UnmarshalException: unrecognized method hash: method not supported by remote object
我有两个 Web 应用程序,第一个 RMIServer 包含以下内容
public interface EasyPDFGeneratorRemoteInterface extends Remote {
public File generatePDFAmin(File sourceFile) throws RemoteException ;
}
public class EasyPDFGenerator extends UnicastRemoteObject
implements EasyPDFGeneratorRemoteInterface {
public File generatePDFAmin(File sourceFile) {
//implementation details....
}
然后在注册表中注册了一个 EasyPDFGenerator 类型的对象。
第二个包含
public interface EasyPDFGeneratorRemoteInterface extends Remote {
public File generatePDFAmin(File sourceFile) throws RemoteException ;
}
class test {
private File generatePDF(File file) {
File pdfFile = null;
try {
EasyPDFGeneratorRemoteInterface easyPDFGenerator = getRemoteEasyPDFGenerator();// get the remote object.
easyPDFGenerator.getClass.getMethods();// the array contains the method generatePDFAmin.
pdfFile = easyPDFGenerator.generatePDFAmin(file);// throws the exception.
} catch (RemoteException ex) {
}
}
}
我不确定是什么导致了问题,因为我正在获取远程对象,并且它确实包含调用时抛出 UnmarshalException 的方法。
您更改了远程接口定义,但没有重新部署所有受影响的 .class 文件。如果您使用的是生成的存根,则您也没有重新生成它。
我有两个 Web 应用程序,第一个 RMIServer 包含以下内容
public interface EasyPDFGeneratorRemoteInterface extends Remote {
public File generatePDFAmin(File sourceFile) throws RemoteException ;
}
public class EasyPDFGenerator extends UnicastRemoteObject
implements EasyPDFGeneratorRemoteInterface {
public File generatePDFAmin(File sourceFile) {
//implementation details....
}
然后在注册表中注册了一个 EasyPDFGenerator 类型的对象。
第二个包含
public interface EasyPDFGeneratorRemoteInterface extends Remote {
public File generatePDFAmin(File sourceFile) throws RemoteException ;
}
class test {
private File generatePDF(File file) {
File pdfFile = null;
try {
EasyPDFGeneratorRemoteInterface easyPDFGenerator = getRemoteEasyPDFGenerator();// get the remote object.
easyPDFGenerator.getClass.getMethods();// the array contains the method generatePDFAmin.
pdfFile = easyPDFGenerator.generatePDFAmin(file);// throws the exception.
} catch (RemoteException ex) {
}
}
}
我不确定是什么导致了问题,因为我正在获取远程对象,并且它确实包含调用时抛出 UnmarshalException 的方法。
您更改了远程接口定义,但没有重新部署所有受影响的 .class 文件。如果您使用的是生成的存根,则您也没有重新生成它。