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 に保存するための回避策/解決策はありますか?