以前、Libertymongodb-2.0
には server.xml 専用の機能がありましたが、独自の MongoDB ライブラリーを導入する必要があったため、この機能の利点はほとんどありませんでした。また、MongoDB は、MongoDB の構成方法を含め、API に大きな破壊的変更を加えました。
MongoDB API はリリース間で非常に大幅に変更されているため、Liberty で新しい MongoDB 機能を提供しない方がよいことがわかりました。代わりに、ユーザーは次のような CDI プロデューサーを使用するだけで済みます。
CDI プロデューサー (任意の構成も保持):
@ApplicationScoped
public class MongoProducer {
@Produces
public MongoClient createMongo() {
return new MongoClient(new ServerAddress(), new MongoClientOptions.Builder().build());
}
@Produces
public MongoDatabase createDB(MongoClient client) {
return client.getDatabase("testdb");
}
public void close(@Disposes MongoClient toClose) {
toClose.close();
}
}
使用例:
@Inject
MongoDatabase db;
@POST
@Path("/add")
@Consumes(MediaType.APPLICATION_JSON)
public void add(CrewMember crewMember) {
MongoCollection<Document> crew = db.getCollection("Crew");
Document newCrewMember = new Document();
newCrewMember.put("Name",crewMember.getName());
newCrewMember.put("Rank",crewMember.getRank());
newCrewMember.put("CrewID",crewMember.getCrewID());
crew.insertOne(newCrewMember);
}
これは単なる基本ですが、次のブログ投稿ではコード例とともにさらに詳しく説明しています:
https://openliberty.io/blog/2019/02/19/mongodb-with-open-liberty.html