У меня есть приложение, которое отлично работает в локальном экземпляре tomcat - это клиентское приложение cassandra, которое использует Hector как клиентскую библиотеку для Cassandra. Приложение создает пространство ключей и столбцы семьи (если она уже не существует), используя код, как следующее:Что нового: работа в локальном tomcat vs. in cloud Foundry
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());
}});
Когда я нажимаю это точно то же самое приложение к облачным литейному (нашему собственному внутреннему облаку, где у нас есть простой Cassandra службы), линия выше «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)
пучок прибегая к помощи и, похоже, беда в том, что код Гектор пытается добавить к непреложным list - java.util.AbstractList. Но опять же, этот код отлично работает на моем локальном экземпляре tomcat, поэтому я думаю о различии в jdk? Может быть? Я запускаю java 7 (sun) локально и толкнул выбор java 7. У кого-нибудь есть идеи?
Интересная мысль и это ограничение, устраняемое с более новых версий гетра, наверняка кажется разумным объяснением. Но hector-cor-1.1-2.jar является частью файла войны, который я нажимаю. Некоторая транзитивная зависимость, которая чем-то дополняется деа по-разному, чем у моего местного кота или пристани? (работает и в местном причале). Любая идея, как я могу диагностировать это? –
Если в папке с библиотеками веб-серверов существует более старая библиотека 'hector', это может вызвать такую проблему, см. Мой обновленный ответ. – iTech
iTech - вы абсолютно правы. В моем/var/vcap/data/dea/apps/myapp/webapps/ROOT/WEB-INF/lib/каталоге (а также в новой банке) есть более ранняя версия ядро ядра hector. Итак, вот вопрос $ 10K - как он туда попал? Это не в военном файле, который я толкнул. –