2014-01-15 5 views
4

Я создал приложение java и инициализировал java.util.Logger с этим приложением и запустил это приложение как -javaagent с сервером jboss AS 7, и я получил IllegalStateException (я использую Eclipse IDE) .Здесь следует мой лесоруба код инициализацииИсключение LogManager в JBOSS AS 7.1 с помощью java.util.Logger

 

static public void setup() throws IOException { 

     // Get the global logger to configure it 
     Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME); 

     logger.setLevel(Level.INFO); 
     fileTxt = new FileHandler("C:/Users/abc/Desktop/ATAGENT/Logging.txt"); 
     fileHTML = new FileHandler("C:/Users/abc/Desktop/ATAGENT/Logging.html"); 

     // create txt Formatter 
     formatterTxt = new SimpleFormatter(); 
     fileTxt.setFormatter(formatterTxt); 
     logger.addHandler(fileTxt); 

     // create HTML Formatter 
     formatterHTML = new BMITHtmlFormatter(); 
     fileHTML.setFormatter(formatterHTML); 
     logger.addHandler(fileHTML); 
     } 
 

Когда я создаю -javaagent банку добавляется выше строк кода и работать с JBoss AS7 сервера я получил следующее исключение

 

WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at org.jboss.as.server.Main.main(Main.java:73) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.modules.Module.run(Module.java:260) 
    at org.jboss.modules.Main.main(Main.java:291) 
Caused by: java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager") 
    at org.jboss.logmanager.Logger.getLogger(Logger.java:60) 
    at org.jboss.logmanager.log4j.BridgeRepositorySelector.(BridgeRepositorySelector.java:42) 
    ... 7 more 
 

и я таковой в четыре месяца, и я получил solution, который является открытым конфигурацией запуска для определения сервера. и добавьте -logmodule org.jboss.logmanager в аргументы программы до org.jboss.as.standalone. Но это приводит к тому же исключению с некоторым дополнительным предупреждением. Здесь следует исключение

 

WARNING: -logmodule is deprecated. Please use the system property 'java.util.logging.manager' or the 'java.util.logging.LogManager' service loader. 
WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at org.jboss.as.server.Main.main(Main.java:73) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.jboss.modules.Module.run(Module.java:260) 
    at org.jboss.modules.Main.main(Main.java:291) 
Caused by: java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager") 
    at org.jboss.logmanager.Logger.getLogger(Logger.java:60) 
    at org.jboss.logmanager.log4j.BridgeRepositorySelector.(BridgeRepositorySelector.java:42) 
    ... 7 more 
 

ответ

14

Я была такая же проблема с JBOSS EAP 6, возьмите меня 2 дня найти решение!.

Причина в том, что вашему агенту необходимо создать регистратор в statup, он должен иметь доступ к классам logmanager до того, как модули JBOSS были инициализированы. Вам нужно добавить JBoss LogManager в загрузчик классов загрузки. Тогда возникнет конфликт между LogManager, доступным через ModuleClassLoader, и классами, загружаемыми через системный загрузчик.

Решение состоит в том, чтобы Java Agent и JBoss модули использовали один и тот же загрузчик классов для загрузки классов LogManager.

Для EAP 6, В вашем standalone.conf (или домена) (Она должна быть близка к вашей версии)

добавить

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" 
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/org/jboss/logmanager/main/jboss-logmanager-1.3.1.jar" 

и сделать Java Agent и JBoss модули используют один и тот же загрузчик классов

изменить этот кусок кода в добавлении org.jboss.logmanager как это:

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then 
    JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager" 
fi 

Надеюсь, это поможет.

+0

спасибо за soution –

+0

спасибо, отлично работает! –

+0

В окнах синтаксис отличается: например. установите «JAVA_OPTS =% JAVA_OPTS% -Djboss.modules.system.pkgs = org.jboss.byteman, org.jboss.logmanager» и установите «JAVA_OPTS =% JAVA_OPTS% -Xbootclasspath/p:% JBOSS_HOME% \ modules \ org \ jboss \ logmanager \ main \ jboss-logmanager-1.3.2.Final.jar –

6

Я нашел решение после поиска в течение нескольких дней в приведенной ниже ссылке. https://github.com/jbossas/jboss-as-maven-plugin/issues/40#issuecomment-14943429

я должен настроить немного, чтобы работа в Windows 7.

  1. Открыть Затмение.
  2. Добавить Jboss 7.1 Runtime 1 server.
  3. Выберите сервер и нажмите F3.
  4. Нажмите «Открыть запуск».
  5. Перейти к VM аргументы.
  6. Добавьте следующие две записи.

"-Djboss.modules.system.pkgs = org.jboss.byteman, org.jboss.logmanager" «-Djava.util.logging.manager = org.jboss.logmanager.LogManager»

Теперь выберите Classpath TAB

  1. Выбор записи пользователя
  2. Нажмите Добавить Внешние баночки
  3. Выберите три Jar файлы

а) JBoss-LogManager -1.2.0.GA.jar b) JBoss-LogManager-log4j-1.0.0.GA.jar с) log4j-1.2.16.jar

Дорожки

  1. С: /jboss-as-7.1.1. Final/modules/org/jboss/logmanager/main/jboss-logmanager-1.2.0.GA.jar "
  2. C: /jboss-as-7.1.1.Final/modules/org/jboss/logmanager/log4j/ main/jboss-logmanager-log4j-1.0.0.GA.jar "
  3. C: /jboss-as-7.1.1.Final/modules/org/apache/log4j/main/log4j-1.2.16.jar"

Это приведет к автономному jboss без проблем.

+0

Это решение работает для меня. Спасибо! – grajsek

0

В EAP 6.4, путь Правильный LogManager должен быть $ JBOSS_HOME/модули/системы/слои/основание/орг/JBoss/LogManager/Главный/JBoss-LogManager-1.5.4.Final-RedHat-1.jar

 Смежные вопросы

  • Нет связанных вопросов^_^