2012-03-22 13 views
0

私はJavaで特に例外を扱って以来、しばらくしてきました。私は作業中のものにektorp couchdbの統合を追加しています。しかし、私はコンテンツ消費の例外に遭遇している。ektorp couchdb IllegalStateExceptionコンテンツは消費されました

問題のプログラムは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) 

私はその2つの別々のエンティティクラス上に表示の両方().getContentを呼び出して、私は最近、私の参照されるライブラリで遊んでてきた、それはそのがHTTP古いApacheを呼び出すことは可能ですlibだけでなく、現在の?

答えて

0

CouchDbConnectorはスレッドセーフなので、操作ごとに再作成する必要はありません。

私はあなたの問題に遭遇したことはありません。ユースケースはかなりシンプルで、基本的な文書を保存する際に問題はありません。

httpclient-4.1.1以上がクラスパスに存在することを確認します。

+0

ご意見ありがとうございます。私は仕事から家に帰るときに二重チェックをしますが、httpclient-4.1.4とコアと他のコモンパッケージがかなり確実です。 – IainS

関連する問題