問題タブ [ektorp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ektorp sofadb IllegalStateException コンテンツの消費
Java、特に例外を扱ってからしばらく経ちました。私は、私が取り組んでいるものにektorpのcouchdb統合を追加している最中です。ただし、コンテンツ消費の例外が発生しています。
問題のプログラムはtwitter4jを使用しており、ステータスを取得してcouchdbインスタンスに書き込んでいます。
最初は db.create(newTweetDoc) も試しました。これを試すたびにcouchdbConnectorを再作成する必要がありますか?
db はグローバルな CouchDbConnector です: public CouchDbConnector db = null;
エラーが発生するのは db.create(doc) または flushBulkBuffer です。スタックトレースは次のとおりです。
上記のように、2 つの別個のエンティティ クラスが両方とも .getContent() を呼び出していることがわかります。最近、参照ライブラリをいじっていますが、古い apache Http ライブラリと現在のものを呼び出している可能性はありますか?
java - ジェネリッククラスの.class属性を取得します
(Ektorpライブラリの)コンストラクターを使用して次のクラスを拡張しようとしています。
これが私の実装です:
問題はOrder<MenuItem>.class部品にあります。Javaコンパイラは私にこう教えてくれます:
私はで試してみましたが(Order<MenuItem>).class、幸運はありませんでしたOrder.class。new Order<MenuItem>().getClass()
ジェネリッククラスの.class属性を取得するにはどうすればよいですか?
couchdb - ektorp/CouchDBはHashMapとアノテーションをミックスします
jcouchdbでは、BaseDocumentを拡張してから、透過的な方法で、アノテーションと宣言されていないフィールドを混在させていました。例:
そしてそれを使用します:
注釈を介して定義されたドキュメントフィールド(サイト)と定義されていないプロパティフィールド(説明)の両方を使用する場合、ドキュメントを保存すると両方がシリアル化されます。
半構造化されたドキュメントで作業できるので、これは私にとって便利です。
Ektorpで同じことをしようとすると、注釈を使用したドキュメントとHashMapを使用したドキュメントがありますが、両方を簡単に組み合わせる方法を見つけることができませんでした(独自のシリアライザーを使用してみましたが、これは何かに役立つようですjcouchdbで無料で入手できます)。また、HashMapフィールドに注釈を付けようとしましたが、オブジェクトとしてシリアル化され、HashMapフィールドの名前でオブジェクト内にフィールドが自動的に保存されます。
Ektorpを使用して(簡単に/無料で)行うことは可能ですか?
couchdb - ektorp/CouchDB更新/フォルダーの同期
jcouchdbには、ローカルファイルシステムからCouchDBにドキュメントを更新できるutilクラスorg.jcouchdb.util.CouchDBUpdaterがあります(たとえば、デザインドキュメントをCouchDBにコピーするために使用されます)。ektorpに似たようなものはありますか?
java - Java と Ektorp を使用した CouchDB での BulkUpdate
org.ektorp.support.CouchDbDocument から派生したクラスがあります。
リポジトリ クラスもあります。
リポジトリ クラスには次のメソッドがあります。
このメソッドは、アイテムの作成と更新に使用されます。作成はうまくいきます。しかし、更新時に、Ektorp は次の例外をスローします。
私がやっていることは、同じリポジトリ内のビューによって最初にフェッチされた一連のオブジェクトを送信することです。もちろん、オブジェクトには null 以外の ID があります。オブジェクトにはIDがあり、作成ではなく更新する必要があるため、これはもちろん発生しないはずです。Ektorp のドキュメントによると、db.executeBulk はドキュメントの作成と更新の両方を処理する必要があります。
CouchDbDocument.setId で例外がスローされています。
しかし、なぜ ?送信されたオブジェクトには実際に ID が設定されている (リビジョンも設定されている) ため、Ektorp は既存のオブジェクトについて話していることを検出し、それらの新しい ID を生成しようとしません。これを修正する方法を知っている人はいますか、またはこの場合、Ektorpを捨ててhttp経由で純粋なjsonを使用する解決策はありますか?
(Jboss 7.1.1.Final、CouchDB 1.2.0、Ektorp 1.2.2 で実行されているプロジェクト)
eclipse - クラスパスからjarを除外するEclipse実行構成
クラスパスからいくつかの jar を除外する Eclipe 実行構成を作成するにはどうすればよいですか?!
背景説明:
Embedded Jetty を Web サーバーとして使用し、Ektorp ライブラリを使用して CouchDB データベースからデータを取得し、Jersey を使用して REST サービスとフロントエンドに GWT を提供する webapp に取り組んでいます。
これら 4 つのライブラリはすべて、同じ Eclipse プロジェクトにインポートされます。
残念ながら、Ektorp と GWT は別のバージョンのクラスを使用して何らかの形で競合します: org.apache.http.conn.scheme.Scheme
GWT パッケージを別のプロジェクトに移動し、Jetty/Ektorp/Jersey プロジェクトをインポートしようとしましたが、GWT は Jersey リソースを見つけることができませんでした...
したがって、この特定のプロジェクトの質問を再構築します。
Embedded Jetty サーバーを実行し、クラスパスから GWT jar を除外する Eclipe 実行構成を作成するにはどうすればよいですか?!
ありがとう!
android - Android アプリケーションを Couchbase Server と同期するにはどうすればよいですか?
世の中に出回っているさまざまなソファ* テクノロジーすべてを区別するのに苦労しています。開発中の Android ゲームで CouchDB を使用するか、Couchbase Server を使用するかを切り替えていましたが、ドキュメントがなくてイライラしています。
テクノロジーに関する私の理解:
CouchDB - ここ数年開発されており、RESTful API を使用して通信される SQL を使用しないデータベース。Couchbase Server での作業を支持して、主任開発者によって放棄されました。
Couchbase Server - 低レイテンシーが最優先される大規模データベースのエンタープライズ ソリューション。memcached を使用して「ホット」データをメモリに保持しますが、データは CouchDB データベースに永続化されます。
Couchbase Mobile - CouchDB のモバイル実装 <--Legacy
TouchDB - CouchDB のモバイル実装.
Ektorp - 開発者が Java から CouchDB インスタンスと通信して同期できるようにするフレームワーク.
私のリストに欠けているのは、Android (そして最終的には iOS)からCouchbase Serverと通信するためのフレームワークです。
そのようなフレームワークは存在しますか?
couchdb - CouchDBの一括更新-Ektorp-更新の競合を返すべきではありませんか?
Ektorp(1.3.0)フレームワークを使用してCouchDBデータベースに接続しています。ただし、更新の競合がある場合は問題があります。executeAllOrNothing一括更新の方法を使用してい ます。文書化されているように、このメソッド(および同等のHTTP API _bulk_docs?all_or_nothing":trueは、競合をチェックしません。HTTPAPIドキュメントから:
ただし、ID 0のドキュメントに競合がある場合は、両方のバージョンがデータベースに存在し、ビューに表示されるバージョンを任意に選択できます。?conflicts = trueのGETを使用して、このステータスを確認できます。
また:
この機能に依存するアプリケーションは、競合が解決されるまで、一部のドキュメントが欠落しているか、競合状態にあることを許容できる必要があります。
ただし、メソッドに関するEktorpのjavadocsには、次のように記載されています。
リスト(返される)には、CouchDBから返されたあらゆる種類のエラーコードを持つドキュメントのエントリのみが含まれます。つまり、すべてが正常に完了した場合、リストは空になります。
私はこれが当てはまらないことを発見しました。競合が発生した場合でも、Ektorpは空のリストを返します。失敗した操作のリストを取得する唯一の方法は、executeBulkではなくを使用することでしexecuteAllOrNothingたが、これはトランザクションである必要があるため、これでは不十分です。
executeAllOrNothing呼び出しが成功したかどうか、成功しなかった場合は、どのドキュメントに競合の問題があったかを知る方法はありますか(GET with conflicts=true一度に数千のドキュメントを保存しようとする可能性があるため、各ドキュメントで繰り返し使用する必要はありません)。実用的ではないでしょう)?
java - 継続的な更新を伴うバッチで実行すると、couchdb クエリがタイムアウトする
私は単純なバッチ フェッチを使用して、couchdb で更新します。
getMsisdnsFrom はカウチ クエリであり、数回後にタイムアウトし始めます。ソファは読み取りが完了したときにのみビューをインデックス付けすることを知っていますが、レコードを更新するだけなので、インデックスには影響しません。また、これは予想される使用法であり、レコードのセットを取得し、次のセットを変更して取得するため、タイムアウトすることはないと思います。
バッチ時間 1000 と 5000 の両方で試しました。
例外メッセージは次のとおりです: スレッド「メイン」での例外 org.ektorp.DbAccessException: java.net.SocketTimeoutException: 読み取りタイムアウト
編集:バッチサイズを100に減らした後は機能しましたが、バッチサイズを大きくした方がよかったでしょう。
json - ektorp/couchdb からの JSON 応答
ektorp/couchdb へのクライアント リクエストについては、JSON をクライアントに返したいと思います。(couchdb を直接使用しないのはなぜでしょうか? Java レイヤーのデータに対していくつかの微調整を行う必要があるためです。)
たとえば、CouchDbRepositorySupport queryView から JSON データを取得する方法はありますか?