2013-01-17 9 views
10

Bir Play 2.0.1 uygulamasında çalışan yönetici konsolu gömülü bir neo4j sunucusu vardı. Kısa bir süre önce, DeadBolt ile uyumluluk adayı sürümüne geçtim ve uygulamanın artık çalışmadığını öğrendim.Logback.xml ile 2.1 ve Neo4J WrappingNeoServer hatalarını çalma

aşağıdaki yapıyordu sunucuyu başlatmak için: Ne yazık ki daha sonra almak

graphDb = (GraphDatabaseAPI) new GraphDatabaseFactory() 
       .newEmbeddedDatabaseBuilder(CONF_DBMETA_LOCATION) 
       .setConfig(ShellSettings.remote_shell_enabled, "true") 
       .newGraphDatabase(); 
     ServerConfigurator config; 
     config = new ServerConfigurator(graphDb); 
     // let the server endpoint be on a custom port 

     srv = new WrappingNeoServerBootstrapper(graphDb, config); 
     srv.start(); 

:

> java.lang.RuntimeException: 
> org.neo4j.kernel.lifecycle.LifecycleException: Component 
> '[email protected]' failed to 
> initialize. Please see attached cause exception. 

benim Build.scala nerede Neo4j-sunucudan slf4j ve logback bağımlılıkları kaldırarak denedi eklenir, ancak boşuna. Görünüşe göre yanlış logback.xml neo4j tarafından yüklenmektedir. Ayrıca, neo4j-server bağımlılığına notTransitive() öğesini eklerseniz, başlangıçtaki logback.xml uyarıları gider. Ben neo4j spesifik logback.xml kavanoz (lar) içine gömülü olduğunu ve sorun neden olduğunu düşünüyorum. Gördüğüm bir potansiyel çözüm, kod aracılığıyla özel bir yapılandırma yazmaktır, ancak bunu nasıl yapacağımdan emin değilim. Düşüncesi olan var mı? Başvuru için ben başlangıçta bu hataları alıyorum:

>  22:11:05,124 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find 
> resource [logback.groovy] 
>  22:11:05,125 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find 
> resource [logback-test.xml] 
>  22:11:05,125 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource 
> [logback.xml] at 
> [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml] 
>  22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] 
> occurs multiple times on the classpath. 
>  22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] 
> occurs at 
> [jar:file:/Users/steve/Code/play-2.1-RC1/framework/../repository/cache/org.neo4j.app/neo4j-server/jars/neo4j-server-1.9-SNAPSHOT.jar!/logback.xml] 
>  22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] 
> occurs at 
> [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml] 
>  22:11:05,139 |-INFO in [email protected] - URL 
> [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml] 
> is not of type file 
>  22:11:05,265 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug 
> attribute not set 
>  22:11:05,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate 
> appender of type [ch.qos.logback.core.ConsoleAppender] 
>  22:11:05,625 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as 
> [STDOUT] 
>  22:11:05,657 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming 
> default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for 
> [encoder] property 
>  22:11:05,707 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level 
> of ROOT logger to ERROR 
>  22:11:05,707 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching 
> appender named [STDOUT] to Logger[ROOT] 
>  22:11:05,707 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of 
> configuration. 
>  22:11:05,709 |-INFO in [email protected] - Registering 
> current configuration as safe fallback point 

tam istisna için aşağıya bakın:

