Java 身份验证失败

Java 身份验证失败,java,spring-mvc,heroku,mlab,Java,Spring Mvc,Heroku,Mlab,我已经将我的Web应用程序上传到Heroku,我有一个名为“MongoLab”的附加组件。我将MongoLab的凭据放入我的Spring XML文件中,当我运行它时,我得到一个错误: {"message":"Failed to authenticate to database [heroku_c82w85xw], username = [heroku_c82w85xw], password = [k************************c]","code":"org.springfra

我已经将我的Web应用程序上传到Heroku,我有一个名为“MongoLab”的附加组件。我将MongoLab的凭据放入我的Spring XML文件中,当我运行它时,我得到一个错误:

{"message":"Failed to authenticate to database [heroku_c82w85xw], username = [heroku_c82w85xw], password = [k************************c]","code":"org.springframework.data.mongodb.CannotGetMongoDbConnectionException
因此,我还制作了一个Java配置文件来保存凭据,但仍然会遇到相同的错误。我已经试了好几个星期了,但还是犯了同样的错误。下面是我的SpringXML和Java配置文件

Spring XML文件:

    <mongo:mongo id="mongo" host="ds055575.mongolab.com" port="55575"/>

<mongo:db-factory 
    id="mongoDbFactory"
    host="ds055575.mongolab.com"
    port="55575"
    username="heroku_c82w85xw"
    password="XXX"
    dbname="heroku_c82w85xw"
    mongo-ref="mongo"/>

<bean id="anotherMongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />  
</bean>

<bean id="userDaoImpl" class="service.UserDaoImpl">
    <constructor-arg name="mongoOps" ref="anotherMongoTemplate" />
</bean>
<bean id="userService" class="service.UserService">
    <property name="userDaoImpl" ref="userDaoImpl" />
</bean>

有人能帮我解决这个错误吗?提前感谢。

与其硬编码URI,不如从MongoLab为您设置的环境变量中提取URI。以下是一个例子:

String uri = System.getenv("MONGOLAB_URI");
MongoClientURI uri  = new MongoClientURI(uri); 
MongoClient client = new MongoClient(uri);
DB db = client.getDB(uri.getDatabase());

这是MongoLab在其中的建议。

与其硬编码URI,不如从MongoLab为您设置的环境变量中提取URI。以下是一个例子:

String uri = System.getenv("MONGOLAB_URI");
MongoClientURI uri  = new MongoClientURI(uri); 
MongoClient client = new MongoClient(uri);
DB db = client.getDB(uri.getDatabase());

这是MongoLab在它的中推荐的。

谢谢您回复我。我尝试使用System.getenv(“MONGOLAB_URI”),但当我打印出来时,它给了我一个空值。我正在研究制造环境变量,但系统没有意识到这一点。我会再试一次,看看会发生什么。你是在本地运行还是在Heroku上运行?您需要手动设置本地env var。我从上面添加了代码并将其部署到Heroku中,但仍然显示相同的错误:“无法对数据库[Heroku82w85xw]进行身份验证”。谢谢您回复我。我尝试使用System.getenv(“MONGOLAB_URI”),但当我打印出来时,它给了我一个空值。我正在研究制造环境变量,但系统没有意识到这一点。我会再试一次,看看会发生什么。你是在本地运行还是在Heroku上运行?您需要手动设置本地env var。我添加了上面的代码并将其部署到Heroku中,但仍然显示相同的错误:“无法对数据库[Heroku82w85xw]进行身份验证”。您解决了这个问题吗?我遇到了同样的问题,也试了好几天。如果你已经解决了这个问题,请在你的问题下面写下你的答案。非常感谢你!我已经解决了。我还必须将凭据放入DAO构造函数中,以便能够将CRUD(创建、读取、更新和删除)应用于数据库。否则会显示“身份验证失败”。您已经解决此问题了吗?我遇到了同样的问题,也试了好几天。如果你已经解决了这个问题,请在你的问题下面写下你的答案。非常感谢你!我已经解决了。我还必须将凭据放入DAO构造函数中,以便能够将CRUD(创建、读取、更新和删除)应用于数据库。否则将显示“身份验证失败”。