Развертывание приложения Grails из Glassfish получает нарушение инварианта класса - PullRequest
4 голосов
/ 22 августа 2011

У меня есть приложение Grails, которое запускается в Glassfish, но когда я его отменяю, оно получает

Нарушение инварианта класса

Быстрый просмотр трассировки стека и поиск поВ Интернете сообщается, что это проблема с Log4j

. Я использую последнюю версию log4j в то время log4j-1.2.16.jar

Любые предложения, как преодолеть эту ошибку.

[Mon, 22-Aug-2011 @ 09:23:32.494] [admin-thread-pool-4848(64)] ERROR javax.enterprise.system.std.com.sun.enterprise.server.logging - java.lang.IllegalStateException: Class invariant violation at org.apache.log4j.LogManager.getLoggerRepository(LogManager.java:199) at org.apache.log4j.LogManager.getLogger(LogManager.java:228) at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:243) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)

[Редактировать 1]

Я только что нашел это на интересном форуме источника, который интересен:

Рекомендуется следующееизбежать этой проблемы:

  1. Установите системное свойство org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES в значение false.
  2. Примените исправление из ошибки 40212 или обновите до версии, которая имеетэтот патч применен.
  3. Обновление до log4j 1.2.16 или более поздней версии для лучшей защиты от атаки загрузчика классов или предоставления более качественного диагностического сообщения, когда оно происходит.

[Решение] Настройкасвойство

org.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false 

в файле domain.xml в Glassfish решает проблему

...