3

私は Amazon SimpleDB を使用しており、次のチュートリアルを使用して DB の作成を試みています。基本的に、エラー、つまりエラーが発生しました: java.lang.String は org.apache.http.HttpHost にキャストできません。完全なスタック トレースは次のとおりです。

エラーが発生しました: java.lang.String は org.apache.http.HttpHost にキャストできません java.lang.ClassCastException: java.lang.String は org.apache.http.impl で org.apache.http.HttpHost にキャストできません。 client.DefaultRequestDirector.execute(DefaultRequestDirector.java:416) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient. java:805) org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) で com.xerox.amazonws.common.AWSQueryConnection.makeRequest(AWSQueryConnection.java:474) で com.xerox.amazonws .sdb.SimpleDB.makeRequestInt(SimpleDB.java:231) com.xerox.amazonws.sdb.SimpleDB.createDomain(SimpleDB.java:155) で com.amazonsimpledb.SDBexample1.main(SDBexample1.java:19) で

私のコードは次のとおりです (AWS アクセス ID と秘密鍵を実際の値に置き換えたことに注意してください)。

public static void main(String[] args) {

     String awsAccessId = "My aws access id";
     String awsSecretKey = "my aws secret key";

     SimpleDB sdb = new SimpleDB(awsAccessId, awsSecretKey, true);

     try {
        Domain domain = sdb.createDomain("cars");

        System.out.println(domain);

    } catch (com.xerox.amazonws.sdb.SDBException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

上記のエラーが発生する理由についてのアイデア。

助けていただければ幸いです。

4

2 に答える 2

7

あなたはTypicaクライアント ライブラリを使用しているようですが、これは 2011 年半ばからほとんどメンテナンスされていません。たとえば、まれなコミット着実に成長している未解決の問題を参照してください。最新のものは実際にはまさにあなたのものであるように見えます。ClassCastException using Apache HttpClient 4.2 を参照してください。

  • レポーターによると、いったん Apache HttpClient 4.1 にダウングレードすると機能するように見えるため、最終的には一時的な回避策になる可能性があります。

いずれにせよ、公式のAWS SDK for Java (または他の言語のSDKのいずれか) に切り替えることを強くお勧めします。これは、通常の方法でサポートおよび維持されるだけでなく、すべての AWS API の変更を綿密に追跡します (確かに、これはこれはAmazon SimpleDBにとって非常に重要であり、これは基本的に技術的に凍結されていますが、後で大量のAWS 製品とサービスを使用する方がはるかに簡単になります)。

SDK には、SimpleDB 用のサンプルの中に、いくつかのサンプル (Eclipse Toolkit ウィザードからも利用可能) が含まれています。例に関する要約されたコードの抜粋を以下に示します。

BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials(
    awsAccessId, awsSecretKey);
AmazonSimpleDB sdb = new AmazonSimpleDBClient(basicAWSCredentials);
Region usWest2 = Region.getRegion(Regions.US_WEST_2);
sdb.setRegion(usWest2);

try {
    // Create a domain
    String myDomain = "MyStore";
    System.out.println("Creating domain called " + myDomain + ".\n");
    sdb.createDomain(new CreateDomainRequest(myDomain));

    // ...
    // Delete a domain
    System.out.println("Deleting " + myDomain + " domain.\n");
    sdb.deleteDomain(new DeleteDomainRequest(myDomain));
} catch (AmazonServiceException ase) {
    // ...
} catch (AmazonClientException ace) {
    // ...
}
于 2013-04-04T15:26:06.367 に答える