当我尝试部署我的战争工件时,我收到此消息。我的应用程序正在使用hibernate ogm,并且它正在尝试在部署时构建持久性上下文。我得到的信息是:
org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据提供程序引起:org.hibernate.service.spi.ServiceException:OGM000071:无法启动数据提供程序引起:org.hibernate.HibernateException:OGM001214 :无法连接到MongoDB实例:在等待与ReadPreferenceServerSelector {readPreference = primary}匹配的服务器30000 ms后超时。集群状态的客户端视图是{type = UNKNOWN,servers = [{address = mongo:27017,type = UNKNOWN,state = CONNECTING,exception = {com.mongodb.MongoSecurityException:Exception authenticating MongoCredential {mechanism = PLAIN,userName ='living ',source ='lvdb',password =,mechanismProperties = {}}},由{com.mongodb.MongoCommandException:命令失败,错误2:服务器mongo上的'Unsupported mechanism PLAIN':27017。完整的响应是{\“supportedMechanisms \”:[\“MONGODB-CR \”,\“MONGODB-X509 \”,\“SCRAM-SHA-1 \”],\“ok \”:0.0,\“errmsg \“:\”不支持的机制PLAIN \“,\”code \“:2,\”codeName \“:\”BadValue \“}}}]引起:com.mongodb.MongoTimeoutException:等待30000毫秒后超时对于与ReadPreferenceServerSelector {readPreference = primary}匹配的服务器。集群状态的客户端视图是{type = UNKNOWN,servers = [{address = mongo:27017,type = UNKNOWN,state = CONNECTING,exception = {com.mongodb.MongoSecurityException:Exception authenticating MongoCredential {mechanism = PLAIN,userName ='living ',source ='lvdb',password =,mechanismProperties = {}}},由{com.mongodb.MongoCommandException:命令失败,错误2:服务器mongo上的'Unsupported mechanism PLAIN':27017。完整的响应是{\“supportedMechanisms \”:[\“MONGODB-CR \”,\“MONGODB-X509 \”,\“SCRAM-SHA-1 \”],\“ok \”:0.0,\“errmsg \“:\”不支持的机制PLAIN \“,\”code \“:2,\”codeName \“:\”BadValue \“}}}]”}}
为了使用其他机制,我需要做些什么?
答案 0 :(得分:0)
您必须具体说明属性hibernate.ogm.mongodb.authentication_mechanism
(请参阅here)。
您要使用哪种身份验证机制?我们可能还不支持,但如果您告诉我们您的偏好,我们可以尝试让它快速运作。
答案 1 :(得分:0)
对于MongoDB,默认支持的机制是'SCRAM-SHA-1'。因此,在连接时,您需要指定此机制。通过spring-data连接到MongoDB时,我看到了相同的错误。虽然我没有对mongo进行任何特殊配置,但我尝试使用的第一个显而易见的选择是PLAIN身份验证机制。最后,使用SCRAM-SHA-1解决了它。 对于Spring数据,代码看起来像这样:
MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(mongoUser, mongoDB, mongoPass.toCharArray());
希望这会有所帮助。