私はcassandraで春のデータを設定しようとしています。しかし、私のアプリがTomcatにデプロイされているときに、次のエラーが発生します。
接続を確認すると、指定されたポートで使用できます。 (127.0.0.1:9042)。スタックトレースとスプリング構成を以下に示します。このエラーについて誰かが考えていますか?
完全なスタックトレース:
2015-12-06 17:46:25 ERROR web.context.ContextLoader:331 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cassandraSession': Invocation of init method failed; nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException: All Host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1572)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.Java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.Java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.Java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.Java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.Java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.Java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.Java:736)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.Java:759)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:480)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:434)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:106)
at org.Apache.catalina.core.StandardContext.listenerStart(StandardContext.Java:4994)
at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5492)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:901)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:877)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:649)
at org.Apache.catalina.startup.HostConfig.deployDirectory(HostConfig.Java:1245)
at org.Apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.Java:1895)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All Host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.Java:223)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.Java:78)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.Java:1230)
at com.datastax.driver.core.Cluster.init(Cluster.Java:157)
at com.datastax.driver.core.Cluster.connect(Cluster.Java:245)
at com.datastax.driver.core.Cluster.connect(Cluster.Java:278)
at org.springframework.cassandra.config.CassandraCqlSessionFactoryBean.afterPropertiesSet(CassandraCqlSessionFactoryBean.Java:82)
at org.springframework.data.cassandra.config.CassandraSessionFactoryBean.afterPropertiesSet(CassandraSessionFactoryBean.Java:43)
================================================= =================
スプリング構成:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans ...>
<cassandra:cluster id="cassandraCluster"
contact-points="127.0.0.1" port="9042" />
<cassandra:converter />
<cassandra:session id="cassandraSession" cluster-ref="cassandraCluster"
keyspace-name="blood" />
<cassandra:template id="cqlTemplate" />
<cassandra:repositories base-package="com.blood.dao.nosql" />
<cassandra:mapping entity-base-packages="com.blood.domain.nosql" />
</beans:beans>
問題は、Spring Data Cassandra(これを書いている2015年12月現在)は、Cassandra 3.xのサポートを提供していません。 freenodeの#springチャンネルの開発者の1人との会話:
[13:49] <_amicable>こんにちは、春のデータcassandraサポートcassandra 3.x?すべての依存関係とdatastaxドライバーが2.x
[13:49] <@_ ollie>友好的:近い将来ではありません。
[13:49] <_amicable> _ollie:ありがとう。
[13:50] <_amicable>次に、2.xと3.xの相対的なメリットを見ていきます;)
[13:51] <@_ ollie> SD Cassandraはこれまでのところ)コミュニティプロジェクトであり、その進捗は開発者が実際に費やすことができる時間に大きく依存します。
[13:51] <@_ ollie> 2016年2月にチームに加わって、プロジェクトをSpring Dataのコアプロジェクトにより緊密に連携させる予定です。
Cassandra 3.0で古いバージョンのドライバーを使用しているようです。 Cassandra 3.0は内部スキーマメタデータ表現を変更し、最新のドライバーのみがこのメタデータを解析できます。
Java Cassandra driver .0.0-alpha5 を使用して、Cassandra 3.0に接続します。