2013-08-28 2 views
2

내 애플리케이션을 Play 2.0.3에서 Play Framework (2.1.3) 및 play2-elasticsearch 플러그인의 최신 버전으로 마이그레이션하려고합니다.play2-elasticsearch with play framework 2.1.3

플러그인 추가 정보 파일에 내가 0.7-SNAPSHOT 버전을 사용하고 있습니다.

"com.github.cleverage" % "elasticsearch_2.9.1" % "0.4.1" 

과되었다 :

내 SBT이었다

"com.clever-age" % "play2-elasticsearch" % "0.7-SNAPSHOT" 

그리고 응용 프로그램 시작에 NullPointerException이 받고 있어요 :

play.api.Configuration$$anon$1: Configuration error[Cannot register class [models.indexing.ClientIndex] in Ebean server] 
    at play.api.Configuration$.play$api$Configuration$$configError(Configuration.scala:81) ~[play_2.10.jar:2.1.3] 
    at play.api.Configuration.reportError(Configuration.scala:559) ~[play_2.10.jar:2.1.3] 
    at play.Configuration.reportError(Configuration.java:298) ~[play_2.10.jar:2.1.3] 
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:71) ~[play-java-ebean_2.10.jar:2.1.3] 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:68) ~[play_2.10.jar:2.1.3] 
    at play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:68) ~[play_2.10.jar:2.1.3] 
    at scala.collection.immutable.List.foreach(List.scala:309) ~[scala-library.jar:na] 
    at play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:68) ~[play_2.10.jar:2.1.3] 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:68) ~[play_2.10.jar:2.1.3] 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:68) ~[play_2.10.jar:2.1.3] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[play_2.10.jar:2.1.3] 
    at play.api.Play$.start(Play.scala:67) ~[play_2.10.jar:2.1.3] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:141) ~[play_2.10.jar:2.1.3] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:114) ~[play_2.10.jar:2.1.3] 
    at scala.Option.map(Option.scala:145) ~[scala-library.jar:na] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:114) ~[play_2.10.jar:2.1.3] 
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.1.3] 
    at scala.util.Either$RightProjection.flatMap(Either.scala:523) ~[scala-library.jar:na] 
    at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.1.3] 
    at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:104) ~[play_2.10.jar:2.1.3] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library.jar:na] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_09] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_09] 
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_09] 
Caused by: java.lang.ExceptionInInitializerError: null 
    at com.github.cleverage.elasticsearch.Index.getIndexPath(Index.java:37) ~[play2-elasticsearch-0.7-SNAPSHOT.jar:0.7-SNAPSHOT] 
    at com.github.cleverage.elasticsearch.Index$Finder.<init>(Index.java:144) ~[play2-elasticsearch-0.7-SNAPSHOT.jar:0.7-SNAPSHOT] 
    at models.indexing.ClientIndex.<clinit>(ClientIndex.java:18) ~[na:na] 
    at java.lang.Class.forName0(Native Method) ~[na:1.7.0_09] 
    at java.lang.Class.forName(Unknown Source) ~[na:1.7.0_09] 
    at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:69) ~[play-java-ebean_2.10.jar:2.1.3] 
    ... 21 common frames omitted 
Caused by: java.lang.NullPointerException: null 
    at com.github.cleverage.elasticsearch.IndexService.<clinit>(IndexService.java:43) ~[play2-elasticsearch-0.7-SNAPSHOT.jar:0.7-SNAPSHOT] 
    ... 27 common frames omitted 

그래서 나는 경우가 a similar question 설명 생각을 내 경우가 아니야.

이 문제를 해결하는 데 도움을주십시오.

업데이트 :

내 ElasticSearch 구성 :

## ElasticSearch Configuration 
############################## 
## define local mode or not 
elasticsearch.local=true 

## list clients 
# ex : elasticsearch.client="192.168.0.46:9300,192.168.0.47:9300" 

## Name of the index 
elasticsearch.index.name="play2-elasticsearch" 

## Custom settings to apply when creating the index (optional) 
# elasticsearch.index.settings="{ analysis: { analyzer: { my_analyzer: { type: \"custom\", tokenizer: \"standard\" } } } }" 

## define package or class separate by commas for loading @IndexType and @IndexMapping information 
elasticsearch.index.clazzs="models.*" 

## show request & result json of search request in log 
elasticsearch.index.show_request=true 
+1

플러그인 구성 (= "elasticsearch"로 시작하는 키의 모든 구성 값)을 추가 할 수 있습니까? – mguillermin

답변

2

구성이 좋은 것 같다.

stacktrace와 관련하여 Ebean 플러그인이 시작시 models.indexing.ClientIndex 클래스에 액세스하려고하고 있으며 Elasticsearch 구성을 아직 사용할 수없는 것 같습니다. 따라서 NullPointerException이 발생합니다.

나는 두 가지 제안 :

    가 ebean 스캔 패키지 외부에서 "색인"클래스를 이동
  • (키 설정에 의해 정의 된 ebean.default)
  • 또는를 설정하여 ebean 전에 elasticsearch 모듈을로드 com.github.cleverage.elasticsearch.plugin.IndexPlugin 앞에있는 conf/play.plugins 파일의 숫자가 300보다 작아야합니다.
+0

감사합니다! 두 방법 모두이 문제를 해결합니다. – Nailgun