2015-12-15 2 views
0

Je reçois l'erreur suivante lorsque j'exécute mon application via la console SBT dans Intellij IDEA.Impossible de se connecter à Cassandra db via Kundera dans Play! framework

[info] play - Application started (Dev) 
[error] c.i.c.c.t.ThriftClientFactory - Error during pool creation: caused by 
org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)! 
    at net.dataforte.cassandra.pool.ConnectionPool.init(ConnectionPool.java:345) ~[cassandra-connection-pool-0.7.1.jar:na] 
    at net.dataforte.cassandra.pool.ConnectionPool.<init>(ConnectionPool.java:127) ~[cassandra-connection-pool-0.7.1.jar:na] 
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:146) ~[kundera-cassandra-2.5.jar:na] 
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) [kundera-core-2.5.jar:na] 
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) [kundera-core-2.5.jar:na] 
Caused by: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)! 
    at org.apache.thrift.transport.TFastFramedTransport.readFrame(TFastFramedTransport.java:144) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.transport.TFastFramedTransport.read(TFastFramedTransport.java:134) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) ~[libthrift-0.7.0.jar:0.7.0] 
[error] application - 

! Internal server error, for (GET) [/] -> 

java.lang.ExceptionInInitializerError: null 
    at models.process.EmployeeProcessImpl$.<init>(EmployeeProcess.scala:82) ~[myEntities.jar:na] 
    at models.process.EmployeeProcessImpl$.<clinit>(EmployeeProcess.scala) ~[myEntities.jar:na] 
    at controllers.Application$.<init>(Application.scala:168) ~[na:na] 
    at controllers.Application$.<clinit>(Application.scala) ~[na:na] 
    at Routes$$anonfun$routes$1$$anonfun$applyOrElse$1$$anonfun$apply$1.apply(routes_routing.scala:107) ~[na:na] 
Caused by: com.impetus.kundera.loader.ClientLoaderException: org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)! 
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:151) ~[kundera-cassandra-2.5.jar:na] 
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) ~[kundera-core-2.5.jar:na] 
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) ~[kundera-core-2.5.jar:na] 
    at com.impetus.kundera.configure.Configurator.configure(Configurator.java:65) ~[kundera-core-2.5.jar:na] 
    at com.impetus.kundera.KunderaPersistence.initializeKundera(KunderaPersistence.java:109) ~[kundera-core-2.5.jar:na] 
Caused by: org.apache.thrift.TException: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)! 
    at net.dataforte.cassandra.pool.ConnectionPool.init(ConnectionPool.java:345) ~[cassandra-connection-pool-0.7.1.jar:na] 
    at net.dataforte.cassandra.pool.ConnectionPool.<init>(ConnectionPool.java:127) ~[cassandra-connection-pool-0.7.1.jar:na] 
    at com.impetus.client.cassandra.thrift.ThriftClientFactory.createPoolOrConnection(ThriftClientFactory.java:146) ~[kundera-cassandra-2.5.jar:na] 
    at com.impetus.kundera.loader.GenericClientFactory.load(GenericClientFactory.java:95) ~[kundera-core-2.5.jar:na] 
    at com.impetus.kundera.configure.ClientFactoryConfiguraton.configure(ClientFactoryConfiguraton.java:67) ~[kundera-core-2.5.jar:na] 
Caused by: org.apache.thrift.transport.TTransportException: Read a negative frame size (-2080374784)! 
    at org.apache.thrift.transport.TFastFramedTransport.readFrame(TFastFramedTransport.java:144) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.transport.TFastFramedTransport.read(TFastFramedTransport.java:134) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) ~[libthrift-0.7.0.jar:0.7.0] 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) ~[libthrift-0.7.0.jar:0.7.0] 
