3

助けてください - 私のアプリケーションは今日まで問題なく動作していました。今日、「デシリアライズできませんでした」という例外が発生しました。java.io.eofException. そして時々、データを取得することができました。問題は断続的でした。ここで何が問題になる可能性がありますか?

@Entity
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class Filter {
private int id;
    private String name;
    private User user;
    private NameValue[][] filterMap;


    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @ManyToOne(
            targetEntity = User.class
    )
    @JoinColumn(name="userName")
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    @Lob
        public NameValue[][] getFilterMap() {
        return filterMap;
    }
    public void setFilterMap(NameValue[][] filterMap) {
        this.filterMap = filterMap;
    }
4

3 に答える 3

5

これはおそらく、オブジェクトをキャッシュできるため、ディスク (またはその他のストレージ) にオーバーフローするようにキャッシュを構成している必要があるために発生します。

この問題は、クラスをシリアライズまたはデシリアライズしようとしたときに、次の 1 つ以上が発生したときに発生します。

  1. クラスまたはいずれかのフィールド (User など) が Serializable を実装していません
  2. 最後のデプロイ以降にクラスが変更され、java が新しい serialVersionUID を生成します。Java が以前にディスク キャッシュにあったオブジェクトを読み込もうとすると、serialVersionUID が一致せず、エラーがスローされます。
  3. 別の JVM を使用しているため、別のserialVersionUID
于 2012-10-15T17:58:55.477 に答える