Spring BootプロジェクトでCassandra 3.xを使いたいです。 Spring Data Cassandraプロジェクトの現在のリリース版では、Cassandra 2.xのみがサポートされていることが分かりました。だから私はSpring Data Cassandraプロジェクトの代わりにDataStaxドライバを使いたいと思っていました。私はSpring Boot 1.4.1とCassandra 3.x
compile 'com.datastax.cassandra:cassandra-driver-core:3.1.1'
を依存関係として追加しました。これで、カサンドラクラスターのキースペースに値を挿入できます。 RESTコントローラのテスト、私はエラーを取得する
java.lang.NoClassDefFoundError: io/netty/handler/codec/http/FullHttpRequest
を実行している場合に依存性とエラーが離れていったとしてしかし、だから私は
compile 'io.netty:netty-all:4.1.6.Final'
を追加しました。しかし、今
TestRestTemplate.postForObject(...)
または
TestRestTemplate.put(...)
を使用して、すべてのテストが失敗します。しかし、使用
TestRestTemplate.getForObject(...)
期待どおりに動作します。私は、Spring Bootの依存関係と、依存関係として追加したNettyのバージョンにいくつかの衝突があると仮定します。
DataStax Cassandraドライバの最新バージョンが、追加のNetty依存関係なしで動作することがわかったのは、2015年3月3日で、Cassandra 3をサポートしていない2.1.5です。このドライバを使用するとすべて動作しますが、古いドライバを使いたい。
更新日: DataStaxドライバの依存関係を削除し、1.5.0.M1バージョンのSpring Data Cassandraを使用しようとしましたが、Spring、Spring Data CassandraおよびCassandraドライバのバージョンがbuildscriptで上書きされました。
ext['spring.version'] = '5.0.0.M2'
ext['spring-data-releasetrain.version'] = 'Ingalls-M1'
ext['cassandra-driver.version'] = '3.1.1'
これは、次のエラーが発生しました:
java.lang.NoClassDefFoundError: io/netty/util/Timer
カサンドラの機能を使用している場合。 Nettyを再度組み込むと、Cassandraの機能は動作しますが、TestRestTemplate.put
と.post
を使ったテストはもう実行されません。 Spring Data Cassandra 1.5.0.M1も含まれている、Spring Boot Version 2.0.0.BUILD-SNAPSHOTにアップグレードしようとしました。今私は、アプリケーションを起動し、DataStaxドライバの機能を使用すると、以前と同じNoClassDefFoundErrorを取得します。依存関係が再び私TestRestTemplateベースのユニットテストを殺すよう...ネッティーを追加
UPDATE:春ブーツは、それがクラスパス上にネッティーを見つけ、Netty4ClientHttpRequestFactory
が動作するようには思えないときNetty4ClientHttpRequestFactory
を使用するように設定しているためTestRestTemplate
が動作しません。
は、修正のためにhttps://github.com/spring-projects/spring-boot/issues/7240 とhttps://jira.spring.io/browse/SPR-14860
を参照してください、この質問に私の答えを参照してください。
次期リリースの春データカサンドラ1.5は、カサンドラ3.xのをサポートします(https://spring.io/blog/2016/07/27/spring-data-release-train-ingalls-m1-releasedを参照してくださいhttps://stackoverflow.com/questions/40020828/missing-artifact-spring-data-cassandra-1-5-0m1)。 Datastax '3.1.1ドライバには、4.0.37.finalのnettyが必要です。 – mp911de