2

我们在Spring Boot+ spring data(后端)+中开发了一个应用程序MongoDB并用作IBM Websphere Liberty应用程序服务器。我们在一个文件中使用了“Application Managed DB Connection”yml ,并享受了 Spring Boot 的好处autoconfiguration

由于策略更改,我们需要在 Liberty Server(使用 mongo 功能)中管理我们的数据库连接,在Server.xml. 我花了一整天的时间寻找一个很好的例子来做到这一点,但是在 Spring 中没有找到任何带有“容器管理的 MongoDB 连接”的例子IBM Websphere Liberty Server

有人可以在这里支持吗?

4

2 回答 2

0

查看其他 stackoverflow 解决方案。以下是您将如何在 Spring Boot 应用程序中使用它的扩展。

您应该能够以相同的方式注入数据源。您甚至可以将它注入到您的配置中并将其包装在 SpringDelegatingDataSource中。

@Configuration
public class DataSourceConfiguration {

    // This is the last code section from that link above
    @Resource(lookup = "jdbc/oracle")
    DataSource ds;

    @Bean
    public DataSource mySpringManagedDS() {
        return new DelegatingDataSource(ds);
    }

}

然后你应该能够将 注入mySpringManagedDS DataSource到你的Component,Service等中。

于 2018-08-21T17:33:44.883 回答
0

过去 Liberty 有一个专门mongodb-2.0用于 server.xml 的功能,但是这个功能提供的好处非常少,因为您仍然需要带上自己的 MongoDB 库。此外,随着时间的推移,MongoDB 对其 API 进行了重大的重大更改,包括如何配置 MongoDB。

由于 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

于 2019-02-25T21:08:34.227 回答