Установить динамический индексный каталог для Hibernate Search весной - PullRequest
1 голос
/ 13 февраля 2012

Это уже обсуждалось, однако ни одно из решений / советов не помогло мне. Я хочу настроить путь индекса поиска lucene в Spring через persistence.xml. Это важно, поскольку сервер развертывания (конечно) отличается от моего локального компьютера, поэтому пути не будут совпадать. Прямо сейчас моя конфигурация hibernate-search внутри persistence.xml выглядит следующим образом:

<property name="hibernate.search.default.directory_provider" value="filesystem" /> 
<property name="tempdir" value="#{ systemProperties['java.io.tmpdir'] }" />
<property name="hibernate.search.default.indexBase" value="${tempdir}\hibernate\index" /> 

Я видел это ...

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html#expressions-beandef-xml-based

... так должно работать ?! Однако переменная не заменяется, и файлы записываются во вновь созданный подкаталог с именем $ {tempdir}, а это не то, что я хотел:

Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 17 октября 2012

Прежде чем вы посмотрите на это, просмотрите это объяснение о том, как персистентный xml читается и используется.

Однако значения полей в файле persistence.xml настраиваются через свойствафайл, если вы сконфигурировали LocalContainerEntityManagerFactoryBean в контексте Spring.

Используя свойство jpaPropertyMap фабрики диспетчера сущностей, можно настроить значения, используемые в файле xml персистентности.

Ниже приведен пример конфигурации, которая используется в моем проекте.

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaPropertyMap">
        <map>
            <entry key="hibernate.c3p0.min_size" value="5"/>
            <entry key="hibernate.c3p0.max_size" value="20"/>
            <entry key="hibernate.c3p0.timeout" value="1800"/>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <entry key="hibernate.search.default.indexBase" value="${index.directory}"/>
        </map>
    </property>
</bean>

В приведенной выше конфигурации hibernate.search.default.indexBase читается из файла свойств.И, конечно, вам нужен Spring 101 * для чтения файлов свойств.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...