2014-01-16 3 views
0

У меня есть приложение, написанное на Java и ранее написанное кем-то еще, прежде чем я получил контроль над ним. Мы используем MongoDB с набором реплик. Я знаю, что для правильного использования набора реплик вам необходимо передать драйверу «список посещений» всех серверов, связанных с набором реплик, чтобы он выбирал первичный.Как использовать список посещений набора реплик с Hibernate и MongoDB

Проблема в том, что приложение использует Hibernate для подключения к MongoDB. Есть ли способ указать список семян внутри файла конфигурации xibernate xml? Ниже приведен пример того, что мы настроили в приложении.

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.ogm.datastore.provider">MONGODB</property> 
     <property name="dialect">org.hibernate.ogm.dialect.mongodb.MongoDBDialect</property> 
     <property name="hibernate.ogm.mongodb.database">databasename</property> 
     <property name="hibernate.ogm.mongodb.host">192.168.1.10</property> 
     <property name="hibernate.ogm.mongodb.port">27017</property> 
     <mapping resource="mongodb.hbm.xml" /> 
    </session-factory> 
</hibernate-configuration> 

Я попытался найти документацию в списке свойств для этой конфигурации и ничего не увидел о указании нескольких узлов для списка посещений; hibernate.ogm.mongodb.host - единственное, что я мог найти, и насколько мне известно, он поддерживает только 1 хост.

Любые идеи о том, как я могу заставить текущее приложение работать с набором семени списка реплик, используя спящий режим?

+2

Я посмотрел на код Hibernate использует для подключения к MongoDB, и это не выглядит, как он поддерживает наборы реплик, он принимает один хост и порт. [Код здесь] (https://github.com/hibernate/hibernate-ogm/blob/master/mongodb/src/main/java/org/hibernate/ogm/datastore/mongodb/impl/MongoDBDatastoreProvider.java). – Trisha

+0

Я сделал то же самое и пришел к такому же выводу. Это довольно разочаровывает. – vane

ответ

0

Последние версии Hibernate OGM поддерживают это через свойство:

hibernate.ogm.datastore.host 

Вот пример действительного значения:

www.example.com, www2.example.com:123, 192.0.2.1, 192.0.2.2:123, 2001:db8::ff00:42:8329, [2001:db8::ff00:42:8329]:123 

Значение по умолчанию 127.0.0.1:27017. Если не определено, по умолчанию используется порт 27017.

Есть больше деталей в official documentation