I know I'm overlooking something silly here, but I can't find what it is for the life of me.
We recently upgraded from 2.1.5 to 2.3.5 (finally got the upgrade done), but now it seems aacli.sh doesn't work.
It's worth noting that we did the upgrade on top of the previous release and told the installer not to overwrite configs. I compared the bin and lib dirs., though, to those in a freshly installed copy (one that wasn't done on top of a previous version), and they match perfectly.
But when we run aaci.sh, passing it a requester and principal, we get the following lovely Java trace. Any thoughts on what might becausing this?
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shibboleth.HandlerManager': Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at edu.internet2.middleware.shibboleth.common.attribute.AttributeAuthorityCLI.loadConfigurations(AttributeAuthorityCLI.java:199)
at edu.internet2.middleware.shibboleth.common.attribute.AttributeAuthorityCLI.main(AttributeAuthorityCLI.java:90)
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getDeclaredMethods(Class.java:1791)
at java.beans.Introspector$1.run(Introspector.java:1287)
at java.security.AccessController.doPrivileged(Native Method)
at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1285)
at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1151)
at java.beans.Introspector.getBeanInfo(Introspector.java:402)
at java.beans.Introspector.getBeanInfo(Introspector.java:168)
at org.springframework.beans.CachedIntrospectionResults.<init>(CachedIntrospectionResults.java:220)
at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:144)
at org.springframework.beans.BeanWrapperImpl.getCachedIntrospectionResults(BeanWrapperImpl.java:252)
at org.springframework.beans.BeanWrapperImpl.getPropertyDescriptorInternal(BeanWrapperImpl.java:282)
at org.springframework.beans.BeanWrapperImpl.isWritableProperty(BeanWrapperImpl.java:333)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1247)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
... 13 more
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletRequest
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 30 more
Thanks,
Keith
--
To unsubscribe from this list send an email to users-un...@shibboleth.net
>All,
>
>I know I'm overlooking something silly here, but I can't find what it is
>for the life of me.
Just copy your container's servlet API jar into the lib directory. The IdP
can't ship with one because it would end up in the war and step on things
I suspect.
-- Scott
I write only to confirm that others have experienced this exception --
the entire Installfest class at CalState a week ago. The same AACLI
command that had always succeeded for us returned the same stack trace.
The change that resulted in the stack trace was between 2.3.4 and 2.3.5.
I asked the developer about it in a back channel while at the
Installfest and never got around to posting it to the list, but learned
he's on vacation right now.
Thanks for reporting this,
Nate.
Thanks,
Keith
>Thanks, Scott, for the quick reply. Where do I find the API jar that
>needs to be copied in?
>From whatever servlet container you're using.
> Is this the servlet-api-2.4 from my 2.1.5 install that I want to use?
I have no idea what works or doesn't, I didn't see any reason to use
anything but what's already available.
Turns out there's no servlet-api anything in the 2.3.5 distribution. In
fact, I couldn't find one in 2.3.4, either. So, Nate, not sure what
magic was making it work in that version... unless I'm missing
something.
But copying servlet-api-2.4.jar from my 2.1.5 installed version of the
IDP into the IDP's lib dir did the trick! Things are working now.
So, I guess the question of the hour is now what are you supposed to do
to make this work if you're doing a fresh install instead of an upgrade
and don't have an old version of the API jar to copy over? Not that I
need to know that, just thought I'd ask the obvious.
Thanks for the tip on this.
Keith
--
Keith Wessel
CITES Directory Service Manager
University of Illinois at Urbana-Champaign
Phone: (217) 265-0313
kwe...@illinois.edu
"Be nice to nerds. Chances are you'll end up working for one." -Charles Sykes
If you are using Tomcat, there is servlet-api.jar in $CATALINA_HOME/lib/. You can use this instead, I think.
You copy your container's version in, as I said.
I use container managed connections, so I have to copy JDBC drivers in, and so forth.