ektorp couchdb消耗了IllegalStateException内容

时间:2012-03-22 22:41:50

标签: java couchdb illegalstateexception ektorp

自从我使用Java以来​​,已经有一段时间了。我正在将ektorp couchdb集成添加到我正在处理的事情中。但是我遇到了内容消耗异常。

有问题的程序使用twitter4j,我正在获取我的状态并将它们写入couchdb实例。

public void putTweet(Status status)
{
    Map<String, Object> newTweetDoc = new HashMap<String, Object>();
    String docname = status.getUser().getName() + " "
            + status.getCreatedAt().toString();
    newTweetDoc.put("_id", docname);
    newTweetDoc.put("User", status.getUser().getName());
    newTweetDoc.put("Contents", status.getText());
    newTweetDoc.put("Created", status.getCreatedAt().toString());
    newTweetDoc.put("RetweetCount", status.getRetweetCount());
    UserMentionEntity[] mentions = status.getUserMentionEntities();
    Map<String, HashMap<String, String>> formattedMentions = formatMentions(mentions);
    newTweetDoc.put("Mentions", formattedMentions);
    db.addToBulkBuffer(newTweetDoc);
}

起初我也尝试过db.create(newTweetDoc)。每次尝试时都需要重新创建couchdbConnector吗?

db是一个全局CouchDbConnector:     public CouchDbConnector db = null;

public CouchTwitter()
{
    //create the db connection etc
}

导致错误的是db.create(doc)或flushBulkBuffer。这是堆栈跟踪:

Exception in thread "main" java.lang.IllegalStateException: Content has been consumed
at org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)
at org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:88)
at org.ektorp.http.StdHttpResponse.releaseConnection(StdHttpResponse.java:82)
at org.ektorp.http.RestTemplate.handleResponse(RestTemplate.java:111)
at org.ektorp.http.RestTemplate.post(RestTemplate.java:66)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:638)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:596)
at org.ektorp.impl.StdCouchDbConnector.flushBulkBuffer(StdCouchDbConnector.java:617)

我在上面看到两个单独的Entity类都调用.getContent(),我最近一直在玩我的引用库,它有可能它调用一个旧的apache Http lib以及当前的吗?

1 个答案:

答案 0 :(得分:0)

CouchDbConnector是线程安全的,因此您无需为每个操作重新创建它。

我从未遇到过您的问题,您的用例非常简单,保存基本文档应该没有任何问题。

验证httpclient-4.1.1或更高版本是否在类路径中。