J'ai un projet EAR que je déploie sur JBoss EAP 6.1. Le produit de mon build Maven ressemble à ceci:Hotswap-agent sur JBoss EAP 6.1 - java.lang.OutOfMemoryError: espace PermGen
myapp-ear
├── myapp-ejb.jar
├── myapp-web.war
├── lib
│ ├── activation.jar
│ ├── activiti-bpmn-converter.jar
│ ├── activiti-bpmn-model.jar
.....
│ ├── xml-apis.jar
│ └── xmlbeans.jar
└── META-INF
├── application.xml
├── hotswap-agent.properties
├── myapp-ds.xml
├── jboss-deployment-structure.xml
└── MANIFEST.MF
Voici ce que je reçois dans le journal jboss quand quand je déploie mon application:
21:34:55,570 INFO [stdout] (MSC service thread 1-5) HOTSWAP AGENT: 21:34:55.569 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.jbossmodules.JBossModulesPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "deployment.myapp-ds.xml:main" from Service Module Loader'.
21:35:04,357 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876: Starting deployment of "null" (runtime-name: "myapp-web.war")
21:35:04,357 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of "null" (runtime-name: "myapp-ejb.jar")
21:35:04,781 INFO [org.jboss.as.jpa] (MSC service thread 1-3) JBAS011401: Read persistence.xml for myproject
21:35:05,306 INFO [stdout] (MSC service thread 1-7) HOTSWAP AGENT: 21:35:05.306 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.jbossmodules.JBossModulesPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "deployment.myapp-ear.ear:main" from Service Module Loader'.
et
21:35:05,488 INFO [stdout] (MSC service thread 1-6) HOTSWAP AGENT: 21:35:05.487 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.hotswapper.HotswapperPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "deployment.myapp-ear.ear.myapp-web.war:main" from Service Module Loader'.
21:35:05,520 INFO [stdout] (MSC service thread 1-4) HOTSWAP AGENT: 21:35:05.517 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.jbossmodules.JBossModulesPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "deployment.myapp-ear.ear.myapp-ejb.jar:main" from Service Module Loader'.
Le problème est que quand je déploie mon oreille dans jboss cela prend environ 10 fois son temps normal et quand j'essaie d'accéder à l'application à partir d'un navigateur, il lance un "PermGen space: java.lang.OutOfMemoryError: PermGen space". J'ai fatigué d'augmenter ma mémoire PermGen à 700 Mo mais pas de chance. J'ai donc suspecté que hotswap-agent surveille toutes les classes de mon fichier EAR, y compris celles du répertoire lib, ce qui provoque une trop grande consommation de mémoire. L'endroit suivant que j'ai regardé est la désactivation de hotswap par défaut, en plaçant autoHotswap = false dans hotswap-agent.properties. J'ai essayé de placer ce fichier dans le fichier EAR comme indiqué ci-dessus et les classpaths EJB et WAR, mais cela ne faisait aucune différence. J'ai aussi essayé, en vain, en ajoutant aux JVM_OPTS comme ceci:
-javaagent:/workspace/tools/hotswap-agent-1.0.jar=disablePlugin=Deltaspike,disablePlugin=JavaBeans,autoHotswap=false"
Ma question est, comment peut-on contrôler le hotswap-agent dans mon environnement? Existe-t-il également un moyen de ne regarder que les classes dans un paquet spécifié, par exemple "com.foobar"? Enfin, quelle est la bonne façon de configurer hotswap-agent pour un déploiement d'oreille sur jboss.