如何在 java 程序中嵌入 mongodb 而不是运行守护进程

Posted

技术标签:

【中文标题】如何在 java 程序中嵌入 mongodb 而不是运行守护进程【英文标题】:How to embed mongodb in a java program instead of running a daemon 【发布时间】:2011-07-21 13:38:23 【问题描述】:

有没有办法在 java 应用程序中嵌入 mongodb 而不是运行守护进程。

我已经下载了 mongodb jdbc 驱动并将它们添加到类路径中。

【问题讨论】:

Can MongoDB be hosted in-process? 的可能副本另请参阅 ***.com/questions/6115637/… monogodb 是用 c++ 编写的,所以你可能想检查 jni,但如果你认为它与 jdbc 有关,那么它可能对你来说有点矫枉过正:) mongodb没有jdbc驱动。官方驱动程序/客户端库不是 jdbc,而只是一个自定义 API。 【参考方案1】:

你不能在java进程中嵌入mongodb。这是一个单独的过程。

您可以在程序启动/停止时通过生成进程来启动和停止它。通常不建议这样做,因为 mongodb 旨在作为后台服务器运行;如果你这样做可能是最好的选择一个随机端口来启动它,这样它就不会影响任何其他 mongodb 实例。您还需要确保为部署 Java 应用程序的平台包含正确的二进制文件,因为它需要的不仅仅是 JVM。

【讨论】:

答案并不完全正确,因为您可以从 java 运行 shell 命令(使用此方法:***.com/questions/2460297/run-shell-command-from-java)。我也在寻找这样的解决方案,并且想知道是否已经存在任何代码。如果我找到任何解决方案或自行开发解决方案,我会及时更新此问题。 这不是嵌入的,而是作为一个 sep 生成的。过程。 是的,我误解了嵌入式的作用……但这种方法仍然适合 sam 的需要,你不觉得吗?【参考方案2】:

在 java 单元测试中,我们可以使用Test Containers 来生成一个带有嵌入式 MongoDB 的 Docker 容器。

查看 Spring Boot 项目的自动配置:https://github.com/testcontainers/testcontainers-spring-boot#embedded-mongodb

【讨论】:

以上是关于如何在 java 程序中嵌入 mongodb 而不是运行守护进程的主要内容,如果未能解决你的问题,请参考以下文章

如何使 junit 测试在 springboot 应用程序中使用嵌入式 mongoDB?

在java中运行pig而不嵌入pig脚本

我们可以将 MongoDB 嵌入到独立的应用程序中吗? [复制]

如何将嵌入式资源作为字节数组读取而不将其写入磁盘?

带有嵌入式 Tomcat 的 Jndi Mongodb Spring Boot,[重复]

如何在嵌入式数组mongodb中查询嵌入式文档