使用 JBoss EAP 6.1 和 Solr 4.5
人们如何在 EJB 容器中与 Solr(通过 Solrj)交互?大多数人是否创建了一个包含 SolrServer 实现的托管 bean?有多少实例或单例(排队提交等)?还考虑使用增加线程安全考虑的嵌入式服务器。
有没有一个 JCA 适配器?
最好的方法是在 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>
干杯!