1

我使用 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 的解决方法/解决方案?

4

2 回答 2

1

如果包含 User 类的 jar 位于WEB-INF/libwebapp 的目录下,请尝试将其移动到 Tomcat 的lib目录下。它可能需要与 Amazon jar 放在一起才能使类加载正常工作。

于 2013-11-08T15:46:39.977 回答
0

有一个更新,这个问题似乎已经解决了。

https://github.com/aws/aws-dynamodb-session-tomcat/issues/3

于 2013-11-25T14:17:30.547 回答