1

使用 JBoss EAP 6.1 和 Solr 4.5

人们如何在 EJB 容器中与 Solr(通过 Solrj)交互?大多数人是否创建了一个包含 SolrServer 实现的托管 bean?有多少实例或单例(排队提交等)?还考虑使用增加线程安全考虑的嵌入式服务器。

有没有一个 JCA 适配器?

4

1 回答 1

2

最好的方法是在 JPA 层中使用 HibernateSearch。

您将需要实现自己的 Solr Worker 后端,您可以在这里找到一个示例: HibernateSearchSolrWorkerBackend

在您的 solr worker 后端中,您将使用 SolrJ,并且在使用 HibernateSearch 注释注释您的实体后,它会在每个事务提交后自动与 solr 交互。因此,您的所有索引都将始终是最新的。

您可以查看整个示例以了解如何实现它 hibernate_search_solr_integration

在上面的项目中,您将找到一个完整的 spring 示例。如果你只想使用平面 JPA 对象,你需要在你的 persistence.xml 中有这样的东西

<?xml version="1.0" encoding="UTF-8"?>
 <persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
     <persistence-unit name="espn-mediacatalog">
        <jta-data-source>java:jboss/datasources/your-datasourceDS</jta-data-source>
    <properties>            


        <property name="hibernate.search.default.worker.backend" value="com.xxx.xxproject.jpa.solr.HibernateSearchSolrWorkerBackend" />         
        <property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.impl.RAMDirectoryProvider" />

    </properties>
</persistence-unit>

干杯!

于 2013-10-08T18:48:32.383 回答