【问题标题】:Kundera with Datastax DS Driver Connection Port带有 Datastax DS 驱动程序连接端口的昆德拉
【发布时间】:2017-07-11 12:19:57
【问题描述】:

我将 Kundera 与 Datastax DS 驱动程序一起用于 Cassandra 连接。 在persistence.xml中,我将端口定义为9042。

但是,我注意到 Kundera 无法连接到 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)

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

这是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>

想知道我是否需要在使用 DS-Driver 的情况下启用 9160?

谢谢!

【问题讨论】:

  • Kundera 在使用 datastax 模块时使用 datastax 驱动程序处理 CRUD 操作。但是仅使用 Thrift 端口支持自动模式生成等少数功能。
  • 谢谢。所以这意味着即使我正在使用 DSDriver,Thrift 的 RPC 服务器仍然需要保持打开状态,对吗?谢谢。
  • 是的,没错……
  • 如果您不需要通过 Kundera 自动管理架构,则不需要 9160。禁用 kundera.ddl.auto.prepare 一切都很好。模式创建仍然是通过节俭的方式。猜猜,它应该被添加到 Kundera wiki,直到通过 DS 驱动程序启用支持。

标签: cassandra datastax-java-driver kundera


【解决方案1】:

kundera.ddl.auto.prepare 通过节俭方式工作,该方式在端口 9160 上工作,但您使用的是由 datastax 提供的 com.impetus.kundera.client.cassandra.dsdriver.DSClientFactory,并且在端口 9042 上工作,正如您在 persistence.xml 中提到的那样。所以,

删除此行

&lt;property name="kundera.ddl.auto.prepare" value="update" /&gt;

您的persistence.xml 将解决此问题。

【讨论】:

    猜你喜欢
    • 2018-01-10
    • 2017-07-07
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2018-02-17
    • 2023-03-21
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多