2017-02-13 16 views
2

コア名を追加、 イムspring-data-solrが間違ったURLを作成しています。私の春・データのSolrプロジェクトでは二回

org.springframework.data.solrを得ます。 UncategorizedSolrException: サーバからのエラーhttp://localhost:8983/solr/preauth:期待されるmimeタイプ アプリケーション/オクテットストリームがtext/htmlを取得しました。

操作が間違っているときに生成されるURL。これにはコア名が2回含まれています。

ザ・スタックトレース:

<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 
<title>Error 404 Not Found</title> 
</head> 
<body><h2>HTTP ERROR 404</h2> 
<p>Problem accessing /solr/preauth/preauth/select. Reason: 
<pre> Not Found</pre></p> 
</body> 
</html> 

は、SolrのURLは、コア名 "PREAUTH" が2回が含まれています。

私の依存関係:

<dependency> 
<groupId>org.springframework.data</groupId> 
<artifactId>spring-data-solr</artifactId> 
<version>2.1.0.RELEASE</version> 
</dependency> 

私の構成:

@Configuration 
@EnableSolrRepositories(basePackages = { "com.abi.claimbook" }, multicoreSupport = true) 
public class SolrConfig { 

    @Value("${solr.claimbook.url}") 
    private String host; 

    @Bean 
    public SolrClient solrClient() throws Exception { 
    HttpSolrClientFactoryBean factory = new HttpSolrClientFactoryBean(); 
    factory.setUrl(host); 
    factory.afterPropertiesSet(); 
    SolrClient client = factory.getSolrClient(); 
    return client; 
    } 

    @Bean 
    public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception { 
    SolrTemplate solrTemplate = new SolrTemplate(solrClient); 
    return solrTemplate; 
    } 

} 

マイドキュメント豆:

@SolrDocument(solrCoreName = "preauth") 
public class Preauth { 

    @Id 
    @Indexed 
    @Field 
    private Integer preauthId; 

    @Indexed 
    @Field 
    private String patientName; 

    @Indexed 
    @Field 
    private String alNumber; 
    ..... 
Getters and setters... 
..... 

マイリポジトリ:

public interface SolrPreauthRepository extends SolrCrudRepository<Preauth, Integer> { 

} 
+2

これは、マルチコアサポートを使用している現在の実装のバグです。マルチコアサポートを無効にしてみてください。更新については、[DATASOLR-364](https://jira.spring.io/browse/DATASOLR-364)を参照してください。 –

答えて

3

これは、Spring Data Solrの現行バージョンのバグが原因です。

潜在的な回避策は、ビルドスクリプト内のSpringブートバージョンを、これが当てはまらない旧バージョン(v1.4.3.RELEASE)に更新することです。 Gradleのため

例:

buildscript { 
    ext { 
     springBootVersion = '1.4.3.RELEASE' 
    } 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 
    } 
} 

詳しいバグ情報:https://jira.spring.io/browse/DATASOLR-364

1

それは既知のバグです。 彼らはそれを修正しましたが、まだリリースされていません。 スナップショットリリースを使用することができます。

repositories { 
    maven { 
     url "https://repo.spring.io/libs-snapshot" 
    } 
} 


dependencies { 
    compile('org.springframework.data:spring-data-solr:2.2.0.DATASOLR-364-SNAPSHOT') 
}