2017-02-21 4 views
0

J'utilise Kundera avec Datastax DS Driver pour la connexion Cassandra. Sur persistence.xml, je définis comme le port 9042.Kundera avec le port de connexion du pilote Datastax DS

Cependant, je remarque que ce Kundera n'a pas réussi à se connecter à Cassandra:

Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.503 sec <<< FAILURE! - in com.abc.DataServiceImplTest 
writeReadTest(com.abc.DataServiceImplTest) Time elapsed: 0.38 sec <<< ERROR! 
com.impetus.kundera.configure.schema.SchemaGenerationException: Error while opening socket, Caused by: . 
    at com.impetus.client.cassandra.schemamanager.CassandraSchemaManager.initiateClient(CassandraSchemaManager.java:718) 
    at com.impetus.kundera.configure.schema.api.AbstractSchemaManager.exportSchema(AbstractSchemaManager.java:112) 
    at com.impetus.client.cassandra.schemamanager.CassandraSchemaManager.exportSchema(CassandraSchemaManager.java:166) 
    at com.impetus.kundera.configure.SchemaConfiguration.configure(SchemaConfiguration.java:191) 
    at com.impetus.kundera.configure.ClientMetadataBuilder.buildClientFactoryMetadata(ClientMetadataBuilder.java:48) 
    at com.impetus.kundera.persistence.EntityManagerFactoryImpl.configureClientFactories(EntityManagerFactoryImpl.java:408) 
    at com.impetus.kundera.persistence.EntityManagerFactoryImpl.configure(EntityManagerFactoryImpl.java:161) 
    at com.impetus.kundera.persistence.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:135) 
    at com.impetus.kundera.KunderaPersistence.createEntityManagerFactory(KunderaPersistence.java:85) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 

Et une fois que j'activé le port Thrift (9160)/etc /cassandra/cassandra.yaml, les choses commencent à marcher.

Voici le persistence.xml:

<persistence-unit name="cassandra_pu"> 
<provider>com.impetus.kundera.KunderaPersistence</provider> 
<class>com.abc.Person</class> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 

<properties> 
     <property name="kundera.nodes" value="localhost" /> 
     <property name="kundera.port" value="9042" /> 
     <property name="kundera.keyspace" value="testkeyspace" /> 
    <property name="kundera.ddl.auto.prepare" value="update" /> 
    <property name="kundera.dialect" value="cassandra" /> 
     <property name="kundera.client.lookup.class" 
      value="com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory" /> 
    <property name="kundera.annotations.scan.package" value="com.abc.impl"/> 
</properties> 

Je me demande si je dois permettre à 9160, même avec l'aide de DS-pilote?

Merci!

+0

Kundera prend en charge les opérations CRUD à l'aide du pilote de datastax lors de l'utilisation du module datastax. Mais peu de fonctionnalités telles que la génération automatique de schéma sont prises en charge uniquement avec le port Thrift. –

+0

Merci. Cela signifie que même si j'utilise DSDriver, le serveur RPC pour Thrift doit rester ouvert, n'est-ce pas? Merci. – FrankC

+0

Oui, c'est correct ... –

Répondre

0

kundera.ddl.auto.prepare travaux via voie Thrift qui fonctionne sur le port 9160, mais vous utilisez com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory fournies par DataStax & travaux sur le port 9042 que vous avez également mentionné dans votre persistence.xml. Ainsi,

suppression de cette ligne

<property name="kundera.ddl.auto.prepare" value="update" />

de votre persistence.xml résoudra ce problème.