> play.api.UnexpectedException: Unexpected exception[RuntimeException: 
> org.neo4j.kernel.lifecycle.LifecycleException: Component 
> '[email protected]' failed to 
> initialize. Please see attached cause exception.]  at 
> play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:134) 
> ~[play_2.10.jar:2.1-RC1] at 
> play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:101) 
> ~[play_2.10.jar:2.1-RC1] at scala.Option.map(Option.scala:145) 
> ~[scala-library.jar:na] at 
> play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:101) 
> ~[play_2.10.jar:2.1-RC1] at 
> play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:99) 
> ~[play_2.10.jar:2.1-RC1] at 
> scala.util.Either$RightProjection.flatMap(Either.scala:523) 
> [scala-library.jar:na] Caused by: java.lang.RuntimeException: 
> org.neo4j.kernel.lifecycle.LifecycleException: Component 
> '[email protected]' failed to 
> initialize. Please see attached cause exception. at 
> org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:258) 
> ~[neo4j-kernel-1.9.M03.jar:na] at 
> org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:88) 
> ~[neo4j-kernel-1.9.M03.jar:na] at 
> org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:83) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:206) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> EmbeddedGraphDB.initializeDatabase(EmbeddedGraphDB.java:70) 
> ~[na:na] at 
> EmbeddedGraphDB.<init>(EmbeddedGraphDB.java:51) 
> ~[na:na] Caused by: org.neo4j.kernel.lifecycle.LifecycleException: 
> Component '[email protected]' failed to 
> initialize. Please see attached cause exception. at 
> org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:471) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:62) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:96) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:245) 
> ~[neo4j-kernel-1.9.M03.jar:na] at 
> org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:88) 
> ~[neo4j-kernel-1.9.M03.jar:na] at 
> org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:83) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] Caused by: 
> org.neo4j.kernel.lifecycle.LifecycleException: Component 
> '[email protected]' was successfully 
> initialized, but failed to start. Please see attached cause exception. 
> at 
> org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:495) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:105) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.logging.LogbackService.init(LogbackService.java:106) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:465) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:62) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at 
> org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:96) 
> ~[neo4j-kernel-1.9.M03.jar:1.9.M03] Caused by: 
> java.lang.NoSuchMethodError: 
> org.codehaus.janino.ClassBodyEvaluator.setImplementedInterfaces([Ljava/lang/Class;)V 
> at 
> ch.qos.logback.core.joran.conditional.PropertyEvalScriptBuilder.build(PropertyEvalScriptBuilder.java:48) 
> ~[logback-core.jar:na] at 
> ch.qos.logback.core.joran.conditional.IfAction.begin(IfAction.java:67) 
> ~[logback-core.jar:na] at 
> ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 
> ~[logback-core.jar:na] at 
> ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 
> ~[logback-core.jar:na] at 
> ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 
> ~[logback-core.jar:na] at 
> ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50) 
> ~[logback-core.jar:na] 

Edit1 Detaylar

ben play_2 gelen logback.xml dosyasını kaldırıldı. 10.jar ve artık oynatma uygulamasının başlangıcında kayıttan çıkarılan uyarıyı almazsınız.

Daha sonra, neo4j logback.xml ve play2.1 logback.xml öğelerinin içeriğini oyunumun kökü içinde özel logback.xml olarak yerleştirmeyi bulmaya çalıştım. Play.application(). Yolu() ile aynı yol Belki de neo4j'nin onu alması yanlış bir yer mi?

Bağımlılıkları incelerken neo4j-server tarafından istenen bir janino sahibim. Ayrıca, kayıt için kavanozlarda herhangi bir çakışma görmüyorum ama belki bir şeyleri özlüyorum.

<configuration> 

    <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" /> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>${application.home}/logs/application.log</file> 
    <encoder> 
     <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern> 
    </encoder> 
    </appender> 

    <logger name="play" level="INFO" /> 
    <logger name="application" level="INFO" /> 

    <root level="ERROR"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="FILE" /> 
    </root> 

</configuration> 
: Ben de hiçbir başarı ile özel logback.xml içine aşağıdaki gibi Play2.1 wiki üzerinde listelenen varsayılan yapılandırmayı kopyalayarak çalıştı

https://gist.github.com/4559389

: İşte benim bağımlılık hiyerarşi 'oyun bağımlılıkları' dan bulunuyor 2

DÜZENLEME Kesinlikle logback bağımlılık ile ilgili bir sorun gibi görünüyor. Neo4j 0.9.30'a bağlıdır ve oyun 1,0.7'ye bağlıdır. Sanırım kütüphane yüklendiğinde bu versiyonlar arasında bir anpi değişimi var mı? Uygun yöntemi bulamıyor. Hala çalışma zamanında doğru bağımlılığı seçmek için logback.xml'de nasıl belirtileceğinden emin olamayacağınızdan emin olun. Play2.1RC1 Logback Dependency Neo4j Logback Dependency

Grafikler YED + SBT-bağımlılık grafiği ile oluşturulmuştur.

+0

Aynı sorunlarla karşılaşıyorum ... – fynn

+0

Bende ... çok sinir bozucu. – Mikesname

+0

@steveturner Aynı sorunun önü, bir ip arıyor ^^ – Mik378

cevap

5

Neo4j yaşam döngüsü istisnası ile ilgili olarak, Play 2.1'in daha yeni olan geri dönüş sürümü Neo4j'ler ile uyumlu olmadığı için atılır. Ben bu konuda koştum ve sadece benim Build.scala proje bağımlılıkları bu koyarak eski, uyumlu sürüme Play'in logback geçersiz sona erdi:

"ch.qos.logback" % "logback-core" % "1.0.3" force(), // this should override the Play version 
"ch.qos.logback" % "logback-classic" % "1.0.3" force(), 

sarılarak çekilme herhangi log4j Geçişli bağımlılıkları hariç ben de denedim iyi ölçmek için SBT en ivyXML parametresini ayarlayarak: en az Çal 2.1-RC2 için

ivyXML := 
    <dependencies> 
    <exclude module="log4j"/> 
    </dependencies> 

