2017-04-14 3 views
1

Ich versuche, Cassandra 3.4 mit Spring 4 zu verbinden, aber ich kann nicht tun. Ich habe versucht, es ohne Feder und es funktioniert perfekt, aber mit Frühling hat es ein Problem, das ich nicht herausfinden kann.Frühling 4 + Kassandra 3.4 + funktioniert nicht

Mein CassandraConnectionManager.java

import com.datastax.driver.core.Cluster; 
import com.datastax.driver.core.HostDistance; 
import com.datastax.driver.core.PoolingOptions; 
import com.datastax.driver.core.Session; 
import com.datastax.driver.core.SocketOptions; 

public class CassandraConnectionManager { 
    int concurrency = 50; 
    int maxRequestsPerConnection = 128; 
    int maxConnections = 10; 
    int coreConnections = 5; 
    int port = 7001; 
    String hosts[]; 
    private Cluster cluster; 
    private Session session; 

    public CassandraConnectionManager(String hosts, String port, int maxConn, int coreConn) { 
     this.maxConnections = maxConn; 
     this.coreConnections = coreConn; 
     this.port = Integer.parseInt(port); 
     this.hosts = hosts.split(","); 
     this.CassandraConnect(); 
    } 

    public CassandraConnectionManager(String hosts) { 
     this.maxConnections = concurrency/maxRequestsPerConnection + 1; 
     this.hosts = hosts.split(","); 
     this.CassandraConnect(); 
    } 

    private void CassandraConnect() { 
     PoolingOptions pools = new PoolingOptions(); 
     pools.setCoreConnectionsPerHost(HostDistance.LOCAL, coreConnections); 
     pools.setMaxConnectionsPerHost(HostDistance.LOCAL, maxConnections); 
     pools.setCoreConnectionsPerHost(HostDistance.REMOTE, coreConnections); 
     pools.setMaxConnectionsPerHost(HostDistance.REMOTE, maxConnections); 
     pools.setMaxRequestsPerConnection(HostDistance.LOCAL, concurrency); 

     Cluster.Builder builder = new Cluster.Builder(); 
     builder.withPort(port); 
     for (String host : hosts) { 
      builder.addContactPoints(host); 
     } 
     builder.withPoolingOptions(pools); 
     builder.withSocketOptions(new SocketOptions().setTcpNoDelay(true)); 
     this.cluster = builder.build(); 
     this.session = cluster.connect(); 
     System.out.println("Connected"); 
    } 

    public Session getSession() { 
     return this.session; 
    } 

    /** Close cluster. */ 

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

Mein CassandraDAO

import org.apache.log4j.Logger; 

import com.datastax.driver.core.PreparedStatement; 
import com.datastax.driver.core.Session; 
import com.netcore.CassandraConnectionManager; 

public class CassandraDAO { 

    private CassandraConnectionManager casConnManager; 
    private Session casSession; 
    private PreparedStatement insertIntoP1events; 

    final static Logger logger = Logger.getLogger(CassandraDAO.class); 

    public CassandraDAO(CassandraConnectionManager casConnManager){ 
     this.casConnManager = casConnManager; 
     this.casSession = casConnManager.getSession(); 
    } 

    public void insert(Person book) { 
     StringBuilder sb = new StringBuilder(); 
      sb.append("INSERT INTO ").append("login_event") 
      .append("(id, age, name) ") 
      .append("VALUES (").append(book.getId()).append(", '") 
      .append(book.getAge()).append("', '") 
      .append(book.getName()).append("');"); 

     String query = sb.toString(); 
     casSession.execute(query); 
    } 

} 

Dann habe ich eine pojo mit ID, Name Alter mit seiner Setter Getter.

Unten ist mein Test.java

public class TEST { 
    private static ClassPathXmlApplicationContext ctx ; 

    public static void main(String[] args) { 
     Person p = new Person("S1", "Test", 24); 
     ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
     CassandraDAO casDAO = (CassandraDAO) ctx.getBean("casDao"); 
     casDAO.insert(p); 

    } 

} 

Mein ApplicaitonContext.xml

<?xml version='1.0'?> 
    <?xml version='1.0'?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd " > 



     <bean id="casandraManager" class ="com.test.CassandraConnectionManager" > 
      <constructor-arg name="hosts" value="127.0.0.1" /> 
      <constructor-arg name="port" value="9042" /> 
      <constructor-arg name="maxConn" value="100" /> 
      <constructor-arg name="coreConn" value="5" /> 
      <constructor-arg name="ttlDays" value="7" /> 
     </bean> 

     <bean id="casDao" class="com.test.CassandraDAO" > 
      <constructor-arg index="0" ref="casandraManager" /> 
     </bean> 

    </beans> 

Und mein log schließlich

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfiguration.<init>(Lorg/springframework/expression/spel/SpelCompilerMode;Ljava/lang/ClassLoader;)V 
    at org.springframework.context.expression.StandardBeanExpressionResolver.<init>(StandardBeanExpressionResolver.java:98) 
    at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:625) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:513) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.netcore.TEST.main(TEST.java:20) 

Es funktioniert ohne Frühling.

Test2.java

public class Test2 { 
    public static void main(String[] args) { 
     CassandraConnectionManager cm = new CassandraConnectionManager("localhost", "9042", 2, 2); 
     CassandraDAO cd = new CassandraDAO(cm); 


    } 
} 
+0

Sind Sie mit dem Internet verbunden, wenn Ihre Anwendung zu kompilieren. scheint, dass die Anwendung Xsd-Schemadefinitionen nicht finden kann von http: // www.springframework.org/schema/data/cassandra/' –

+3

Haben Sie versucht, nach der Fehlermeldung" Spring NamespaceHandler für XML-Schema-Namespace nicht zu finden "? Es scheint, dass einige andere auf StackOverflow haben diese Frage zuvor, z. http://stackoverflow.com/questions/1937767/spring-3-0-unable-to-loc-spring-namespacehandler-for-xml-schema-namespace – tep

+0

Ja Rajith, ich bin mit dem Internet verbunden. –

Antwort

1

gleiche Code mit unter Treiber perfekt funktioniert, gibt es einige Frühjahr Treiber Problem.

Required JARs

+0

Vielen Dank, jetzt funktioniert es –

Verwandte Themen