나는 Hibernate Search를 통합하려고하는 Spring 프로젝트를 가지고있다. 이 프로젝트는 Hibernate Search가 인덱스를 생성하는 것을 포함하는 부분 이외에 잘 동작한다.Spring, JPA, Hibernate 검색 통합
문서에서 알 수 있듯이 색인 디렉토리는 응용 프로그램을 시작할 때 생성됩니다. 색인 디렉토리가 작성되지 않고 로그에 오류가 표시되지 않습니다. 필자는 심지어 앱을 시작하기 전에 디렉토리를 수동으로 만들려고 시도했지만 새로운 엔티티가 데이터베이스에 저장되는 경우에도 아무 것도 기록되지 않습니다.
나는 봄과 최대 절전 모드 포럼에서이 똑같은 일을하는 방법을 묻는 글을 여러 번 보았지만 모두 답변이 없거나 OP가 방금 "나는 알아 냈어"라고 말했고 아무런 해결책도 제시하지 않았다.
또한이 게시물 (예 : Hibernate Search + Spring + JPA + 2 webapps - correct configuration)을 기반으로 Spring/JPA를 사용하여 엔티티를 관리하는 경우 별도의 persistence.xml을 정의 할 필요가 없습니다. 그러나 나는 아직도 이것에 대해 약간 불분명하다.
다음은 내 응용 프로그램 컨텍스트와 관련 항목의 관련 부분입니다. 내가 뭘 놓치고 있니?
응용 프로그램 컨텍스트 :
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.myapp" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="${db.generateDdl}" />
<property name="showSql" value="${db.showSql}" />
<property name="databasePlatform" value="${db.dialect.class}" />
</bean>
</property>
<property name="jpaPropertyMap" ref="jpaPropertyMap" />
</bean>
<util:map id="jpaPropertyMap">
<entry key="hibernate.search.default.directory_provider" value="filesystem" />
<entry key="hibernate.search.default.indexBase" value="C:\Users\Luke\indexes" />
</util:map>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="${db.connection.url}" />
<property name="driverClassName" value="${db.driver.class}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
법인 :
...
@Entity
@Indexed(index = "myentity")
@Table(name = "entity_table")
public class MyEntity implements BaseEntity {
private static final long serialVersionUID = 6320371154137986977L;
@Id
@GeneratedValue
@Column(name = "id")
@DocumentId
private Long id;
@Column(name = "my_string")
@Field(index = Index.TOKENIZED,
store = Store.YES)
private String myString;
...
부팅 로그 :
Running Jetty 6.1.26
2013-04-30 09:36:32.317:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
ParentLoaderPriority enabled
Context path:/myapp
ProjectClassLoader: entry=C:\workspace-java\myapp\target\classes
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\scribe\scribe\1.3.3\scribe-1.3.3.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-codec\commons-codec\1.4\commons-codec-1.4.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-core\3.2.1.RELEASE\spring-core-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-web\3.2.1.RELEASE\spring-web-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-aop\3.2.1.RELEASE\spring-aop-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-context\3.2.1.RELEASE\spring-context-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-beans\3.2.1.RELEASE\spring-beans-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-webmvc\3.2.1.RELEASE\spring-webmvc-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-expression\3.2.1.RELEASE\spring-expression-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-tx\3.2.1.RELEASE\spring-tx-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-orm\3.2.1.RELEASE\spring-orm-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-test\3.2.1.RELEASE\spring-test-3.2.1.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\security\spring-security-core\3.1.3.RELEASE\spring-security-core-3.1.3.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\security\spring-security-web\3.1.3.RELEASE\spring-security-web-3.1.3.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\spring-jdbc\3.0.7.RELEASE\spring-jdbc-3.0.7.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\security\spring-security-config\3.1.3.RELEASE\spring-security-config-3.1.3.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\security\spring-security-taglibs\3.1.3.RELEASE\spring-security-taglibs-3.1.3.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\security\spring-security-acl\3.1.3.RELEASE\spring-security-acl-3.1.3.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\java-persistence\jpa-api\2.0-cr-1\jpa-api-2.0-cr-1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\data\spring-data-jpa\1.3.0.RELEASE\spring-data-jpa-1.3.0.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\springframework\data\spring-data-commons\1.5.0.RELEASE\spring-data-commons-1.5.0.RELEASE.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\aspectj\aspectjrt\1.7.1\aspectjrt-1.7.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\slf4j\slf4j-api\1.7.1\slf4j-api-1.7.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\slf4j\jcl-over-slf4j\1.7.1\jcl-over-slf4j-1.7.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-validator\4.3.0.Final\hibernate-validator-4.3.0.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\jboss\logging\jboss-logging\3.1.0.CR2\jboss-logging-3.1.0.CR2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-entitymanager\4.1.9.Final\hibernate-entitymanager-4.1.9.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\javassist\javassist\3.17.1-GA\javassist-3.17.1-GA.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.1_spec\1.0.0.Final\jboss-transaction-api_1.1_spec-1.0.0.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.0-api\1.0.1.Final\hibernate-jpa-2.0-api-1.0.1.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-core\4.1.9.Final\hibernate-core-4.1.9.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\common\hibernate-commons-annotations\4.0.1.Final\hibernate-commons-annotations-4.0.1.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-search\3.4.1.Final\hibernate-search-3.4.1.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-search-analyzers\3.4.1.Final\hibernate-search-analyzers-3.4.1.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-analyzers\3.1.0\lucene-analyzers-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\solr\solr-analysis-extras\3.1.0\solr-analysis-extras-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\solr\solr-core\3.1.0\solr-core-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\solr\solr-solrj\3.1.0\solr-solrj-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-highlighter\3.1.0\lucene-highlighter-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-memory\3.1.0\lucene-memory-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-misc\3.1.0\lucene-misc-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-spatial\3.1.0\lucene-spatial-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-spellchecker\3.1.0\lucene-spellchecker-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\solr\solr-commons-csv\3.1.0\solr-commons-csv-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-io\commons-io\1.4\commons-io-1.4.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-lang\commons-lang\2.4\commons-lang-2.4.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-smartcn\3.1.0\lucene-smartcn-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-stempel\3.1.0\lucene-stempel-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hibernate\hibernate-commons-annotations\3.2.0.Final\hibernate-commons-annotations-3.2.0.Final.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\lucene\lucene-core\3.1.0\lucene-core-3.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\mysql\mysql-connector-java\5.1.22\mysql-connector-java-5.1.22.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\slf4j\slf4j-log4j12\1.7.1\slf4j-log4j12-1.7.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\jstl\jstl\1.2\jstl-1.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-core\3.0.1\tiles-core-3.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-digester\commons-digester\2.0\commons-digester-2.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\commons-beanutils\commons-beanutils\1.8.0\commons-beanutils-1.8.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-api\3.0.1\tiles-api-3.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-request-api\1.0.1\tiles-request-api-1.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-jsp\3.0.1\tiles-jsp-3.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-servlet\3.0.1\tiles-servlet-3.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-request-servlet\1.0.1\tiles-request-servlet-1.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-template\3.0.1\tiles-template-3.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-autotag-core-runtime\1.1.0\tiles-autotag-core-runtime-1.1.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\tiles\tiles-request-jsp\1.0.1\tiles-request-jsp-1.0.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\httpcomponents\httpclient\4.2.3\httpclient-4.2.3.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\httpcomponents\httpcore\4.2.2\httpcore-4.2.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\json\json\20090211\json-20090211.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\querydsl\querydsl-core\2.5.0\querydsl-core-2.5.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\google\guava\guava\11.0.2\guava-11.0.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\commons\mysema-commons-lang\0.2.2\mysema-commons-lang-0.2.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\net\sourceforge\findbugs\jsr305\1.3.2\jsr305-1.3.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\cglib\cglib\2.2\cglib-2.2.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\asm\asm\3.1\asm-3.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\querydsl\querydsl-jpa\2.5.0\querydsl-jpa-2.5.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\querydsl\querydsl-apt\2.5.0\querydsl-apt-2.5.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\querydsl\querydsl-codegen\2.5.0\querydsl-codegen-2.5.0.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\com\mysema\codegen\codegen\0.4.11\codegen-0.4.11.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\mockito\mockito-all\1.9.5\mockito-all-1.9.5.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\junit\junit\4.10\junit-4.10.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\org\hamcrest\hamcrest-core\1.1\hamcrest-core-1.1.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\javax\mail\mail\1.4\mail-1.4.jar
ProjectClassLoader: entry=C:\Users\Luke\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar
ProjectClassLoader: entry=C:\Program Files\eclipse-java\plugins\org.junit_4.10.0.v4_10_0_v20120426-0900\junit.jar
ProjectClassLoader: entry=C:\Program Files\eclipse-java\plugins\org.hamcrest.core_1.1.0.v20090501071000.jar
Excluded entry=C:\workspace-java\myapp\target\test-classes
init scanning folders...
add to scan list:C:\workspace-java\myapp\target\classes
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\tiles-config.xml
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\application-context.xml
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\security-context.xml
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\application-context-base.xml
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\mvc-dispatcher-servlet.xml
add to scan list:C:\workspace-java\myapp\src\main\webapp\WEB-INF\web.xml
Starting scanner at interval of 5 seconds.
2013-04-30 09:36:32.473:INFO::jetty-6.1.26
2013-04-30 09:36:32.934:INFO:/myapp:Set web app root system property: 'webapp.root' = [C:\workspace-java\myapp\src\main\webapp]
2013-04-30 09:36:32.980:INFO:/myapp:Initializing log4j from [C:\workspace-java\myapp\src\main\webapp\WEB-INF\log4j.properties]
2013-04-30 09:36:33.033:INFO:/myapp:Initializing Spring root WebApplicationContext
2013-04-30 09:36:36.566:INFO:/myapp:Initializing Spring FrameworkServlet 'mvc-dispatcher'
2013-04-30 09:36:36.657:INFO::Started [email protected]:8080
Hibernate Search 관련 로그 출력이 보이지 않습니까? 부트 로그 출력을 게시 할 수 있습니까? persistence.xml로 해봤습니까? 또한 참조하는 질문에 표시된 것과 같이 속성을지도로 정의 해 보았습니까? Hibernate와 Hibernate Search를 사용하고 있다면 어떤 버전을 사용합니까? – Hardy
@Hardy 응답 해 주셔서 감사합니다. 게시 된 부팅 로그. 속성 맵 사용 - 동일한 결과 (이전에 시도 했음) Hibernate Search에서 로그 출력을 볼 수 없습니다. 나는 Hibernate Search 버전 3.4.1과 Hibernate Core 4.1.9 버전을 사용하고있다. persistence.xml을 사용하지 않으려 고하지 않았으므로 사용하지 않으려 고했습니다. 내가 말했듯이, 나는 이것이 언제 필요한지 약간 불명확하다. Spring/JPA/annotation 기반 구성을 사용하는 경우 필자가 이해할 수있는 것은 잘못되었습니다. 그러나, 그것은 명확하게 최대 절전 모드 검색에 필요한지 여부에 관해서는 명확하지 않다. – Luke