Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注入的SolrTemplate资源未连接到HttpSolrServer_Java_Spring_Solr_Spring Boot_Spring Data Solr - Fatal编程技术网

Java 注入的SolrTemplate资源未连接到HttpSolrServer

Java 注入的SolrTemplate资源未连接到HttpSolrServer,java,spring,solr,spring-boot,spring-data-solr,Java,Spring,Solr,Spring Boot,Spring Data Solr,我正在使用带有自定义存储库功能的Spring data Solr 1.4来尝试实现本文所述的计数功能: 我正在使用配置为使用多核的Solr。我的常规存储库接口获取并使用正确的SolrTemplate和SolrServer实例,但自定义存储库不会获取相同的模板实例。除了使用@Resource注入bean之外,我还尝试获取spring应用程序上下文并从中提取bean。在这两种情况下,我都得到了一个不知道我的核心是什么的solrServerbean引用,因此当查询试图在以下位置到达solr时失败:而不

我正在使用带有自定义存储库功能的Spring data Solr 1.4来尝试实现本文所述的计数功能:

我正在使用配置为使用多核的Solr。我的常规存储库接口获取并使用正确的
SolrTemplate
SolrServer
实例,但自定义存储库不会获取相同的模板实例。除了使用
@Resource
注入bean之外,我还尝试获取spring应用程序上下文并从中提取bean。在这两种情况下,我都得到了一个不知道我的核心是什么的
solrServer
bean引用,因此当查询试图在以下位置到达solr时失败:而不是

bean定义如下所示:

@Bean
@Scope(value=ConfigurableBeanFactory.SCOPE_SINGLETON)
public SolrServer solrServer() {
    SolrServer server = new HttpSolrServer(solrServerUrl);
    return server;
}

@Bean(name = "solrTemplate")
@Scope(value=ConfigurableBeanFactory.SCOPE_SINGLETON)
public SolrTemplate solrTemplate(SolrServer server) throws Exception {
    SolrTemplate template = new SolrTemplate(server);
    template.setSolrCore(mainCore);
    return template;
}
我的测试是这样的:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SearchEngineApplication.class, loader=SpringApplicationContextLoader.class)

public class MainRepositoryTest {

@Autowired
private MainRepository mainRepository;
...
    @Test
    public void testCountResults(){
        long count= citcMainRepository.count("red");
        System.out.println("Found " + count + " results for the term red" );
        assertTrue(count > 0);
    }
}
测试总是失败:

<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing /solr/select
HTTP错误404 访问/solr/select时出现问题 当它应该到达的正确url是
/solr/select/myCore

关于我在这里可能误解了什么,有什么建议吗? 欢迎回复


--Griff

通过创建第二个相同类型的bean并向其添加限定符,我自己能够解决这个问题

在我的SolrContext中,我定义了bean工厂和bean定义: @豆子 公共SolrServerFactory SolrServerFactory(){ 返回新的MultiResolrServerFactory(新的HttpSolrServer(solrServerUrl)); }

然后在我的UnitTest中对存储库进行如下限定:

公共类CITCMainRepositoryTest{

@Autowired
@Qualifier(value="mainRepo")
private MainRepository mainRepository; 

@Test
public void testFindByLastName() {
    List<SearchResponse> searchItems= mainRepository.findByLastName("Hunt");
    assertTrue(searchItems.size() > 0);
}
...
@Autowired
@限定符(value=“mainRepo”)
私有主存储库主存储库;
@试验
public void testFindByLastName(){
List searchItems=mainRepository.findByLastName(“Hunt”);
assertTrue(searchItems.size()>0);
}
...
}

希望这对其他人有帮助


--Griff

通过创建第二个相同类型的bean并向其添加限定符,我自己能够解决这个问题

在我的SolrContext中,我定义了bean工厂和bean定义: @豆子 公共SolrServerFactory SolrServerFactory(){ 返回新的MultiResolrServerFactory(新的HttpSolrServer(solrServerUrl)); }

然后在我的UnitTest中对存储库进行如下限定:

公共类CITCMainRepositoryTest{

@Autowired
@Qualifier(value="mainRepo")
private MainRepository mainRepository; 

@Test
public void testFindByLastName() {
    List<SearchResponse> searchItems= mainRepository.findByLastName("Hunt");
    assertTrue(searchItems.size() > 0);
}
...
@Autowired
@限定符(value=“mainRepo”)
私有主存储库主存储库;
@试验
public void testFindByLastName(){
List searchItems=mainRepository.findByLastName(“Hunt”);
assertTrue(searchItems.size()>0);
}
...
}

希望这对其他人有帮助

--格里夫