2016-06-02 6 views
0

データベースとしてcassandraを使用してREST APIを構築しようとしていますが、ドキュメントやサンプルがオンラインではありません。datastax java driver 3.0.0を使用しています。以下はcasandraでJava REST APIを構築する

public class CassandraDBUtil { 

private Cluster cluster; 
private PoolingOptions options; 
private Session session; 

public void connect(String node) { 
    options = new PoolingOptions(). setMaxRequestsPerConnection(HostDistance.LOCAL, 32768); 
    cluster = Cluster.builder() 
      .addContactPoint(node) 
      .withAddressTranslator(new EC2MultiRegionAddressTranslator()) 
      .withPoolingOptions(options) 
      .build(); 
    Metadata metadata = cluster.getMetadata(); 
    System.out.printf("Connected to cluster: %s\n", metadata.getClusterName()); 
    for (Host host : metadata.getAllHosts()) { 
     System.out.printf("Datacenter: %s; Host: %s; Rack: %s\n", host.getDatacenter(), host.getAddress(), 
       host.getRack()); 
    } 
    session = cluster.connect("dropalletcassdb"); 
} 

public Session getSession(){ 
    if(this.cluster != null){ 
     System.out.println("@@@@ Returning an old session"); 
     return this.session; 
    }else{ 
     System.out.println("@@@ Creating a new session"); 
     connect("127.0.0.1"); 
     return this.session; 
    } 
} 

、別のクラス内の関数である上記のコードで

@GET 
@Path("/get") 
@Produces(MediaType.APPLICATION_JSON) 
public List<ActiveBid> getTrackInJSON() { 
    logger.info("LoginApi: Returning the active bid"); 
    Session session = cassDB.getSession(); 
    String cqlStatement = "select * from active_bid where username='xyz'"; 
    for (Row row : session.execute(cqlStatement)) { 
     System.out.println(row.toString()); 
    } 
    session.close(); 
    ActiveBid activeBid = new ActiveBid("3d673111-894d-4fcb-84f7-7d027a9a2419", "XXX-XXX-XXXXXXX", "/p/project_id=1367777", 25, new BigInteger("125"), new BigInteger("150"), "2016-06-04 18:32:37"); 
    List<ActiveBid> activeBidList = new ArrayList<ActiveBid>(); 
    activeBidList.add(activeBid); 
    return activeBidList; 
} 

、私は、クラスタとセッションを構築するutilのクラスを持っているし、私が得る別のクラスにgetTrackInJSONを持っていますhttp://localhost:8080/cassExample/rest/getが要求されたときに呼び出されます。/getを呼び出すたびに、クラスタとセッションが構築され、平均応答時間は500msです。私は何が間違っているのかわからない、私は結果セットを返答していない、私は嘲笑された返答とその多くの時間を取って返す。誰かが私を正しい方向に向けることができますか?

答えて

0

すべてのクラス変数にもstaticを入れるだけです。次のように

プライベート静的クラスタcluetr; プライベート静的セッションセッション。 。 。 。その後、このクラスのコンストラクタを作成し、すべてのクラス変数を初期化します。 1つのメソッドgetSessionを作成します。この最初のチェックでは、クラスタ変数とセッション変数が初期化されていない場合は初期化されているかどうかを確認し、デフォルトのコンストラクタを使用してこのクラスのobejectを作成し、すべての変数を初期化してからセッション変数を返します。

関連する問題