2013-02-12 30 views
3

我有一個在本地tomcat實例中運行得很好的應用程序 - 這是一個cassandra客戶端應用程序,它使用Hector作爲Cassandra的客戶端庫。有什麼不同:運行在本地tomcat vs雲代工

final ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(keySpaceName, 
    columnFamilyName, ComparatorType.BYTESTYPE); 
    cfDef.setKeyValidationClass(ComparatorType.LONGTYPE.getClassName()); 
    cfDef.setComparatorType(ComparatorType.UTF8TYPE); 

cfDef.addColumnDefinition(new BasicColumnDefinition() {{ 
    setName(StringSerializer.get().toByteBuffer("id")); 
    setValidationClass(ComparatorType.LONGTYPE.getClassName()); 
}}); 

當我推此相同的應用程序到Cloud Foundry(我們自己內部的雲計算,我們有一個簡單的應用程序使用如下代碼創建一個密鑰空間和列族(如果它不存在)卡桑德拉服務),上面有一個異常「addColumnDefinition」結果行 - 這裏的堆棧跟蹤:

java.lang.UnsupportedOperationException 
java.util.AbstractList.add(Unknown Source) 
java.util.AbstractList.add(Unknown Source) 
me.prettyprint.cassandra.service.ThriftCfDef.addColumnDefinition(ThriftCfDef.java:311) 
org.pvtl.cassandra.HectorSample.createColumnFamily(HectorSample.java:94) 
org.pvtl.cassandra.HectorSample.<init>(HectorSample.java:37) 
org.apache.jsp.index_jsp._jspService(index_jsp.java:61) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

一堆谷歌搜索的,它看起來像麻煩的是,赫克託代碼試圖添加到一個不變列表 - java.util.AbstractList。但是,再次,該代碼在我的本地tomcat實例上運行良好,所以我想在jdk中有所不同?也許?我在本地運行java 7(sun)並推送選擇java 7.任何人有任何想法?

回答

3

最大的可能是你在你的本地的Tomcat使用不同版本的Hector比一個服務器(即服務器有較舊庫),因爲不可變列表約束,從較新的

See this pull request discussion

Hector版本刪除

編輯

你可能要檢查你的服務器配置,並確保它具有最新hector庫和/或檢查hector-cor-xxx.jar確實不是存在於您的tomcat/jetty庫文件夾下,因爲它可能導致依賴性問題。

+0

有趣的想法和從新的hector版本中刪除的約束肯定是一個合理的解釋。但是hector-cor-1.1-2.jar是我推動的戰爭文件的一部分。一些傳遞依賴是由dea上的某些東西滿足的,而不是在我的本地tomcat或jetty中? (也在當地碼頭工作)。任何想法如何我可以診斷這個? – 2013-02-13 01:36:10

+0

如果您的web服務器庫文件夾下存在一個較舊的'hector'庫,它可能會導致此類問題,請參閱我的更新回答 – iTech 2013-02-13 02:38:21

+0

iTech - 您是絕對正確的。在我的/ var/vcap/data/dea/apps/myapp/webapps/ROOT/WEB-INF/lib /目錄(以及較新的jar)中有一箇舊版本的hector core jar。所以,現在這是10K美元的問題 - 它是如何到達那裏的?這不是我推送的戰爭檔案。 – 2013-02-13 04:25:16

相關問題