Ошибка загрузки войны в Tomcat6
Я пытаюсь загрузить свой военный файл в Tomcat 6 и постоянно получаю эту ошибку:
20 мая 2014 г. 0:35:42 org.apache.catalina.startup.ContextConfig init SEVERE: исключение, исправляющее docBase для контекста [/MyService] java.util.zip.ZipException: ошибка при открытии файла zip по адресу java.util.zip.ZipFile.open(собственный метод)
...
20 мая 2014 г. 0:35:42 org.apache.catalina.core.StandardContext resourcesStart SEVERE: Ошибка при запуске статических ресурсов. Java.lang.IllegalArgumentException: неверный или нечитаемый файл WAR: ошибка при открытии файла zip.
Я нашел несколько предложений и попробовал их все, все еще в тупике.
- Переместил файл в каталог diff, затем скопировал в webapps
- Изменены права доступа к файлам перед переходом на веб-приложения
- Остановился Tomcat, удалите старое, добавьте новое, затем перезапустите
- Добавлен случайный класс в войну перед повторным развертыванием
- Удалите tomcat6 (также удаляя каталог tomcat6) и переустановите tomcat6 полностью
Вот самая странная часть - я также взял старые войны (более старые версии того же приложения), которые раньше работали на этом же сервере, и те тоже не работают (та же ошибка), даже после переустановки Tomcat. Это наводит меня на мысль, что это проблема Tomcat, но удаление ничего не исправило. Кроме того, я создал военные файлы из этого же проекта (Eclipse) и развернул их на другом сервере tomcat6. Кроме того, когда я запускаю приложение на своем удаленном компьютере Eclipse/Tomcat, подключенном к devbox, подключаясь к той же базе данных удаленно, все работает нормально.
Когда я фактически выполняю запрос http, приложение развертывается, однако у меня есть статический инициализатор, который не работает и вызывает исключение нулевого указателя. Я предполагаю, что это связано с
SEVERE: Ошибка запуска статических ресурсов
Вот статический инициализатор, он создает пул соединений BoneCP, который также всегда работал, и я подтвердил, что MySQL работает нормально (репликация также все еще происходит - это подчиненный MySQL). Объект connectionPool имеет значение null, и я не получаю трассировку стека в моих журналах для метода openPool(), я также не вижу никаких корневых соединений с MySQL:
protected static BoneCP connectionPool = null;
static
{
openPool();
}
protected static void openPool()
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
BoneCPConfig config = new BoneCPConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
config.setUsername("root");
config.setPassword("mypassword"); //SLAVE
config.setMinConnectionsPerPartition(2);
config.setMaxConnectionsPerPartition(6);
config.setPartitionCount(7);
connectionPool = new BoneCP(config);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
1 ответ
Хорошо, я понял это... Каким-то образом пароль для пользователя root mysql был изменен, что очень странно, поскольку я ЕДИНСТВЕННЫЙ человек, который когда-либо касался всего этого. У меня есть чувство, что MySQLWorkbench как-то сделал это без моего ведома? Я только недавно установил новую версию (6.1). По сути, это, похоже, ошибка "поймать все", о которой некоторые люди упоминали в других темах, так что я был в 4-х дневной погоне за дикими гусями. Единственная причина, по которой я понял это, заключалась в том, что я наконец попытался войти в mysql с правами root через консоль, оглядываясь назад, я должен был попробовать это раньше.