2015-12-02 34 views
1

我試圖JasperSoft這個工作室6.2.0連接到MongoDB數據庫(mongod的版本:3.0.7)託管在MongoLab。的JasperSoft工作室MongoDB的連接認證失敗

使用連接URI:

mongodb://ds-a0.mongolab.com:12345,ds-a1.mongolab.com:12345/mydb?replicaSet=rs-ds

enter image description here

測試適配器時,我得到以下異常:

net.sf.jasperreports.engine.JRException: com.mongodb.CommandFailureException: { "serverUsed" : "ds-a0.mongolab.com:12345" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18} 
    at com.jaspersoft.mongodb.connection.MongoDbConnection.test(MongoDbConnection.java:162) 
    at com.jaspersoft.mongodb.adapter.MongoDbDataAdapterService.test(MongoDbDataAdapterService.java:93) 
    at com.jaspersoft.studio.data.wizard.AbstractDataAdapterWizard$3.runOperations(AbstractDataAdapterWizard.java:162) 
    at com.jaspersoft.studio.utils.jobs.CheckedRunnableWithProgress$1.run(CheckedRunnableWithProgress.java:59) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: com.mongodb.CommandFailureException: { "serverUsed" : "ds-a0.mongolab.com:12345" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18} 
    at com.mongodb.CommandResult.getException(CommandResult.java:76) 
    at com.mongodb.CommandResult.throwOnError(CommandResult.java:131) 
    at com.mongodb.DBPort$NativeAuthenticator.authenticate(DBPort.java:652) 
    at com.mongodb.DBPort.authenticate(DBPort.java:364) 
    at com.mongodb.DBPort.checkAuth(DBPort.java:375) 
    at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:291) 
    at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:271) 
    at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84) 
    at com.mongodb.DB.command(DB.java:317) 
    at com.mongodb.DB.command(DB.java:296) 
    at com.mongodb.DB.command(DB.java:371) 
    at com.mongodb.DB.command(DB.java:243) 
    at com.mongodb.DB.command(DB.java:397) 
    at com.jaspersoft.mongodb.connection.MongoDbConnection.test(MongoDbConnection.java:158) 
    ... 4 more 
+0

您沒有在連接字符串 –

+0

通過用戶名和密碼,我已經進入了他們在下面的輸入字段,而不是連接的字符串中。 –

+0

你有沒有嘗試傳遞連接字符串的憑據? –

回答

2

的問題是,在MongoDB version 3.0添加SCRAM-SHA-1認證機制。

在本JasperReports Server issue提到的,解決的辦法是通過替換文件更新MongoDB的Java驅動程序:與一個在這裏找到

Jaspersoft Studio-6.2.0.final\configuration\org.eclipse.osgi\29\0\.cp\lib\mongo-java-driver-2.12.3.jar 

https://github.com/mongodb/mongo-java-driver/releases/download/r2.13.2/mongo-java-driver-2.13.2.jar

隨着URI中的憑據時,連接成功。

+0

嗨弗朗西斯,謝謝你的回答。然而,似乎每當啓動Jaspersoft Studio時,舊的驅動程序再次出現在文件夾中(因此被使用)。你有沒有遇到過這個問題? –

+0

好的,明白了。文件'mongo-java-driver-2.13.2.jar'文件必須重命名爲最初的'mongo-java-driver-2.12.3.jar' Jasper文件名。謝謝你的幫助! –