2016-12-20 5 views
1

MongoDBへの接続とカスタムコーデックを使用してMongoDBドキュメントとの間でドメイン固有のJava POJOをエンコード/デコードするJava webappがあります。接続URLは、環境変数を介してアプリケーションに提供されます。 URLにはオプションを含めることができますが、URL形式のドキュメントhttps://docs.mongodb.com/manual/reference/connection-string/にはURLにコーデックを指定することはできません。 だから私の自然な選択が私のコーデックでURIと新しいCodecRegistryからオプションを組み合わせることMongoClientOptionsビルダーを使用することです:JavaからのMongoDB接続:指定された接続のコーデックを構成する方法URI

MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
    mongoURI.getOptions()).codecRegistry(myCodecRegistry).build(); 

問題はMongoClientはURIとMongoClientOptionsを受け入れるコンストラクタを提供しないということである、取るコンストラクタがありますちょうどURI:

public MongoClient(final MongoClientURI uri) { 
    super(uri); 
} 

私は手動でMongoClientプライベートメソッドからいくつかのコードを複製するURIを解析して、オプションを受け入れ、他のコンストラクタのいずれかを使用します。 MongoClientをカスタムコーデックで構成するより良い方法を探したいと思います。 私はMongo Javaドライババージョン3.3.0を使用しています

答えて

1

これを試すことができます。

MongoClientOptions optsWithCodecs = MongoClientOptions.builder(
mongoURI.getOptions()).codecRegistry(myCodecRegistry).build(); 
MongoClientURI mongoClientUri = new MongoClientURI(uri, optsWithCodecs); 
MongoClient mongoClient = new MongoClient(mongoClientUri); 
0
Builder optionsBuilder = MongoClientOptions.builder().codecRegistry(myCodecRegistry); 
MongoClient mongo = new MongoClient(new MongoClientURI(connectionString, optionsBuilder)); 
関連する問題