前提・実現したいこと
Eclipseを使用した開発環境で、Javaからcassandraにアクセスし、何か(キースペース等、とりあえずcassandraにアクセスして何か)を表示しようと試みています。
以下のサイト等参考にしながら行っています。
http://d.hatena.ne.jp/akishin999/20100430/1272642657
該当のソースコード
java
1import java.io.UnsupportedEncodingException; 2import java.util.Date; 3import java.util.Map; 4 5import org.apache.cassandra.thrift.Cassandra; 6import org.apache.cassandra.thrift.Column; 7import org.apache.cassandra.thrift.ColumnPath; 8import org.apache.cassandra.thrift.ConsistencyLevel; 9import org.apache.cassandra.thrift.InvalidRequestException; 10import org.apache.cassandra.thrift.NotFoundException; 11import org.apache.cassandra.thrift.TimedOutException; 12import org.apache.cassandra.thrift.UnavailableException; 13import org.apache.thrift.TException; 14import org.apache.thrift.protocol.TBinaryProtocol; 15import org.apache.thrift.protocol.TProtocol; 16import org.apache.thrift.transport.TSocket; 17import org.apache.thrift.transport.TTransport; 18 19import com.datastax.driver.core.KeyspaceMetadata; 20 21/** 22 * シンプルなインサート。 23 * 24 */ 25public class SimpleInsert1 { 26 27 public static void main(String[] args) { 28 try { 29 30 // Thrift を使用して Cassandra に接続 31 TTransport port = new TSocket("localhost", 9160); 32 TProtocol protocol = new TBinaryProtocol(port); 33 Cassandra.Client client = new Cassandra.Client(protocol); 34 port.open(); 35 36 // クラスタ名の表示 37 System.out.printf("Cluster name : [%s]\n", client.describe_cluster_name()); 38 39 // バージョンの表示 40 System.out.printf("Version : [%s]\n", client.describe_version()); 41 42// // 接続中クラスタの全キースペースを取得 43// for (String keyspace : client.describe_keyspaces()) { 44// // キースペース名の表示 45// System.out.printf("Keyspace : [%s]\n", keyspace); 46// // キースペース内の全 Column Family の取得 47// for (Map.Entry<String, Map<String, String>> entry : client.describe_keyspace(keyspace).entrySet()) { 48// System.out.printf("\tColumn Family : [%s]\n", entry.getKey()); 49// for (Map.Entry<String, String> innerEntry : entry.getValue().entrySet()) { 50// System.out.printf("\t\t[%s]:[%s]\n", innerEntry.getKey(), innerEntry.getValue()); 51// } 52// } 53// } 54 55 port.close(); 56 } catch (Exception e) { 57 e.printStackTrace(); 58 } 59 } 60}
補足情報(使用バージョンなど)
Eclipse:Version: 2018-09 (4.9.0)
cassandra:apache-cassandra-3.11.3 6
発生している問題・エラーメッセージ
上記バージョンでおこなていますが、デバッグするとport.open();のところでエラーが検出されます。
一体どういう理由が考えられるのでしょうか?
org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused) at org.apache.thrift.transport.TSocket.open(TSocket.java:187) at SimpleInsert1.main(SimpleInsert1.java:34) Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.thrift.transport.TSocket.open(TSocket.java:182) ... 1 more
以下のメッセージにもはまっており、デバッグができかねる状況です。
「注: この要素の Javadoc は、添付されたソースまたは添付された Javadoc で見つかりませんでした。」
試したこと
調べていますが解決していません。可能であればこちらもご教授頂ければ助かります。
状況
これくらいは自力で調査していけと言われそうですが、このテーマを行ってから結構時間がたっています。
java、eclipseにもそんなに詳しいわけではなく、調べるところが多いです。
効率のいい道筋があればいいですが試行錯誤でできることから少しずつでも前に進めています。
もう少しスピードをあげたいです。
解決の方向としておそらく今回のバージョンに合わせ、接続箇所を変更する必要があると思いますので、そこを中心に調査中です。
しかしながらその調査にあたりわからないことが色々あり、例えば上記のjavadocに関してで、これを設定しないとデバッグの調査が進みません。
1つ1つの調査に時間がかかりすぎています。
調査はもちろん進めますが、何かわかることがあればお力いただきたいです。
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/03 04:39 編集
2018/11/05 15:56
2018/11/05 16:05
2018/11/05 16:08
2018/11/06 13:52