gpt4 book ai didi

java - 从 MyBatis 3/Java 上的缓存中反序列化对象时出现问题

转载 作者:行者123 更新时间:2023-11-29 09:23:10 25 4
gpt4 key购买 nike

所以我正在使用 MySQL/MyBatis3/Tomcat 进行一个副项目。我目前正在致力于在 MyBatis 中打开缓存。当我第一次尝试打开缓存时,由于我的对象没有实现 Serializable 而出现异常。因此,在使用我试图缓存的对象实现 Serializable 之后;它似乎可以很好地缓存。

但是;当我在相同情况下第二次访问我的 servlet 时,对象映射器尝试从缓存中反序列化我的对象,我得到以下堆栈跟踪:

### Error querying database.  Cause: org.apache.ibatis.cache.CacheException: Error deserializing object.  Cause: java.lang.ClassNotFoundException: my.package.MyClass
### Cause: org.apache.ibatis.cache.CacheException: Error deserializing object. Cause: java.lang.ClassNotFoundException: my.package.MyClass
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:77)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)
at org.apache.ibatis.binding.MapperMethod.executeForList(MapperMethod.java:85)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:65)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:38)
at $Proxy5.selectAllArgs(Unknown Source)

我不明白的另一件事是:

Serializable result;
try {
ByteArrayInputStream bis = new ByteArrayInputStream((byte[]) value);
ObjectInputStream ois = new ObjectInputStream(bis);

// LINE THROWING EXCEPTION IN org.apache.ibatis.cache.decorators.SerializedCache
result = (Serializable) ois.readObject();
// -- -----------------------------------

ois.close();
} catch (Exception e) {
throw new CacheException("Error deserializing object. Cause: " + e, e);
}
return result;

为什么它甚至试图加载类开始?它只需要转换为 Serializable。值得注意的是,当我没有打开缓存时;一切都按预期工作。

最佳答案

基本上,发生这种情况的原因是因为我在 Eclipse 中的项目设置不正确,这导致某些类在我的服务器启动时不可用。基本上,我所做的就是将构建输出目录从“workspace/project/build”更改为“workspace/project/WebContent/WEB-INF/build”。我现在要阅读更多有关正确部署 servlet 的内容....

关于java - 从 MyBatis 3/Java 上的缓存中反序列化对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com