PluginRegistry.getPluginClass
for null bootstrap classloader is:protected Class<Object> getPluginClass(String pluginClass) {
try {
// noinspection unchecked
if (getClass().getClassLoader() == null) {
return (Class<Object>) Class.forName(pluginClass, true, null);
}
return (Class<Object>) getClass().getClassLoader().loadClass(pluginClass);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Plugin class not found " + pluginClass, e);
}
}
I tested it:
14:46:08,971 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 69) MSC000001: Failed to start service jboss.deployment.unit."camunda-webapp-ee-jboss-7.11.11-ee.war".undertow-deployment: org.jboss.msc.service.StartException in service jboss.deployment.unit."camunda-webapp-ee-jboss-7.11.11-ee.war".undertow-deployment: java.lang.NoClassDefFoundError: io/undertow/server/handlers/resource/ResourceManager
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:81)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: java.lang.NoClassDefFoundError: io/undertow/server/handlers/resource/ResourceManager
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1009)
at java.lang.ClassLoader.loadClass(ClassLoader.java:408)
at java.lang.ClassLoader.loadClass(ClassLoader.java:406)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at java.lang.ClassLoader.findSystemClass(ClassLoader.java:998)
at org.jboss.modules.ConcurrentClassLoader.findSystemClassInternal(ConcurrentClassLoader.java:416)
at org.jboss.modules.JDKSpecific.getSystemClass(JDKSpecific.java:180)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:395)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:96)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:78)
... 8 more
I need to investigate what happened
then something is wrong in UndertowTransformer - PrefixingResourceManager is extended from jboss ResourceManager, that is not found at
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:96)
15:02:26,199 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed to start service jboss.deployment.unit."app.ear".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."app.ear".POST_MODULE: WFLYSRV0153: Failed to process phase POST_MODULE of deployment "app.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:151)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Error: java.lang.NullPointerException
at org.jboss.as.weld.deployment.BeanDeploymentArchiveImpl.<init>(BeanDeploymentArchiveImpl.java:111)
at org.jboss.as.weld.deployment.processors.BeanArchiveProcessor$ResourceRootHandler.createExplicitBeanDeploymentArchive(BeanArchiveProcessor.java:347)
at org.jboss.as.weld.deployment.processors.BeanArchiveProcessor$ResourceRootHandler.processResourceRoot(BeanArchiveProcessor.java:304)
at org.jboss.as.weld.deployment.processors.BeanArchiveProcessor$ResourceRootHandler.handleResourceRoot(BeanArchiveProcessor.java:237)
at org.jboss.as.weld.deployment.processors.BeanArchiveProcessor$ResourceRootHandler.access$100(BeanArchiveProcessor.java:206)
at org.jboss.as.weld.deployment.processors.BeanArchiveProcessor.deploy(BeanArchiveProcessor.java:113)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:144)
... 8 more
Caused by: java.lang.NullPointerException
... 15 more
15:02:26,213 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "app.ear")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"app.ear\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"app.ear\"
Caused by: java.lang.Error: java.lang.NullPointerException
Caused by: java.lang.NullPointerException"}}
HOTSWAP AGENT: 15:02:25.754 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.jbossmodules.JBossModulesPlugin' initialized in ClassLoader 'ModuleClassLoader for Module "deployment.app.ear.my-module-a-impl.jar" from Service Module Loader'.
Ok, it looks lie the app i have is to large (large monolith).
The deployment of ear hangs, if i have JBossModules plugin activated.
It hangs on:
17:40:09,444 INFO [org.jboss.weld.deployer] (MSC service thread 1-1) WFLYWELD0003: Processing weld deployment app.ear
jstack:
at org.jboss.as.weld.deployment.processors.ExternalBeanArchiveProcessor.findExportedResource(ExternalBeanArchiveProcessor.java:330)
at org.jboss.as.weld.deployment.processors.ExternalBeanArchiveProcessor.findExportedResources(ExternalBeanArchiveProcessor.java:313)
With disabled JBossModules plugin deployment duration is ca. 8 min.
Any hints how i can patch JBossModules plugin for test if swapping works to an explicit module (ejb jar)?
autoHotswap=true
The reason for hanging (much slower deployment) is:
hotswap-agent.properties
in one of these sub projects src/main/resources
folder withextraClasspath=[path_to_my_project]/build/classes/java/main
extraClasspath
it exists a META-INF/beans.xml
or META-INF/jandex.idx
fileStack (java.nio.file.Files.exists(Files.java:2385))
java.lang.Thread.State: RUNNABLE
at sun.nio.fs.UnixNativeDispatcher.access0(Native Method)
at sun.nio.fs.UnixNativeDispatcher.access(UnixNativeDispatcher.java:449)
at sun.nio.fs.UnixFileSystemProvider.checkAccess(UnixFileSystemProvider.java:306)
at java.nio.file.Files.exists(Files.java:2385)
at org.jboss.modules.PathResourceLoader.lambda$getResource$4(PathResourceLoader.java:155)
at org.jboss.modules.PathResourceLoader$$Lambda$7/2033524545.run(Unknown Source)
at org.jboss.modules.PathResourceLoader.doPrivilegedIfNeeded(PathResourceLoader.java:248)
at org.jboss.modules.PathResourceLoader.getResource(PathResourceLoader.java:155)
at org.jboss.modules.ModuleClassLoader.loadResourceLocal(ModuleClassLoader.java:410)
at org.jboss.modules.ModuleClassLoader$1.loadResourceLocal(ModuleClassLoader.java:144)
at org.jboss.modules.Module.getResources(Module.java:861)
at org.jboss.modules.Module.getExportedResources(Module.java:904)
at org.jboss.as.weld.deployment.processors.ExternalBeanArchiveProcessor.findExportedResource(ExternalBeanArchiveProcessor.java:330)
at org.jboss.as.weld.deployment.processors.ExternalBeanArchiveProcessor.findExportedResources(ExternalBeanArchiveProcessor.java:313)
Is this expected?
Without hotswap-agent.properties
file it doesn't hang anymore, but i have no chance to link to classes for swapping.
It look like the defined extraClasspath
has here an impact.
I need to understand this first - yes.
https://github.com/wildfly/wildfly/blob/eacb144910142d456946ea2c429f63abf0cf8b93/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java#L309
Only to be sure - it is right, to place the hotswap-agent.properties
file in resources
folder of subprojects?