我使用 Eclipse sdk 创建了一个简单的 aws Web 项目。我使用 dynamo db 检查了会话管理,以便我的会话不粘,并且如果负载均衡器添加或删除实例,它们可以持续存在。
这个项目有一个简单的对象
package com.ns.ts.dto;
导入 java.io.Serializable;
公共类用户实现可序列化{
/**
*
*/
private static final long serialVersionUID = -7038692393544658830L;
private String user;
private String name;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
并且有两个 servlet,setUser(它接受一些参数并在会话中使用一些值设置用户)和 getUser(它显示会话中的用户值)
我部署了项目,一切似乎都很好。在 DynamoDB 中创建了一个表。
现在我调用 setUser。这会将会话中的对象 User 设置为一些值。
接下来,我调用 getUser 并显示会话中 User 对象的值。(好像会话还在EC2实例中)
我等待了一段时间,然后用一组不同的参数再次调用 setUser。我正在查看 DynamoDB 中的表以确保会话对象在表中(我通过该行的最后更新时间确认了这一点)
我等待了一段时间,一次又一次地调用getUser。
这会引发错误:
java.lang.ClassNotFoundException:com.ns.ts.dto.User
错误产生于
com.amazonaws.tomcatsessionmanager.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionStore.load
我认为当 jar 尝试从 dynampDB 反序列化会话对象并且它无法在 Tomcat 的共享库中找到我的自定义对象的类路径时会生成此错误。
有没有人遇到过这种情况?是否有在会话中使用自定义对象并将它们存储到 dynamoDB 的解决方法/解决方案?