2014-12-19 3 views
1

Окружающая среда: Glassfish 4,0 (только один DAS), Windows Server 2012 R2, Java 1.7.0_51 Создание службы экземпляра DAS с помощью субкоманды создания-службы.вращения журнала Glassfish4 "Maximum History Files" проблема

Выпуск: Максимальная история атрибута было установлено файлы, однако, Glassfish сервер не может удалить старые файлы журналов из-за файла блокировки server.log.lck

Путь -> C: \ glassfish4 \ GlassFish \ домены \ domain1 \ Config \ logging.properties com.sun.enterprise.server.logging.GFFileHandler.maxHistoryFiles = 10

Вход сниппетов:

[2014-12-10T18:00:39.372+0900] [glassfish 4.0] [SEVERE] [] [] [tid: _ThreadID=16 _ThreadName=Thread-5] [timeMillis: 1418202039372] [levelValue: 1000] [[ 
    java.util.logging.ErrorManager: 0: FATAL ERROR: COULD NOT DELETE LOG FILE.]] 

[2014-12-10T18:00:39.372+0900] [glassfish 4.0] [SEVERE] [] [] [tid: _ThreadID=16 _ThreadName=Thread-5] [timeMillis: 1418202039372] [levelValue: 1000] [[ 
    java.io.IOException: Could not delete log file: C:\glassfish4\glassfish\domains\domain1\logs\server.log.lck 
    at com.sun.enterprise.server.logging.GFFileHandler.cleanUpHistoryLogFiles(GFFileHandler.java:725) 
    at com.sun.enterprise.server.logging.GFFileHandler$4.run(GFFileHandler.java:802) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.enterprise.server.logging.GFFileHandler.rotate(GFFileHandler.java:744) 
    at com.sun.enterprise.server.logging.GFFileHandler$1.run(GFFileHandler.java:301) 
    at com.sun.enterprise.server.logging.LogRotationTimerTask.run(LogRotationTimerTask.java:68) 
    at java.util.TimerThread.mainLoop(Timer.java:555) 
    at java.util.TimerThread.run(Timer.java:505)]] 

Выводы:

1, если файл блокировка «server.log.lck» существует в папке журнала, проблема произошла, и может найти вышеупомянутые ошибки в журнале каждый день, когда сервер пытается Glassfish удалите старые файлы журналов. Если в папке журнала нет «server.log.lck», никаких проблем и работы не будет.

2, Если экземпляр DAS запускается командой «asadmin start-domain domain1», в файле журнала не создается файл блокировки «server.log.lck». Но если экземпляр DAS запущен в службе Windows, файл блокировки «server.log.lck» будет сгенерирован автоматически и останется 0KB до остановки службы, этот файл будет удален автоматически.

3, Если экземпляр DAS запускается командой «asadmin start-domain -w domain1», которая добавляет параметр сторожевого таймера, файл блокировки «server.log.lck» будет генерироваться автоматически и существовать до тех пор, пока не остановится служба ,

4 Когда появляется файл блокировки «server.log.lck», всегда существует еще один процесс java.exe. Поэтому при запуске экземпляра DAS из службы Windows в этом процессе выполняется два «java.exe», и один из них использует «server.log.lck».

Вопросы:

1, я хотел бы, чтобы начать/остановить экземпляр DAS с помощью службы Windows, не используя субкоманду. Более того, я не хочу, чтобы все журналы Glassfish были на моем сервере, и это вызовет полную проблему с диском, поэтому я предпочту включить параметр «Файлы истории журнала Glassfish Maximum History History». Есть ли какое-либо решение или решение для этого?

2, Является ли это дефектом Glassfish или это проблема с настройкой? Я попытался установить на другие серверы, и у всех была такая же проблема.

3, Почему существует два процесса java.exe, запущенных при запуске с Windows Server, является вторым, используемым для «сторожевого таймера»?

Благодарим вас за помощь и сообщите мне, есть ли какая-либо дополнительная информация, которую вы хотели бы знать, или хотите, чтобы я сделал некоторые другие тесты.

ответ

1

Если кто-то все еще борется, я нашел решение. При создании службы GF в среде Windows через asadmin create-service GF создает файл domain1Service.xml в glassfish\domains\domain1\bin, который содержит параметры запуска сервера. Это выглядит как следующий

<service> 
     <id>domain1</id> 
     <name>domain1 GlassFish Server</name> 
     <description>GlassFish Server</description> 
     <executable>C:/Supertel-NMSv3/glassfish-4.1/glassfish/lib/nadmin.bat</executable> 
     <logpath>C:\\Supertel-NMSv3\\glassfish-4.1\\glassfish\\domains/domain1/bin</logpath> 
     <logmode>reset</logmode> 
     <depend>tcpip</depend> 
     <startargument>start-domain</startargument> 
      <startargument>--watchdog</startargument> 
     <startargument>--domaindir</startargument> 
      <startargument>C:\\Supertel-NMSv3\\glassfish-4.1\\glassfish\\domains</startargument> 
     <startargument>domain1</startargument> 
      <stopargument>stop-domain</stopargument> 
     <stopargument>--domaindir</stopargument> 
      <stopargument>C:\\Supertel-NMSv3\\glassfish-4.1\\glassfish\\domains</stopargument> 
     <stopargument>domain1</stopargument> 
    </service>   

линии <startargument>--watchdog</startargument> отвечает за запуск процесса сторожевой который предотвращает файл журнала от удаления. Вы не можете просто удалить этот раздел startargument (услуга не запустится), но вы можете переключать эту опцию, установив false флаг, как этот

<startargument>--watchdog=false</startargument> 

После того, что служба начнет, как с помощью команды ручного запуска домена без сторожевого процесса. Вы должны сделать это после каждого создания службы, и это может быть довольно неприятно, поэтому я продолжил исследования. Оказывается, что asadmin создает OS-специфический домен domainService.xml, используя шаблоны, расположенные в glassfish\lib\install\templates Эти шаблоны также зависят от ОС. А шаблон для Windows (с именем домена службы-winsw.xml.template) выглядит следующим образом

<service> 
     <id>%%%NAME%%%</id> 
     <name>%%%DISPLAY_NAME%%%</name> 
     <description>GlassFish Server</description> 
     <executable>%%%AS_ADMIN_PATH%%%</executable> 
     <logpath>%%%LOCATION%%%/%%%ENTITY_NAME%%%/bin</logpath> 
     <logmode>reset</logmode> 
     <depend>tcpip</depend> 
     <startargument>%%%START_COMMAND%%%</startargument> 
     <startargument>--watchdog</startargument> 
     %%%CREDENTIALS_START%%%%%%LOCATION_ARGS_START%%%<startargument>%%%ENTITY_NAME%%%</startargument> 
     <stopargument>%%%STOP_COMMAND%%%</stopargument> 
     %%%CREDENTIALS_STOP%%%%%%LOCATION_ARGS_STOP%%%<stopargument>%%%ENTITY_NAME%%%</stopargument> 
    </service> 

Таким образом, вы можете редактировать шаблон непосредственно путем установки параметров --watchdog=false и это изменение будет отражать в будущем все файлы, созданные domainService.xml

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

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