Ok, I narrowed this down further.
I reverted my project and everything worked great again. I found that
if I get an init parameter from within the start() method of my
authentication valve, for some reason, it blows away the context-param
metadata set by the jaxrs deployer:
context.getServletContext().getInitParameter("skeleton.key.config.file");
Still doesn't make sense, but maybe this is a better symptom. I'm a bit
tired, so I'll try and create a smaller project that reproduces the
problem later.
On 1/16/2013 8:40 PM, Stuart Douglas wrote:
Is the code to reproduce this on github?
Stuart
Bill Burke wrote:
> I have a very strange, rather complex problem that I'm having a very
> hard time figuring out exactly what the cause is. Its a huge blocker
> for me.
>
> * JBoss AS 7.1.1
> * I have a WAR with very simple JAX-RS classes in them
> * The WAR has security constraints
> * Uses basic auth
>
> The above works great, but when I add some more, specifically:
>
> * I add a custom valve that does authentication
> * The custom valve class lives in a module that is imported via
> jboss-deployment-structure.xml
> * This module has JAX-RS dependencies (not exported)
>
> The above does not work. I'm getting 404's when invoking on the
> deployed JAX-RS classes. I've been placing a bunch of logging
> statements within resteasy (3.0) and also the JAX-RS deployer which I
> forked from the 7.1.1 tagged release.
>
> * The valve works like a charm
> * A JAX-RS servlet is being deployed
> * The AS7 jaxrs deployment scanner is finding the appropriate classes
> * The AS7 jaxrs integration processor is adding the appropriate
> context-params to the web deployment so resteasy servlet knows what to
> deploy. ("resteasy.scanned.resources")
> * But, the context-params are null when the resteasy servlet finally
> decides to initialize, so no JAX-RS classes from the deployment are
> deployed.
>
> I have no idea why!!
>
> To further narrow the problem, I created a simple pass-thru
> authentication valve class within the same custom module. It worked, so
> I decided to just include the initialization code (which does nothing
> really but create some classes, but does reference a bunch of Resteasy
> classes). Then, the problem surfaces again.
>
> It seems like a module/classloader problem, based on adding code to the
> pass-thru valve, but I don't know how the frack classloader issues could
> effect servlet metadata created by the JAX-RS deployer.
>
> If you've gotten through this read, thanks.
>
>
>
--
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com