Ошибка загрузки войны в 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 через консоль, оглядываясь назад, я должен был попробовать это раньше.

Другие вопросы по тегам