[error] application - Error while rendering default error page 
scala.MatchError: java.lang.ExceptionInInitializerError (of class java.lang.ExceptionInInitializerError) 
    at play.api.GlobalSettings$class.onError(GlobalSettings.scala:148) ~[play_2.11-2.3.0.jar:2.3.0] 
    at play.api.DefaultGlobal$.onError(GlobalSettings.scala:206) [play_2.11-2.3.0.jar:2.3.0] 
    at play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:76) [play_2.11-2.3.0.jar:2.3.0] 
    at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:86) [play_2.11-2.3.0.jar:2.3.0] 
    at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:84) [play_2.11-2.3.0.jar:2.3.0] 

L'exemple, je travaille avec prise de: http://blog.knoldus.com/2014/06/22/playing-kundera-cassandra/

J'ai Play! 2.4.6 cadre avec Cassandra 2.2. Quel pourrait être le problème avec le projet qui ne permet pas de se connecter à la base de données? Ai-je besoin de faire des changements concernant la version de CQL ou Kundera pour que ma base de données puisse se connecter? Mon fichier persistence.xml est comme sous:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    https://raw.github.com/impetus-opensource/Kundera/Kundera-2.0.4/kundera-core/src/test/resources/META-INF/persistence_2_0.xsd" 
    version="2.0"> 

    <persistence-unit name="cassandra_employees"> 
     <provider>com.impetus.kundera.KunderaPersistence</provider> 
     <class>models.domains.Employee</class> 
     <properties> 
      <property name="kundera.nodes" value="localhost" /> 
      <property name="kundera.port" value="9042" /> 
      <property name="kundera.keyspace" value="EmployeeExample" /> 
      <property name="kundera.dialect" value="cassandra" /> 
      <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" /> 
      <property name="kundera.cache.provider.class" value="com.impetus.kundera.cache.ehcache.EhCacheProvider" /> 
      <property name="kundera.cache.config.resource" value="/ehcache-test.xml" /> 
     </properties> 
    </persistence-unit> 

</persistence> 

S'il vous plaît me dire si je dois faire une version de changements liés à Cassandra ou CQL et que trop dans quel fichier?

+0

Quelle pourrait être la raison pour laquelle la base de données ne se connecter? Quel autre changement lié à la configuration est nécessaire pour connecter Cassandra db à partir de mon système local. J'ai installé Play! cadre et Cassandra sur un seul système lui-même, mais ne pas être en mesure de connecter Cassandra db à partir de mon code. Toute aide est appréciée. –

+0

changez le port en '9160' et vous pouvez supprimer les propriétés' kundera.cache.provider.class' et 'kundera.cache.config.resource'. –

+0

Le port de' native_transport_port' est 9042 dans le fichier cassandra.yaml. Donc 9160 fonctionnerait bien dans ce cas ou non? Aussi dois-je le changer en 9160 dans le fichier 'persistence.xml' ou' cassandra.yaml'? –

Répondre

0

utilisé ci-dessous config et il fonctionne très bien sur mon système ..

cassandra.yaml mise à jour:
DE: start_rpc: false
À: start_rpc: true

persistence.xml:
nom de l'unité mentionné ci-dessous est aléatoire qui sera utilisé pour accéder à cette persistance particulière.
nom de l'espace de touches est le nom de la table créée dans cassandra.

<persistence-unit name="persistence"> 
     <provider>com.impetus.kundera.KunderaPersistence</provider> 
     <properties> 
      <property name="kundera.nodes" value="localhost" /> 
      <property name="kundera.port" value="9160" /> 
      <property name="kundera.keyspace" value="trial1" /> 
      <property name="kundera.dialect" value="cassandra" /> 
       <property name="kundera.client.lookup.class" value="com.impetus.client.cassandra.thrift.ThriftClientFactory" /> 

      <property name="kundera.pool.size.max.active" value="500" /> 
      <property name="kundera.pool.size.max.total" value="500" /> 
     </properties> 
+0

Je suis résolu avec le problème, mon problème est résolu en apportant quelques modifications dans persistence.xml et build.sbt lui-même. J'utilise la version Cassandra 2.2.4, et j'ai été incapable de faire une sauvegarde en utilisant nodetool depuis le terminal. Une idée à ce sujet? Il me dit une erreur comme 'nodetool: Impossible de se connecter à 'localhost: 7199' - ConnectException: 'Connection refused'. –