加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – 在Amazon SimpleDB中创建域

发布时间:2020-12-15 04:08:56 所属栏目:Java 来源:网络整理
导读:我正在使用Amazon SimpleDB并尝试使用以下教程创建数据库.基本上它会抛出一个错误,即出现错误: java.lang.String无法强制转换为org.apache.http.HttpHost.完整的堆栈跟踪如下: Error occured: java.lang.String cannot be cast to org.apache.http.HttpHos
我正在使用Amazon SimpleDB并尝试使用以下教程创建数据库.基本上它会抛出一个错误,即出现错误: java.lang.String无法强制转换为org.apache.http.HttpHost.完整的堆栈跟踪如下:

Error occured: java.lang.String cannot be cast to org.apache.http.HttpHost
java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.http.HttpHost
at org.apache.http.impl.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)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at com.xerox.amazonws.common.AWSQueryConnection.makeRequest(AWSQueryConnection.java:474)
at com.xerox.amazonws.sdb.SimpleDB.makeRequestInt(SimpleDB.java:231)
at com.xerox.amazonws.sdb.SimpleDB.createDomain(SimpleDB.java:155)
at 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();
    }
}

关于为什么会出现上述错误的任何想法.

我感谢任何帮助.

解决方法

您似乎正在使用 Typica客户端库,自2011年中期以来几乎没有维护,例如,rare commmits和 steady growing unresolved issues,其中最新的一个看起来完全属于你的,见 ClassCastException using Apache HttpClient 4.2:

>根据记者的说法,一旦我们降级回Apache HttpClient 4.1,事情似乎就会起作用,所以这可能是最终的临时解决方法.

无论哪种方式,我强烈建议切换到官方AWS SDK for Java(或其他语言SDKs),这不仅支持和维护常规方式,而且还密切跟踪所有AWS API更改(诚然,这不是那么关键对于Amazon SimpleDB来说,这基本上是技术明智的冷冻,但是你可以更轻松地使用AWS Products & Services以后的过多时间.

>此外,如果您使用的是IDE,您可以从AWS Toolkit for Eclipse中受益.

SDK包含一些示例(也可通过Eclipse Toolkit向导获得),其中包括SimpleDB – 这里是关于您的示例的精简代码摘录:

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) {
    // ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读