代码之家  ›  专栏  ›  技术社区  ›  Charles

Cassandra会话在运行时为空

  •  0
  • Charles  · 技术社区  · 9 年前

    我使用的代码如下:

    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
    import org.springframework.data.cassandra.config.CassandraSessionFactoryBean;
    import org.springframework.data.cassandra.config.SchemaAction;
    import org.springframework.data.cassandra.convert.CassandraConverter;
    import org.springframework.data.cassandra.core.CassandraOperations;
    import org.springframework.data.cassandra.core.CassandraTemplate;
    import org.springframework.stereotype.Component;
    
    @Component
    public class KeyspaceSession {
    
        @Autowired
        @Qualifier("cluster")
        CassandraClusterFactoryBean cluster;
    
        @Autowired
        @Qualifier("converter")
        CassandraConverter converter;
    
    
        public List<CassandraOperations> getTemplates(){
            List<CassandraOperations> listOfTemplates = new ArrayList<>();
            for(CassandraKeyspaces keyspace : CassandraKeyspaces.values()){
                CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
                session.setCluster(cluster.getObject());
                session.setKeyspaceName(keyspace.getKeyspace());
                session.setConverter(converter);
                session.setSchemaAction(SchemaAction.CREATE_IF_NOT_EXISTS); 
                CassandraOperations op = new CassandraTemplate(session.getObject());
                listOfTemplates.add(op);
            }
            return listOfTemplates;
        }
    
    }
    

    我从服务器得到以下答案:

    {
      "timestamp": 1505204641753,
      "status": 500,
      "error": "Internal Server Error",
      "exception": "java.lang.IllegalArgumentException",
      "message": "Session must not be null",
      "path": "/getUser/10/pl"
    }
    
    2 回复  |  直到 9 年前
        1
  •  1
  •   mp911de    9 年前

    CassandraSessionFactoryBean 设置所有属性后需要初始化。呼叫 CassandraSessionFactoryBean.afterPropertiesSet() 在获得 Session

    理想情况下,您可以注册 BeanDefinition 每个人都有 一场 CassandraOperations 要创建的bean。

    参考文献:

        2
  •  0
  •   Simon Fontana Oscarsson    9 年前

    试试这个:

    cluster.setContactPoints(<cassandra_server_ip>);