Iniciar o LiveCycle como serviço do Windows falha com "java.lang.OutOfMemoryError: PermGen space"

Problema

Após configurar o JBoss para ser executado como um serviço do Windows seguindo as instruções deste link (Instalando e Implantando o LiveCycle ES4 para JBoss, capítulo 10.2, Instalar o serviço do Windows), o LiveCycle só não irá falhar no seguinte caso:

java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:792) at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:48) at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:637) at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:596) at java.security.AccessController.doPrivileged(Native Method) 

Se você iniciar o JBoss a partir da linha de comando, o LiveCycle será iniciado com êxito.

Causa

Este problema está relacionado a um bug existente (# JBPAPP-5403) no JBoss EAP, conforme descrito neste link. Todos os argumentos da JVM que configuram a alocação de memória são ignorados, como pode ser visto na linha a seguir no boot.log:

[ServerInfo] VM arguments: -Xrs -Djava.net.preferIPv4Stack=true -Dprogram.name=0.0.0.0 -Djava.endorsed.dirs=\jboss\lib\endorsed 

Solução

O problema pode ser resolvido seguindo as etapas abaixo:

  • Abra "<JBoss root>\bin\service.bat" com um editor de texto.
  • Localize as seguintes linhas:

@if not "%ECHO%" == "" echo %ECHO%
@if "%OS%" == "Windows_NT" setlocal
set DIRNAME=%CD%

  • Substitua pelas seguintes linhas:

@if not "%ECHO%" == "" echo %ECHO%
@if "%OS%" == "Windows_NT" setlocal
set DIRNAME=%CD%

rem Read an optional configuration file.
if "x%RUN_CONF%" == "x" (
set "RUN_CONF=%DIRNAME%\run.conf.bat"
)
if exist "%RUN_CONF%" (
call "%RUN_CONF%" %*
)

  • Salve seu arquivo "service.bat".
  • Reinicie o serviço "JBoss para Adobe LiveCycle ES4".
  • Abra o seu "boot.log" e verifique se os argumentos adicionais da JVM estão presentes:

[ServerInfo] VM arguments: -Xrs -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true -Xms1024m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=768m -XX:+UseCompressedOops -Dadobeidp.serverName=server1 -Dfile.encoding=utf8 -Djava.net.preferIPv4Stack=true -DentityExpansionLimit=10000 -XX:+HeapDumpOnOutOfMemoryError -Dorg.jboss.net.protocol.file.useURI=false -Djdk.logging.allowStackWalkSearch=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dorg.jboss.resolver.warning=true -Djava.net.preferIPv4Stack=true -Dprogram.name=0.0.0.0 -Djava.endorsed.dirs=E:\Adobe\Adobe LiveCycle ES4\jboss\lib\endorsed

Nota

Observe que esse problema afeta apenas o serviço do Windows criado manualmente. O serviço do Windows criado como parte de turnkey ou de uma instalação automática funciona conforme o esperado.

Logotipo da Adobe

Fazer logon em sua conta