Hello –
We are upgrading our Kuali Coeus application from JDK 7 => JDK 8 (well, we would have liked to do JDK 11 but that’s another topic/question).
(KC 5.1.0, Rice 2.1.5 bundled).
The build process remained unaffected – but when deploying the newly built application in Tomcat, we are seeing the following during the Tomcat startup –
…
2020-04-21 10:57:53,750 [localhost-startStop-1] u:/d: INFO org.objectweb.jotm - stop JOTM
2020-04-21 10:57:54,354 [localhost-startStop-1] u:/d: ERROR org.kuali.rice.core.web.listener.KualiInitializeListener - problem during context.refresh()
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'kenConfigurer' defined in class path resource [org/kuali/kra/RiceOverridesSpringBeans.xml]: Invocation of init method failed; nested exception is java.lang.ArrayIndexOutOfBoundsException: 20991
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.kuali.rice.core.web.listener.KualiInitializeListener.contextInitialized(KualiInitializeListener.java:91)
at org.kuali.kra.infrastructure.KraServiceLocatorListener.contextInitialized(KraServiceLocatorListener.java:29)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4699)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:970)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1841)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 20991
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:112)
at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:86)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:630)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.kuali.rice.core.framework.resourceloader.SpringResourceLoader.start(SpringResourceLoader.java:86)
at org.kuali.rice.core.api.resourceloader.ResourceLoaderContainer.start(ResourceLoaderContainer.java:52)
at org.kuali.rice.core.framework.resourceloader.BaseResourceLoader.start(BaseResourceLoader.java:98)
at org.kuali.rice.core.framework.config.module.ModuleConfigurer.initializeResourceLoaders(ModuleConfigurer.java:311)
at org.kuali.rice.core.framework.config.module.ModuleConfigurer.afterPropertiesSet(ModuleConfigurer.java:90)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 24 more
2020-04-21 10:57:54,465 [localhost-startStop-1] u:/d: INFO org.apache.tiles.access.TilesAccess - Publishing TilesContext for context: org.apache.tiles.servlet.context.ServletTilesApplicationContext
Does anyone have a sense of how and where to resolve this error? (Works fine when built with JDK7).
Thanks.
Alex
Alex M Berkoff
Naval Postgraduate School
ITACS / DevOps
Kuali Java Developer (Contractor, eDataTech)
Office: 831-656-2893
Email: ambe...@nps.edu
the first wave of Java SE 8 / OpenJDK 8 support
Spring Framework 3.2.x will support deployment on JDK 8 runtimes for applications compiled against JDK 7 (with -target 1.7) or earlier. Note that it won’t support JDK 8’s bytecode format (-target 1.8, as needed for lambdas); please upgrade to Spring Framework 4.0 for that purpose.
--
To unsubscribe from this group and stop receiving emails from it, send an email to kc.technical.co...@kuali.org.
--
Ken,
Just a follow-up to this one. Since we’re using the bundled version of RICE with our KC instance – what is the approach at upgrading the version of SPRING that is being declared in RICE pom?
From: Ken Geis <kg...@berkeley.edu>
Sent: Wednesday, April 22, 2020 9:47 AM
To: Berkoff, Alexis (Alex) Contractor, eDataTech <ambe...@nps.edu>
Cc: rice....@kuali.org; kc.techni...@kuali.org
Subject: Re: [kuali] Rice 2.1.5 JDK 7 => JDK 8 upgrade
NPS Security WARNING: This is an external email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Ron/Ken/Community,
I just tried out Ron’s suggestion.

kc_project pom

$mvn generate-sources
$mvn install
Both execute successfully
(BTW – I did try setting the source to 1.8, but the compiler complains that both source and target need to be 1.8 – so I reverted back to what you see above)
kc_custom pom

$mvn package
War file is created
(Again - I did try setting the source to 1.8, but the compiler complains that both source and target need to be 1.8. I also tried setting both to 1.8 and I still get the run time error below).
Error during boot-up:

Notice the error occurs in org.kuali.rice.core.web.listener.KualiInitializeListener class.
You mentioned that I should exclude the Spring 3 references from the project build – but that wouldn’t affect the version of Spring that Rice is using hence wouldn’t I still hit this error if I tried updating my Spring version for the KC project as you suggested?
Anyone else in the Rice community see something or know something…been hitting my head against this monitor for too long!?
Alex
Hey everybody,
Just an update on this. I’ve ended up upgrading the version of Rice that our KC instance was using.
We went from 2.1.5 => 2.3.14.
This latest 2.3 version of Rice was as high as we could go due to the fact that our version of KC was still using OJB and 2.4.0 jumped to using JPA.
We’ll get there eventually – but for now this is good enough because this version of rice allows us to move to JDK8 because the version of Spring in that Rice is 3.2.x which as @Ken Geis pointed out (in the thread below) allows us to build with JDK8 but target 1.7 bytecode. Problem solved! 😊
I’ve completed the upgrade and just working out some minor kinks here and there due to some customizations that we did in our version of the 2.1.5 rice code.
One thing I did notice is that the KC application Tomcat startup cycle (running on this newer version of rice) has nearly tripled.
Overall the startup cycle was about 3 minutes but now it is borderline 9 minutes.
Can anyone comment on the reasons behind this radical jump and if there are remedies at reducing this cycle (e.g. Tomcat Jar scanning exclusions)?
// AB