Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liberty+中的容器管理MongoDB连接;弹簧数据_Mongodb_Spring Boot_Spring Data_Websphere Liberty_Open Liberty - Fatal编程技术网

Liberty+中的容器管理MongoDB连接;弹簧数据

Liberty+中的容器管理MongoDB连接;弹簧数据,mongodb,spring-boot,spring-data,websphere-liberty,open-liberty,Mongodb,Spring Boot,Spring Data,Websphere Liberty,Open Liberty,我们在springboot+springdata(后端)+MongoDB中开发了一个应用程序,并使用ibmwebsphereliberty作为应用服务器。我们在yml文件中使用了“应用程序管理的数据库连接”,并享受了Spring Boot自动配置的好处 由于策略更改,我们需要在Liberty Server中管理数据库连接(使用mongo功能),在Server.xml中。我花了一整天的时间寻找一个很好的例子来做这件事,但是在Spring的IBMWebSphereLiberty服务器中找不到任何关于

我们在
springboot
+
springdata
(后端)+
MongoDB
中开发了一个应用程序,并使用
ibmwebsphereliberty
作为应用服务器。我们在
yml
文件中使用了“应用程序管理的数据库连接”,并享受了Spring Boot
自动配置的好处

由于策略更改,我们需要在Liberty Server中管理数据库连接(使用mongo功能),在
Server.xml
中。我花了一整天的时间寻找一个很好的例子来做这件事,但是在Spring的
IBMWebSphereLiberty服务器
中找不到任何关于容器管理的MongoDB连接的例子

有人能在这里支持吗?

退房。下面是您将如何在Spring Boot应用程序中使用它的扩展

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

@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
数据源
注入到您的
组件
服务
等中。

过去,Liberty为server.xml提供了一个专用的
mongodb-2.0
功能,但是该功能提供的好处微乎其微,因为您仍然需要带上自己的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);
}
用法示例:

@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);
}
@Inject
MongoDatabase db;
@职位
@路径(“/add”)
@使用(MediaType.APPLICATION_JSON)
公共无效添加(乘员乘员乘员){
MongoCollection crew=db.getCollection(“crew”);
Document newCrewMember=新文档();
newCrewMember.put(“Name”,crewMember.getName());
newCrewMember.put(“Rank”,crewMember.getRank());
newCrewMember.put(“CrewID”,crewMember.getCrewID());
乘务员insertOne(新乘务员);
}
这只是基础知识,但下面的博文将更详细地介绍代码示例: