Serialization 序列化SerialVersionId问题

Serialization 序列化SerialVersionId问题,serialization,ejb,deserialization,remote-access,serialversionuid,Serialization,Ejb,Deserialization,Remote Access,Serialversionuid,Clinet在jvma中运行,服务器在jvmb中运行。 从客户端到服务器都有EJB调用 现在,我希望在客户端使用的两个对象中的任意一个 LoanDocument的数组 或 BusinessServicesException public interface LoanViewerServicesLocal extends EJBLocalObject { public LoanDocument[] getDocByLoanNumber (String loanNum) throws

Clinet在jvma中运行,服务器在jvmb中运行。 从客户端到服务器都有EJB调用

现在,我希望在客户端使用的两个对象中的任意一个

  • LoanDocument的数组

  • BusinessServicesException

    public interface LoanViewerServicesLocal extends EJBLocalObject {
       public LoanDocument[] getDocByLoanNumber (String loanNum)
        throws BusinessServicesException; 
    
    
    public interface LoanViewerServices extends EJBObject {
    
        public LoanDocument[] getDocByLoanNumber (String loanNum)
        throws RemoteException,BusinessServicesException; 
    
  • 现在
    BusinessServicesException
    扩展了
    CommonException
    <代码>公共异常
    扩展
    项目异常
    <代码>项目异常扩展
    异常

    我在所有3个异常类(客户端和服务器端)中指定了
    serialVersionUID
    1L
    ,以避免客户端出现反序列化问题

    否则我会被解雇的

    java.io.InvalidClassException: com.abc.common.ProjectException; local class incompatible: stream classdesc serialVersionUID = 354159461886461208, local class serialVersionUID = -5937350397277039691
    
    因此,在所有3个类中提到1L(serialVersionUID=1L)可以解决这个问题

    现在
    LoanDocument
    对象扩展了
    CommonDocumentObject
    ,但没有一个对象具有
    serialVersionUID
    或实现
    Serializable
    接口

    但是当我们在客户端成功地获得
    LoanDocument[]
    时,我没有因为反序列化而得到任何
    serialVersionUID
    相关的异常

    我测试了好几次,但对于
    LoanDocument
    CommonDocumentObject,我总是得到相同的
    serialVersionUID

    我在服务器和Clinet中使用了下面提到的代码,并且在两侧都得到了相同的
    serialVersionUID

    但在出现
    BusinessServicesException时总是不同。

    Class loanDocClass = LoanDocument.getClass();
    long uid = ObjectStreamClass.lookup(loanDocClass).getSerialVersionUID();
    
    当我们在客户端成功获得
    LoanDocument[]
    时,我不会因为反序列化而得到任何与serialVersionUID相关的异常

    因为在部署到服务器和部署到客户端之间,您没有对该类进行任何更改。在其他情况下,你有