Java 验证Mongo DB时获取异常
在Mongo DB中插入记录时出现以下异常Java 验证Mongo DB时获取异常,java,spring,mongodb,sha,Java,Spring,Mongodb,Sha,在Mongo DB中插入记录时出现以下异常 org.springframework.dao.DataAccessResourceFailureException: IOException authenticating the connection; nested exception is com.mongodb.MongoException$Network: IOException authenticating the connection at org.springframework.
org.springframework.dao.DataAccessResourceFailureException: IOException authenticating the connection; nested exception is com.mongodb.MongoException$Network: IOException authenticating the connection
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:56)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1791)
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:404)
at org.springframework.data.mongodb.core.MongoTemplate.insertDBObject(MongoTemplate.java:879)
at org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:709)
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:663)
at com.yatra.product.seo.service.mongo.MongoJob.singleInsert(MongoJob.java:76)
at com.yatra.product.seo.service.mongo.MongoJob.myRun(MongoJob.java:96)
at com.yatra.platform.commons.YatraRunable.run(YatraRunable.java:9)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.mongodb.MongoException$Network: IOException authenticating the connection
at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:915)
at com.mongodb.DBPort.authenticate(DBPort.java:432)
at com.mongodb.DBPort.checkAuth(DBPort.java:443)
at com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:207)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:181)
at com.mongodb.DBCollectionImpl.insertWithWriteProtocol(DBCollectionImpl.java:565)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:195)
at com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:167)
at com.mongodb.DBCollection.insert(DBCollection.java:93)
at com.mongodb.DBCollection.insert(DBCollection.java:78)
at com.mongodb.DBCollection.insert(DBCollection.java:120)
at org.springframework.data.mongodb.core.MongoTemplate$8.doInCollection(MongoTemplate.java:884)
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:402)
... 9 more
Caused by: javax.security.sasl.SaslException: Unable to find PBKDF2WithHmacSHA1. [Caused by java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA1 SecretKeyFactory not available]
at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:829)
at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.computeClientFinalMessage(DBPort.java:747)
at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.evaluateChallenge(DBPort.java:681)
at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:904)
... 21 more
Caused by: java.security.NoSuchAlgorithmException: PBKDF2WithHmacSHA1 SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
at com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:826)
... 24 more
org.springframework.dao.DataAccessResourceFailureException:IOException验证连接;嵌套异常是com.mongodb.MongoException$Network:IOException,用于验证连接
位于org.springframework.data.mongodb.core.MongoExceptionTranslator.TranslateExceptionIfBlability(MongoExceptionTranslator.java:56)
位于org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1791)
位于org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:404)
位于org.springframework.data.mongodb.core.MongoTemplate.insertDBObject(MongoTemplate.java:879)
位于org.springframework.data.mongodb.core.MongoTemplate.doInsert(MongoTemplate.java:709)
位于org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:663)
位于com.yatra.product.seo.service.mongo.MongoJob.singleInsert(MongoJob.java:76)
位于com.yatra.product.seo.service.mongo.MongoJob.myRun(MongoJob.java:96)
位于com.yatra.platform.commons.yatrarun.run(YatraRunable.java:9)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于java.lang.Thread.run(未知源)
原因:com.mongodb.MongoException$Network:IOException正在验证连接
位于com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:915)
位于com.mongodb.DBPort.authenticate(DBPort.java:432)
位于com.mongodb.DBPort.checkAuth(DBPort.java:443)
位于com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:207)
位于com.mongodb.DBTCPConnector.say(DBTCPConnector.java:181)
位于com.mongodb.DBCollectionImpl.insertWithWriteProtocol(DBCollectionImpl.java:565)
位于com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:195)
位于com.mongodb.DBCollectionImpl.insert(DBCollectionImpl.java:167)
位于com.mongodb.DBCollection.insert(DBCollection.java:93)
位于com.mongodb.DBCollection.insert(DBCollection.java:78)
位于com.mongodb.DBCollection.insert(DBCollection.java:120)
位于org.springframework.data.mongodb.core.MongoTemplate$8.doInCollection(MongoTemplate.java:884)
位于org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:402)
... 9更多
原因:javax.security.sasl.SaslException:找不到带有HMACSHA1的PBKDF2。[由java.security.NoSuchAlgorithmException引起:PBKDF2WithHmacSHA1 SecretKeyFactory不可用]
位于com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:829)
在com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.computeClientFinalMessage(DBPort.java:747)上
位于com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.evaluateChallenge(DBPort.java:681)
位于com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:904)
... 还有21个
原因:java.security.NoSuchAlgorithmException:PBKDF2WithHmacSHA1 SecretKeyFactory不可用
位于javax.crypto.SecretKeyFactory(SecretKeyFactory.java:122)
位于javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
位于com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi(DBPort.java:826)
... 还有24个
有人能帮忙吗
谢谢,尽管我们看不到您的代码。有两种可能的方法来解决这个问题 解决方法:添加以下依赖项
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.52</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
<version>1.46</version>
</dependency>
org.bouncycastle
bcpkix-jdk15on
1.52
org.bouncycastle
bcprov-jdk15
1.46
并在使用MongoDB进行身份验证之前添加此指令Security.addProvider(新的BouncyCastleProvider())
正确的方法:
因为,PBKDF2WithHmacSHA1应该包含在java安装文件夹中。在我看来,我会检查我的环境变量是否正确。如果您使用Windows,我也会检查regedit
HKLM/Software/JavaSoft/Java Runtime-Environment/
,以确保路径也正确。如果您的Java版本低于1.6,则使用@Charlie的解决方案。
否则,必须缺少java.ext.dirs的系统属性
您可以这样执行java:
java-Djava.ext.dirs=$java_HOME/jre/lib/ext yourApp
享受它。粘贴您的配置。我们不能仅仅通过查看日志来说明代码中存在什么问题。它应该在SunJCE提供程序下的JDK中提供:这是同一个问题吗?