Skip to content

Conversation

@marschall
Copy link
Contributor

Give spring-core access to the org.jboss.vfs module to make VfsUtils work out of the box on WildFly 28+.

Starting from WildFly 28 deployments no longer have access by default to the org.jboss.vfs module. This causes the class initialization of org.springframework.core.io.VfsUtils to fail which causes ConfigurationClassParser#parse to fail (see stack tace below).

As a workaround applications can create a jboss-deployment-structure.xml but a permanent fix is to add org.jboss.vfs to the existing Dependencies manifest header.

This is very similar to #25852

ERROR [org.jboss.msc.service.fail] MSC000001: Failed to start service jboss.deployment.unit."controller.war".undertow-deployment: org.jboss.msc.service.StartException in service jboss.deployment.unit."controller.war".undertow-deployment: java.lang.RuntimeException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.telekurs.pass.batch.controller.BatchControllerApplicationConfiguration] at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:90) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) at java.base/java.lang.Thread.run(Thread.java:833) at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513) Caused by: java.lang.RuntimeException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.acme.controller.AcmeControllerApplicationConfiguration] at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:257) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:105) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:87) ... 8 more Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [om.acme.controller.AcmeControllerApplicationConfiguration] at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:178) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:415) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:287) at deployment.controller.war//org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:344) at deployment.controller.war//org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:115) at deployment.controller.war//org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:771) at deployment.controller.war//org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:589) at deployment.controller.war//org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:394) at deployment.controller.war//org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:274) at deployment.controller.war//org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:102) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:219) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:187) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1430) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1430) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1430) at org.wildfly.extension.undertow@28.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1430) at io.undertow.servlet@2.3.5.Final//io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:255) ... 10 more Caused by: java.lang.ExceptionInInitializerError at deployment.controller.war//org.springframework.core.io.support.PathMatchingResourcePatternResolver$VfsResourceMatchingDelegate.findMatchingResources(PathMatchingResourcePatternResolver.java:922) at deployment.controller.war//org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:570) at deployment.controller.war//org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:329) at deployment.controller.war//org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1432) at deployment.controller.war//org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.scanCandidateComponents(ClassPathScanningCandidateComponentProvider.java:422) at deployment.controller.war//org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:317) at deployment.controller.war//org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:276) at deployment.controller.war//org.springframework.context.annotation.ComponentScanAnnotationParser.parse(ComponentScanAnnotationParser.java:128) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:289) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:243) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:196) at deployment.controller.war//org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:164) ... 29 more Caused by: java.lang.IllegalStateException: Could not detect JBoss VFS infrastructure at deployment.controller.war//org.springframework.core.io.VfsUtils.<clinit>(VfsUtils.java:96) ... 41 more Caused by: java.lang.ClassNotFoundException: org.jboss.vfs.VFS from [Module "deployment.controller.war" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:200) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116) at deployment.controller.war//org.springframework.core.io.VfsUtils.<clinit>(VfsUtils.java:73) 
Give spring-core access to org.jboss.vfs module to make VfsUtils work out of the box on WildFly 28+.
@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged or decided on label Aug 1, 2023
@sbrannen sbrannen changed the title Give spring-core access to org.jboss.vfs module Give spring-core access to org.jboss.vfs module for VfsUtil support Aug 1, 2023
@sbrannen sbrannen added in: core Issues in core modules (aop, beans, core, context, expression) type: enhancement A general enhancement labels Aug 1, 2023
@sbrannen sbrannen self-assigned this Aug 1, 2023
@sbrannen sbrannen added this to the 6.0.12 milestone Aug 1, 2023
@sbrannen sbrannen removed the status: waiting-for-triage An issue we've not yet triaged or decided on label Aug 1, 2023
@sbrannen sbrannen changed the title Give spring-core access to org.jboss.vfs module for VfsUtil support Give spring-core access to org.jboss.vfs module for VfsUtil support on Wildfly Aug 1, 2023
@sbrannen sbrannen changed the title Give spring-core access to org.jboss.vfs module for VfsUtil support on Wildfly Give spring-core access to org.jboss.vfs for VfsUtil support on Wildfly Aug 1, 2023
@sbrannen sbrannen changed the title Give spring-core access to org.jboss.vfs for VfsUtil support on Wildfly Give spring-core access to org.jboss.vfs for VfsUtils support on Wildfly Aug 1, 2023
@sbrannen sbrannen changed the title Give spring-core access to org.jboss.vfs for VfsUtils support on Wildfly Give spring-core access to org.jboss.vfs for VfsUtils support on WildFly Aug 1, 2023
@sbrannen sbrannen closed this in 4922e0e Aug 2, 2023
@sbrannen
Copy link
Member

sbrannen commented Aug 2, 2023

This has been merged into 6.0.x and main.

Thanks for the PR and the detailed explanation.

@marschall
Copy link
Contributor Author

Thank you for merging so quickly and back porting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

in: core Issues in core modules (aop, beans, core, context, expression) type: enhancement A general enhancement

3 participants