簡體   English   中英

使用dynamodb的tomcat會話管理器

[英]tomcat session manager using dynamodb

我正在嘗試對dynamoDB使用tomcat會話管理器。

我正在從該AWS指南http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-tomcat-session-manager.html中獲取參考。

他們在指南中提到了我們必須使用的

    <Context>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <Manager className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager"
         awsAccessKey="myAccessKey"
         awsSecretKey="mySecretKey"
         createIfNotExist="true" />
    </Context>

因此,如果我不提供任何目標區域,則默認情況下將選擇us-east-1(因為其在aws文檔中提到的.jar文件中進行了硬編碼)。 如果我指定任何區域,它將選擇該區域。 但是我在多個區域中都有我的應用程序,並且希望每個區域都有單獨的dynamo實例。 至於多個區域的會話ID並非唯一,因此我不能對所有區域都使用相同的dynamo實例。

如何做到,任何幫助將不勝感激。

最好創建多個DyanoDB客戶端,每個區域一個。 您應該使用一些config / prop文件,該文件包含不同的aws訪問密鑰,密鑰和配置,並基於它們在應用程序啟動時創建客戶端。 然后根據您的業務邏輯使用它。

例如: -我使用ProfileCredentialsProvider在我的應用程序,它使用多個dynamoDB客戶及以下配置文件。

# AWS DynamoDB setting
mumDynamoDB:
  # profile name of aws IAM role which has access to dynamoDB
  profileName: mumdynamoDBdev
  region: ap-south-1 
OrgonDynamoDB:
  # profile name of aws IAM role which has access to dynamoDB
  profileName: OrgdynamoDBdev
  region: us-west-2

在下面的代碼段中,根據區域和個人資料創建客戶端。

public static DynamoDB getDocClient(String profileName, String region) {
        // http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/creating-clients.html new way of
        // creating all the aws clients.
        // thread safe impl
        AmazonDynamoDB amazonDynamoDBClient = AmazonDynamoDBClientBuilder.standard()
                .withRegion(region)
                .withCredentials(new ProfileCredentialsProvider(profileName)).build();
        docClient = new DynamoDB(amazonDynamoDBClient);

        return docClient;
    } 

然后在應用程序中,根據您的要求,您可以使用適當的客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM