首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Datastax DS驱动程序连接端口的Kundera

带有Datastax DS驱动程序连接端口的Kundera
EN

Stack Overflow用户
提问于 2017-02-22 02:06:20
回答 1查看 334关注 0票数 1

我使用带有Datastax DS驱动程序的Kundera来连接Cassandra。在persistence.xml上,我将端口定义为9042。

然而,我注意到Kundera无法连接到Cassandra:

代码语言:javascript
复制
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)

一旦我在/etc/cassandra/cassandra.yaml中启用了Thrift端口(9160),一切就开始工作了。

下面是persistence.xml:

代码语言:javascript
复制
  <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>

想知道我是否需要启用9160,即使使用DS-Driver?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 18:23:17

kundera.ddl.auto.prepare通过thrift way工作,它工作在端口9160上,但您使用的是datastax提供的com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory &正如您在persistence.xml中提到的那样,它工作在端口9042上。所以,

删除此行

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

从你的persistence.xml中可以解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42374743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档