Ошибка загрузки войны на tomcat6

Я пытаюсь загрузить свой военный файл в Tomcat 6 и постоянно получаю эту ошибку:

20 мая 2014 г., 12:35:42 org.apache.catalina.startup.ContextConfig init SEVERE: Исключение исправления docBase для контекста [/MyService] java.util.zip.ZipException: ошибка при открытии zip-файла в java.util.zip .ZipFile.open(собственный метод)

...

20 мая 2014 г., 12:35:42 org.apache.catalina.core.StandardContext resourcesStart SEVERE: ошибка при запуске статических ресурсов java.lang.IllegalArgumentException: недействительный или нечитаемый файл WAR: ошибка при открытии zip-файла

Я нашел несколько предложений и попробовал их все, все еще в тупике.

  • Переместил файл в каталог diff, а затем скопировал в веб-приложения.
  • Изменены права доступа к файлам перед переходом на веб-приложения.
  • Остановил Tomcat, удалил старый, добавил новый и перезапустил
  • Добавлен случайный класс в войну перед повторным развертыванием
  • Удалил tomcat6 (также удалив каталог tomcat6) и полностью переустановил tomcat6

Вот самое странное - я также взял старые войны (более старые версии того же приложения), которые работали на этом же сервере, и они тоже не работают (та же ошибка), даже после переустановки Tomcat. Это заставляет меня поверить, что это проблема Tomcat, однако удаление ничего не исправило. Кроме того, я создал военные файлы из этого же проекта (Eclipse) и развернул их на другом сервере tomcat6. Кроме того, когда я запускаю приложение на своем локальном хосте Eclipse/Tomcat, подключающемся к той же базе данных удаленно, все работает нормально.

Когда я действительно делаю http-запрос, приложение развертывается, однако у меня есть статический инициализатор, который не работает и вызывает исключение нулевого указателя. Я предполагаю, что это связано с

СЕРЬЕЗНО: ошибка при запуске статических ресурсов

Вот статический инициализатор, он создает пул соединений 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();
    }
}

person steve    schedule 20.05.2014    source источник


Ответы (1)


Хорошо, я понял это ... Каким-то образом пароль для пользователя root mysql был изменен, что очень странно, поскольку я ЕДИНСТВЕННЫЙ человек, который когда-либо касался всего этого. У меня такое чувство, что MySQLWorkbench каким-то образом сделал это без моего ведома? Я только недавно установил новую версию (6.1). По сути, это, кажется, общая ошибка, о которой я видел, как некоторые люди упоминали в других темах, поэтому я был в погоне за дикими гусями 4 дня. Единственная причина, по которой я это понял, заключалась в том, что я, наконец, попытался войти в mysql как root через консоль, оглядываясь назад, я должен был попробовать это раньше.

person steve    schedule 23.05.2014
comment
Разве я не получу свои бонусные очки за ответ на свой вопрос??!! - person steve; 23.05.2014
comment
Нет, вы не можете присудить награду за свой собственный ответ. См. Как работает система наград? - person Modus Tollens; 27.05.2014