Bu tabii ki kırılgan bir düzeltmedir ama, iş gibi görünüyor. Ben hala Neo4j için kayıtlarını konfigüre eden numaralı sorunlarım var, bu yüzden bu cevabı daha sonra tekrar deneyeceğim.

Güncelleştirme: Logback'ten yeni olduğum için Play/Neo4j ile yapılandırmakta zorluk çekiyordum. Logback'in hata vermesini ve durum mesajlarında beni boğulmasını önlemek için, Play uygulamasının conf dizinine custom-logback.xml adlı bir dosya koymam gerekiyordu. Neo4j günlüğü yapılandırmasının bunu gerektirdiğini düşünüyorum. Mine içerir: çekinmeyin,

CONSOLE_LEVEL=ERROR 

(Logback uzmanlar: my conf dizininde Ayrıca

<included> 
    <logger name="eu.mypackage" level="info"> 
    </logger> 

    <logger name="org.neo4j" level="warn"> 
    </logger> 

    <root level="warn"> 
    </root> 
</included> 

, sadece bu satırı içeriyor (benim durumumda) logback.properties adlı bir dosya ihtiyaç gibiydi .

+0

Kullanılan kavanozlardan herhangi bir kayıt defteri dosyalarını kaldırdınız mı? Yinelenen bir logback.xml dosyasıyla ilgili uyarıları almaya devam ediyorum. Bir play_2.10/2.1-RC2/jar/play_2.10.jar! 'Ve bir tanesi org.neo4j.app/neo4j-server/jars/neo4j-server-1.9.M04.jar!' – fynn

+0

@fynn : Biliyorsun ki, Play 2.1-RC2 jar'undan 'logback.xml' 'yi çıkardım. Biraz daha araştırma yapacağım. – Mikesname

+0

Logback.xml kavanozlarının depo önbellekten kaldırılmasının uyarılardan kurtulduğunu ve yukarıdaki @Mikesname önerilerinde izlerseniz çalıştırmanızı sağladığını onaylayabilirim. – steveturner

2

İki ayrı sorunla karşılaşıyor gibi görünüyorsunuz. Bunlardan biri, Play'in Neo'larla çakışan bir logback.xml dosyası sağlamasıdır. İkincisi, NoSuchMethodError istisnasına neden olduğunu tahmin ettiğim, sınıf yolunda iki tür geri yükleme sürümünüz var gibi görünüyor.Play logback.xml dosyasını kaldırabilir ve bu içeriği "/custom-logback.xml" adlı bir dosyaya yükleyebilirseniz (Neo, logback yapılandırmamız yoluyla içerecektir) ve daha sonra yalnızca Logback'in bir sürümüne sahip olduğunuzdan emin olun (veya Özellikle, Janino), bu yardımcı olmalıdır.

+0

Rickard - bağımlılıklar için https://gist.github.com/4559389 bakın. Yinelenen bir kayıt göremiyorum ama belki bir şey özlüyorum. – steveturner

1

Sonuçta, Play 2.1, Neo4J ve logback arasındaki bağımlılık sorununu çözemedim. Eminim ki kolay ve hızlı bir çözümdür, ancak paket bağımlılığını açık bir şekilde değiştirmeden bunun nasıl yapılacağına emin değilim. Bunun yerine, gömülü sunucuyu şimdilik değiştirmek için Neo4J Java REST binding kullanmayı tercih ettim. İyi çalışır ve yerli API ve REST sarmalayıcı arasındaki farklar sadece birkaç küçük hıçkırık vardı. Gömülü sunucu için bağımlılıkları Build.scala'da bıraktım ve ayrıca katıştırılmış ve REST hizmetlerini çalışma zamanında belirlenebilecek ortak bir arabirimden ayırdım. İdeal olarak, bu ikisi de Play için eklentiler olmalıdır ...

0

Bu, yukarıda konu açıklaması ile tamamen ilgisiz gelebilir) bunların hiçbirini düzeltmek, bunlarla:

konu bizim için - bir Mac'te değilim, benim c Ubuntu'daki olleague - bizim durumumuzda (her ne sebeple olursa olsun) bulunmaması gereken Play's/lib dizinine getirilen kütüphane bağımlılıkları olduğu ortaya çıktı. Bu da bizim durumumuzda Janino - 2.5.10 ve 2.6.1'in iki versiyonudur. eski versiyon problemi çözdü. Meslektaşım, bu iki salımı tanımlamak için kullanılan adlandırma kurallarındaki farklılıklar hakkında, soruna neden olmuş olabilecek bir şeyden bahsetti.

Özet olarak; Bazı durumlarda, önemli olmayan veya beklenmeyen kütüphaneler için/lib dizininizi kontrol edin.