从Web应用程序使用Cassandra驱动程序的正确方法是什么

 z235235_795 发布于 2023-01-03 17:21

我想用Java和Cassandra 2.x(在Jersey框架上)构建一个RESTful API.我是这两种技术的新手,所以我想问你是集成和共享Cassandra驱动程序的正确方法.

0.通过Maven获取驱动程序


            com.datastax.cassandra
            cassandra-driver-core
            2.0.3

1.使用Client类包装驱动程序的功能:

package com.example.cassandra;

import com.datastax.driver.core.*;

public class Client {

    private Cluster cluster;
    private Session session;

    public Client(String node) {
        connect( node );
    }

    private void connect(String node) {
        cluster = Cluster.builder()
            .addContactPoint(node)
            .build();

        session = cluster.connect();
    }

    public ResultSet execute( String cql3 ) {
        return session.execute( cql3 );
    }

    public void close() {
      cluster.close();
    }

}

2.我在ContextListener中启动客户端并通过上下文属性共享它

package com.example.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.example.cassandra.Client;

public class ExampleContextListener implements ServletContextListener {

    Client cassandraClient;

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        ServletContext ctx = servletContextEvent.getServletContext();

        cassandraClient = new Client( ctx.getInitParameter( "DBHost" ) );
        ctx.setAttribute( "DB", cassandraClient );
    }

    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        cassandraClient.close();
    }

}

3.现在我从servlet的上下文中获取客户端并使用它

Client client =  (Client) context.getAttribute("DB");
client.execute("USE testspace;");

ResultSet rs = client.execute("SELECT * from users;");
for (Row row : rs ) {
    output += row.getString("lname") + "|";
}

这是正确的方法吗(从性能和架构的角度来看)?

完整示例:https://github.com/lukaszkujawa/jersey-cassandra

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有