2015-04-24 12 views
2

С данными Spring, я пытаюсь получить объект Mongo, у которого есть учетные данные пользователя и пароля.Данные Spring MongoDB Credentials

Мне нужно установить это программно, а не с XML

Все примеры, которые я нашел применение в устаревшей системе. Я ищу текущий способ сделать это.

Вот то, что я до сих пор:

MongoClient connection = new MongoClient(host, port); 
List<MongoCredential> credentialsList = connection.getCredentialsList(); 
credentialsList.add(MongoCredential.createCredential(
      userName, 
      getDatabaseName(), 
      password.toCharArray() 
)); 

Я не хочу, чтобы установить базу данных здесь, так как Spring Data уже обрабатывает, что в другом месте, но я не вижу способа, чтобы получить Объект MongoCredentials без него.

В любом случае, не имея возможности найти хороший пример или документацию, которую я могу понять, это мое лучшее предположение о том, как это сделать. Однако это не работает. Когда соединение используется, оно выбрасывает exception is com.mongodb.MongoException: not authorized for query. Я должен что-то упускать, либо требование OpenShift, о котором я не знаю, либо недостаток в моем сертификате.

+0

Или устарели примеры именно того, что я хочу, поскольку OpenShift использует MongoDB 2.4, а не 3 –

ответ

6

Я был в состоянии заставить его работать с этим кодом:

ServerAddress serverAddress = new ServerAddress(
       environmentHost, Integer.parseInt(environmentPort)); 

MongoCredential credential = MongoCredential.createCredential(
       environmentUserName, 
       getDatabaseName(), 
       environmentPassword.toCharArray()); 

MongoClient client = new MongoClient(
       serverAddress, Arrays.asList(credential)); 

Это требует драйверов Java MongoDB, по меньшей мере версии 2.13

Вот раздел в моей pom.xml, что я в конечном итоге используя:

<dependency> 
    <groupId>org.mongodb</groupId> 
    <artifactId>mongo-java-driver</artifactId> 
    <version>2.13.1</version> 
</dependency> 
Смежные вопросы