Problems with aacli.sh on IDP 2.3.5

208 views
Skip to first unread message

Wessel, Keith William

unread,
Nov 17, 2011, 5:24:58 PM11/17/11
to us...@shibboleth.net
All,

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

Cantor, Scott

unread,
Nov 17, 2011, 5:31:02 PM11/17/11
to us...@shibboleth.net
On 11/17/11 5:24 PM, "Wessel, Keith William" <kwe...@illinois.edu> wrote:

>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

Nate Klingenstein

unread,
Nov 17, 2011, 5:45:50 PM11/17/11
to us...@shibboleth.net
Keith,

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.

Wessel, Keith William

unread,
Nov 17, 2011, 5:49:26 PM11/17/11
to Shib Users
Thanks, Scott, for the quick reply. Where do I find the API jar that needs to be copied in? Is this the servlet-api-2.4 from my 2.1.5 install that I want to use? Or a file (newer version? Or different file altogether?) from the installation archive?

Thanks,
Keith

Cantor, Scott

unread,
Nov 17, 2011, 5:55:55 PM11/17/11
to us...@shibboleth.net
On 11/17/11 5:49 PM, "Wessel, Keith William" <kwe...@illinois.edu> wrote:

>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.

Cantor, Scott

unread,
Nov 17, 2011, 7:10:33 PM11/17/11
to us...@shibboleth.net
Note that whatever you use will either work or give you an error, but
there's no risk factor. Nothing in lib has anything to do with the running
IdP software, so either the command will work or not, but no harm done.

Keith Wessel

unread,
Nov 17, 2011, 8:28:41 PM11/17/11
to Shib Users
Thanks, Scott.

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

Takeshi NISHIMURA

unread,
Nov 17, 2011, 9:29:39 PM11/17/11
to Shib Users
Hi Keith,

If you are using Tomcat, there is servlet-api.jar in $CATALINA_HOME/lib/. You can use this instead, I think.

Cantor, Scott

unread,
Nov 18, 2011, 1:16:15 AM11/18/11
to Shib Users, Shib Users
On Nov 17, 2011, at 8:29 PM, "Keith Wessel" <kwe...@illinois.edu> wrote:
>
> 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.

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.

Reply all
Reply to author
Forward
0 new messages