Eclipse 使用hector在Glassfish 3.1上插入cassandra
我试图使用hector和hector wiki提供的SchemaManipulation示例将一个键空间插入cassandraEclipse 使用hector在Glassfish 3.1上插入cassandra,eclipse,jsp,glassfish,cassandra,hector,Eclipse,Jsp,Glassfish,Cassandra,Hector,我试图使用hector和hector wiki提供的SchemaManipulation示例将一个键空间插入cassandra package net.zanity.live; import java.util.Arrays; import java.util.List; import me.prettyprint.cassandra.model.BasicColumnDefinition; import me.prettyprint.cassandra.model.BasicColumnF
package net.zanity.live;
import java.util.Arrays;
import java.util.List;
import me.prettyprint.cassandra.model.BasicColumnDefinition;
import me.prettyprint.cassandra.model.BasicColumnFamilyDefinition;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.ThriftCfDef;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.ddl.*;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;
/**
*
* @author zznate
*
*/
public class SchemaManipulation {
private static final String DYN_KEYSPACE = "YOUWantToSeeThis";
private static final String DYN_CF = "DynamicCf";
private static final String CF_SUPER = "SuperCf";
private static StringSerializer stringSerializer = StringSerializer.get();
public static void main(String[] args) throws Exception {
Cluster cluster = HFactory.getOrCreateCluster("TestCluster", "localhost:9160");
try {
if ( cluster.describeKeyspace(DYN_KEYSPACE) != null ) {
cluster.dropKeyspace(DYN_KEYSPACE);
}
BasicColumnDefinition columnDefinition = new BasicColumnDefinition();
columnDefinition.setName(stringSerializer.toByteBuffer("birthdate"));
columnDefinition.setIndexName("birthdate_idx");
columnDefinition.setIndexType(ColumnIndexType.KEYS);
columnDefinition.setValidationClass(ComparatorType.LONGTYPE.getClassName());
BasicColumnFamilyDefinition columnFamilyDefinition = new BasicColumnFamilyDefinition();
columnFamilyDefinition.setKeyspaceName(DYN_KEYSPACE);
columnFamilyDefinition.setName(DYN_CF);
columnFamilyDefinition.addColumnDefinition(columnDefinition);
BasicColumnFamilyDefinition superCfDefinition = new BasicColumnFamilyDefinition();
superCfDefinition.setKeyspaceName(DYN_KEYSPACE);
superCfDefinition.setName(CF_SUPER);
superCfDefinition.setColumnType(ColumnType.SUPER);
ColumnFamilyDefinition cfDefStandard = new ThriftCfDef(columnFamilyDefinition);
ColumnFamilyDefinition cfDefSuper = new ThriftCfDef(superCfDefinition);
KeyspaceDefinition keyspaceDefinition =
HFactory.createKeyspaceDefinition(DYN_KEYSPACE, "org.apache.cassandra.locator.SimpleStrategy",
1, Arrays.asList(cfDefStandard, cfDefSuper));
cluster.addKeyspace(keyspaceDefinition);
// insert some data
List<KeyspaceDefinition> keyspaces = cluster.describeKeyspaces();
for (KeyspaceDefinition kd : keyspaces) {
if ( kd.getName().equals(DYN_KEYSPACE) ) {
System.out.println("Name: " +kd.getName());
System.out.println("RF: " +kd.getReplicationFactor());
System.out.println("strategy class: " +kd.getStrategyClass());
List<ColumnFamilyDefinition> cfDefs = kd.getCfDefs();
for (ColumnFamilyDefinition def : cfDefs) {
System.out.println(" CF Type: " +def.getColumnType());
System.out.println(" CF Name: " +def.getName());
System.out.println(" CF Metadata: " +def.getColumnMetadata());
}
}
}
} catch (HectorException he) {
he.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}
}
package net.zanity.live;
导入java.util.array;
导入java.util.List;
导入me.prettyprint.cassandra.model.BasicColumnDefinition;
导入me.prettyprint.cassandra.model.BasicColumnFamilyDefinition;
导入me.prettyprint.cassandra.serializers.StringSerializer;
导入me.prettyprint.cassandra.service.ThriftCfDef;
导入me.prettyprint.hector.api.Cluster;
导入me.prettyprint.hector.api.ddl.*;
导入me.prettyprint.hector.api.exceptions.hector异常;
导入me.prettyprint.hector.api.factory.HFactory;
/**
*
*@作者zznate
*
*/
公共类模式化{
私有静态最终字符串DYN\u KEYSPACE=“YOUWantToSeeThis”;
私有静态最终字符串DYN\u CF=“DynamicCf”;
私有静态最终字符串CF_SUPER=“SuperCf”;
私有静态StringSerializer StringSerializer=StringSerializer.get();
公共静态void main(字符串[]args)引发异常{
Cluster Cluster=HFactory.getOrCreateCluster(“TestCluster”,“localhost:9160”);
试一试{
if(cluster.descripebeKeySpace(DYN_KEYSPACE)!=null){
cluster.dropKeyspace(DYN_KEYSPACE);
}
BasicColumnDefinition columnDefinition=新的BasicColumnDefinition();
columnDefinition.setName(stringSerializer.toByteBuffer(“生日”));
columnDefinition.setIndexName(“生日_idx”);
columnDefinition.setIndexType(ColumnIndexType.KEYS);
columnDefinition.setValidationClass(ComparatorType.LONGTYPE.getClassName());
BasicColumnFamilyDefinition columnFamilyDefinition=新的BasicColumnFamilyDefinition();
columnFamilyDefinition.setKeyspaceName(动态键空间);
columnFamilyDefinition.setName(DYN\u CF);
columnFamilyDefinition.addColumnDefinition(columnDefinition);
BasicColumnFamilyDefinition superFDDefinition=新的BasicColumnFamilyDefinition();
setKeyspaceName(动态键空间);
setName(CF_SUPER);
setColumnType(ColumnType.SUPER);
ColumnFamilyDefinition cfDefStandard=新的节俭CFDEF(ColumnFamilyDefinition);
ColumnFamilyDefinition cfDefSuper=新的节俭CFDEF(超级定义);
KeyspaceDefinition KeyspaceDefinition=
createKeyspaceDefinition(DYN_KEYSPACE,“org.apache.cassandra.locator.SimpleStrategy”,
1,Arrays.asList(cfDefStandard,cfDefSuper));
cluster.addKeyspace(keyspaceDefinition);
//插入一些数据
List keyspace=cluster.descripbekeyspace();
for(键空间定义kd:keyspace){
if(kd.getName().equals(DYN_键空间)){
System.out.println(“Name:+kd.getName());
System.out.println(“RF:+kd.getReplicationFactor());
System.out.println(“策略类:+kd.getStrategyClass());
List cfDefs=kd.getCfDefs();
对于(ColumnFamilyDefinition:cfDefs){
System.out.println(“CF类型:+def.getColumnType());
System.out.println(“CF Name:+def.getName());
System.out.println(“CF元数据:+def.getColumnMetadata());
}
}
}
}捕获(Hector例外he){
he.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}
}
jsp代码:
<%@page language="java" import="net.zanity.live.*" contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GlassFish JSP Page</title>
</head>
<body>
<% out.println("CAKrE"); Test test = new Test(); out.println("sting displayed here: " + test.Testt()); %>
After this text loads the cassandra schema test will run and prolly crash the webapp
<% SchemaManipulation cI = new SchemaManipulation(); SchemaManipulation.main(new String [0]); %>
</body>
</html>
GlassFish JSP页面
加载此文本后,cassandra模式测试将运行并导致webapp崩溃
我在Eclipse3.7.1Indigo中运行这段代码,当作为java应用程序执行时,代码可以工作并插入到cassandra中,但是当我在服务器上运行它时,它就不工作了
Cassandra作为本地主机在其默认端口上运行,glasfish也在端口8080的本地主机上运行
我认为问题在于我没有将hector JAR放置在正确的位置,hector JAR已经添加到buildpath中,但我不确定这是否也将它们添加到了服务器中
任何帮助都将不胜感激,因为我没有找到对卡桑德拉有用的文档
编辑:我已经将jar添加到了服务器,这不是问题所在,问题仍然没有解决
错误的堆栈跟踪:
WARNING: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at me.prettyprint.cassandra.service.AbstractCluster.<init>(AbstractCluster.java:44)
at me.prettyprint.cassandra.service.ThriftCluster.<init>(ThriftCluster.java:21)
at me.prettyprint.hector.api.factory.HFactory.createCluster(HFactory.java:192)
at me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster(HFactory.java:139)
at me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster(HFactory.java:128)
at net.zanity.live.SchemaManipulation.main(SchemaManipulation.java:36)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
警告:StandardWrapperValve[jsp]:PWC1406:Servlet jsp的Servlet.service()引发异常
java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory
at me.prettyprint.cassandra.service.AbstractCluster.(AbstractCluster.java:44)
at me.prettyprint.cassandra.service.ThriftCluster.(ThriftCluster.java:21)
at me.prettyprint.hector.api.factory.HFactory.createCluster(HFactory.java:192)
at me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster(HFactory.java:139)
at me.prettyprint.hector.api.factory.HFactory.getOrCreateCluster(HFactory.java:128)
位于net.zanity.live.SchemaManipulation.main(SchemaManipulation.java:36)
在org.apache.jsp.index\u jsp.\u jsp服务(index\u jsp.java:61)上
位于org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
位于org.apache.catalina.core.StandardPipeline.invoke(Sta