-
Notifications
You must be signed in to change notification settings - Fork 23
Description
When Spring Auto Reconfiguration is enabled and there is spring-core*.jar artifacts [1]
in the application binaries, a modification of web.xml provided by web module will be made
and Spring Auto Reconfiguration jar file will be added to the additional libraries [2].
When the deployment artifact is WAR file the collection of the additional libraries will be added
to WEB-INF/lib [3]. Thus Spring Auto Reconfiguration will be able to load classes provided by spring-core*.jar.
In case of EAR the additional libraries will be added to <TomEE-Home>/lib [3]. Thus
Spring Auto Reconfiguration will not be able to load the classes provided by spring-core*.jar
because they are provided by the application binaries and not by TomEE installation.
The exception below will appear:
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContextInitializer
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.defineClass1(Native Method)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.security.AccessController.doPrivileged(Native Method)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:225)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:83)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.cloudfoundry.reconfiguration.spring.AutoReconfigurationServletContainerInitializer.<clinit>(AutoReconfigurationServletContainerInitializer.java:33)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.Class.forName0(Native Method)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.Class.forName(Class.java:348)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:188)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:159)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1622)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.OpenEJBContextConfig.processServletContainerInitializers(OpenEJBContextConfig.java:479)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1135)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.OpenEJBContextConfig.webConfig(OpenEJBContextConfig.java:402)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.OpenEJBContextConfig.configureStart(OpenEJBContextConfig.java:123)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT ... 23 more
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContextInitializer
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2017-08-10T14:37:48.66-0400 [APP/PROC/WEB/0] OUT ... 52 more
[1] https://github.com/cloudfoundry-community/tomee-buildpack/blob/master/lib/java_buildpack/framework/spring_auto_reconfiguration.rb#L53
[2] https://github.com/cloudfoundry-community/tomee-buildpack/blob/master/lib/java_buildpack/framework/spring_auto_reconfiguration.rb#L39
[3] https://github.com/cloudfoundry-community/tomee-buildpack/blob/master/lib/java_buildpack/container/tomee/tomee_instance.rb#L62