1

Eclipse SDK を使用して単純な aws Web プロジェクトを作成しました。セッションがスティッキーではなく、ロードバランサーがインスタンスを追加または削除しても持続できるように、dynamo db を使用してセッション管理をチェックしました。

このプロジェクトには単純なオブジェクトがあります

package com.ns.ts.dto;

java.io.Serializable をインポートします。

public class User は 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;
    }

}

また、setUser (いくつかのパラメータを取り、いくつかの値でセッション内のユーザーを設定する) と getUser (セッションからのユーザー値を表示する) の 2 つのサーブレットがあります。

プロジェクトをデプロイしましたが、すべて問題ないようです。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 に答える