我在一个web项目中使用solr-5.0.0。我只是在构造函数中创建httpsolrserver对象,如下所示
static HttpSolrClient solr;
public SolrTestDAO() {
if (solr == null) {
solr = new ttpSolrClient("http://localhost:8983/solr/testDB");
}
}
使用httpsolrserver对象作为静态对象有什么问题吗,因为它是一个web项目。如果这不是正确的方法,任何人都可以建议我正确的方法,这样我的应用程序性能将高,内存使用率将太低。
最佳答案
不。实际上,这是使用httpsolrserver的预期方式。以下是httpsolrserver代码中的一段注释:
httpsolrserver是线程安全的,如果使用以下构造函数,
必须对所有请求重新使用同一实例。如果实例创建于
苍蝇,它会导致连接泄漏。建议的做法是
每个solr服务器url的httpsolrserver静态实例,并为所有请求共享它。
请参见SolrJ Wiki Page。还有一篇有趣的博客文章,如果你不把它变成静态的here,会发生什么。