将Spring roo项目连接到数据库(mongo)

时间:2013-01-12 03:30:09

标签: spring mongodb heroku

我太新了,并试图创建一个简单的应用程序推送到heroku。我有应用程序,并在我的localhost上工作,同时在localhost上运行mongo DB。我在heroku中向应用程序添加了一个mongo数据库,但它不会在heroku上打开(应用程序不是数据库)。我不知道问题是什么,但是我需要以某种方式将我的应用程序连接到heroku数据库吗?在更改database.properties文件时?我尝试使用heroku DB在本地测试它,使用此URL(我可以使用mongoctl登录到数据库):

mongodb://heroku_app10830648:************************@ds047387.mongolab.com:4738/heroku_app10830648

并将信息放入database.properties文件:

#Updated at Wed Jan 09 19:16:49 MST 2013
#Wed Jan 09 19:16:49 MST 2013
mongo.database=heroku_app10830648
mongo.host=ds047387.mongolab.com
mongo.password=***********************
mongo.port=47387
mongo.username=heroku_app10830648

但是当我用mvn包构建它时,我得到了这个错误:


T E S T S

结果:

错误测试:   testCountAllNotebooks(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindAllNotebooks(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindNotebookEntries(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testSaveNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testDeleteNotebook(com.xebia.shortnotes.domain.NotebookIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.notebook锁类型:0客户端:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testCountAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未经授权的db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindAllNotes(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testFindNoteEntries(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未经授权的db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testSaveNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}   testDeleteNote(com.xebia.shortnotes.domain.NoteIntegrationTest):命令失败[命令失败[count] {“断言”:“未授权db:heroku_app10830648 ns:heroku_app10830648.note lock type:0 client:71.208.224.103”,“assertionCode” :10057,“errmsg”:“db assertion failure”,“ok”:0.0}

测试运行:14,失败:0,错误:12,跳过:0

[INFO] -------------------------------------------- ----------------------------

[ERROR] BUILD FAILURE

[INFO] -------------------------------------------- ----------------------------

[INFO]有测试失败。

如果有人可以告诉我如何在mvn项目中使用除本地之外的其他数据库,那么主要问题就是这里的任何帮助。

1 个答案:

答案 0 :(得分:0)

[此帖似乎处于休眠状态,但我遇到了同样的问题,这是Google的最佳匹配。]

我正在使用Spring / Roo / Mongo应用程序,它在“dev”模式下运行良好,但是当部署到云提供程序(OpenShift,CloudBees,Heroku等)并连接到MongoHQ时,数据库连接失败了消息:

  

命令失败[命令失败[count] {“ok”:0.0,“errmsg”:   “未授权”}

原来问题出在自动生成的 applicationContext-mongo.xml 文件中。您需要添加用户名密码属性:

<mongo:db-factory dbname="${mongo.name}" host="${mongo.host}" id="mongoDbFactory" port="${mongo.port}" username="${mongo.username}" password="${mongo.password}"/>

以下是官方文档的(可能已过时)链接(如果有帮助):http://static.springsource.org/spring-data/data-mongo/docs/1.0.0.M5/reference/html/#d0e1210

另一个提示:使用 spring.profiles.active 让您的应用程序根据开发模式选择正确的凭据/配置,或在特定的云中运行供应商。如果每个PaaS都会定义像“current.paas = heroku”这样的Java系统属性来使自动配置更容易,那将是非常好的。