2017-02-21 51 views
0

Я использую Kundera с драйвером Datastax DS для подключения Cassandra. На persistence.xml, я определил, что порт 9042.Kundera с Datastax DS Connection Connection Port

Однако я заметил, что, что Кундера не удалось подключиться к Кассандре:

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) 

И когда я включил порт бережливости (9160) в/и т.д. /cassandra/cassandra.yaml, все начинает работать.

Вот 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> 

Wonder, если мне нужно, чтобы включить 9160 даже с помощью DS-драйвера?

Спасибо!

+0

Kundera заботится о CRUD-операциях с использованием драйвера datastax при использовании модуля datastax. Но несколько функций, таких как создание автоматической схемы, поддерживаются только с помощью порта Thrift. –

+0

Спасибо. Таким образом, это означает, что даже я использую DSDriver, сервер RPC для Thrift по-прежнему должен оставаться открытым, это правильно? Благодарю. – FrankC

+0

Да, это правильно ... –

ответ

0

kundera.ddl.auto.prepare работает через бережливость путь, который работает на порту 9160, но вы используете com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory предоставленный datastax & работ по порту 9042 вы также упоминали в вашем persistence.xml. Так,

удаления этой строки

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

из вашего persistence.xml будет решить эту проблему.