当前位置: 首页 > 知识库问答 >
问题:

Spring Boot以及如何在cloud foundry上配置到MongoDB的连接详细信息?

宗政深
2023-03-14

我目前正在使用mongodb创建spring boot web应用程序。在本地,我可以运行我的应用程序,并且正在检索和存储数据。但不是在cloud foundry上。任何提示,链接或任何可以帮助我的东西都将不胜感激!

问题

当我把它推到cloud foundry时,我无法连接到我的mongodb。我知道我们必须在cloud foundry上配置一些东西才能使其正常工作。我尝试使用mongodb PCF,即使我将其绑定到我的应用程序,它仍然没有运行我的应用程序。我一直在互联网上搜索,试图找到正确的配置。

其他想法

当我使用MongoDb时,我从来没有设置过用户名和密码。我目前只是在port27017中使用localhost。也许我需要在我的V_CAP或env变量上配置凭据,但我不能在cloudfoundry.com.UI编辑这些凭据。是否有命令行提示符将这些变量配置为cf?我查看了几个文档,但我不清楚在哪里将这些bean添加到哪个配置文件中,或者它有助于让mongoDB在云代工Doc1上运行

cloud foundry上的连接错误

OUTorg.springframework.beans.factory.未满足的依赖异常:创建名称为“indexController”的bean时出错:通过字段“apL”表示的未满足依赖;嵌套异常org.springframework.beans.factory.BeanCreationException:创建名称为“appPortList”的bean时出错:初始化方法调用失败;嵌套异常org.springframework.dao.DataAccessResourceFailureException:在等待与ReadPreancceServerSelector{readPre的=主}匹配的服务器时超时30000毫秒。集群状态的客户端视图为{type=UNKNOWN, server=[{地址=127.0.0.1:27017, type=UNKNOWN, state=CONNECTE,异常={com.mongodb.MongoSocketOpenException:异常打开套接字},由{java.net.ConnectException: Connection}}]引起;嵌套异常com.mongodb.MongoTimeoutException:在等待与ReadPreancceServerSelector{readPre的=主}匹配的服务器时超时30000毫秒。集群状态的客户端视图为{type=UNKNOWN, server=[{地址=127.0.0.1:27017, type=UNKNOWN, state=CONNECTE,异常={com.mongodb.MongoSocketOpenException:异常打开套接字},原因是{java.net.ConnectException:连接拒绝}}]

共有2个答案

吴同
2023-03-14

Spring Framework博客上有一篇关于绑定到CF上的数据服务的非常好的博文:https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry.

本文在示例中使用了与JPA的关系,但所显示的所有内容也适用于MongoDB。

申屠秦斩
2023-03-14

理论上,Spring Boot云连接器应该可以为您做到这一点,但我过去遇到过问题。

或者,您需要添加一个扩展AbstractMongoConfiguration的Springbean。在此配置中,必须插入在VCAP\u SERVICES环境变量中找到的主机、端口、用户名、数据库名称和密码。

您可以通过使用System获取VCAP\u SERVICES变量的值来自动插入此项。getEnv(“VCAP\u服务”),并使用JACKSON或其他JSON库对其进行解析。

@Configuration
@Profile("cloud")
public class DatabaseConfiguration extends AbstractMongoConfiguration {

    @Bean
    public ValidatingMongoEventListener validatingMongoEventListener() {
        return new ValidatingMongoEventListener(validator());
    }

    @Bean
    public LocalValidatorFactoryBean validator() {
        return new LocalValidatorFactoryBean();
    }

    @Override
    public String getDatabaseName() {
        return this.databaseName;
    }

    @Override
    @Bean
    public Mongo mongo() throws Exception {
        List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
        ServerAddress address = new ServerAddress("my_host", 7777);
        serverAddresses.add(address);
        return new MongoClient(serverAdresses,
                singletonList(
                        MongoCredential.createCredential(
                                "my_user_name",
                                "my_database_name",
                                "my_password".toCharArray()
                        )
                )
        );
    }
}

关于你的“其他想法”。无法编辑CloudFoundry提供的VCAP\u服务变量。相反,它应该由应用程序读取,以便应用程序知道在哪里可以找到CF为其提供的mongodb实例。

但是,您可以使用'cf set-env'向您的应用程序添加更多环境变量。然而,据我所知,这无助于解决您的问题。

 类似资料:
  • 刚到spring boot,我想知道如何为MongoDB配置连接细节。我已经尝试了正常的例子,但没有涉及连接的细节。 我想指定将要使用的数据库和运行MongoDB的主机的URL/端口。 有什么提示或提示吗?

  • 本文向大家介绍Navicat Premium连接mongodb详细教程,包括了Navicat Premium连接mongodb详细教程的使用技巧和注意事项,需要的朋友参考一下 0 环境 操作系统:win10 1 准备 navicat15 破解 CentOS Docker 安装 Docker 安装 MongoDB 2 Docker 安装 MongoDB 注意:保持网络稳定 3 Navicat Pre

  • 要连接到以太坊测试网,是这样的: (摘自此处:https://hardhat.org/tutorial/deploying-to-a-live-network.html ) 如何为RSK Testnet添加网络配置? (请注意,我使用的是种子短语,而不是原始私钥)

  • 我每天都在连接mongo db,它工作得很好,但今天它困扰着我下面的错误,任何人都可以帮我请。 连接到:测试2017-01-10T14:26:13.073 0530警告:连接到127.0.0.1:27017失败,原因:错误号:111连接被拒绝2017-01-10T14:26:13-074 0530错误:无法连接到服务器127.0-0.1:27017(127.0.0.1),在src/mongo/sh

  • 我是Oracle DB的新手,已经创建了一个新的Oracle 12c数据库。我正在通过SQLDeveloper创建一个新的连接,在哪里可以获得连接详细信息?主机名?港口城市SID? 我尝试使用留档中给出的默认详细信息进行连接,但出现以下错误 测试失败:侦听器拒绝连接并出现以下错误:ORA-12505, TNS:侦听器当前不知道连接描述符中给出的SID

  • 嗨,我尝试用InMemoryDao获取userDetailsService。但是我得不到,我试过@Autowired,@ Inject(userdailsservice,InMemoryDaoImpl,InMemoryManager...)但是我不能让它工作。 有公共类安全扩展WebSecurityC 只尝试了WebSecurityCon