On 13/02/2015 18:49, Ryan Scharer wrote:
> Chris,
> 
> I share your misgivings about magic, though if it exhibits well-documented
> and predictable behavior I usually just shrug and go along with it. Sadly
> that doesn't seem to be the case here.

It is documented but I'd agree it could be better documented.

 I'll set aside some time to step
> through the Tomcat code to try to figure this out,

Save yourself the effort and read this from line ~1085.

http://svn.eu.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?view=annotate

Mark

> though in the meantime
> my best bet may be to repackage the 3rd party jar minus its web-fragment.
> 
> -R
> 
> On Fri, Feb 13, 2015 at 1:18 PM, Christopher Schultz <
> ch...@christopherschultz.net> wrote:
> 
> Ryan,
> 
> On 2/13/15 12:59 PM, Ryan Scharer wrote:
>>>> I'm not sure if this is a bug or not, but I can't find any relevant
>>>>  information in the spec to suggest the behavior is expected.
>>>>
>>>> There's a web-fragment in my classpath that I'd like to skip. The
>>>> only way to accomplish this that I know of is to put an
>>>> <absolute-ordering> stanza in my web.xml and omit an <others/>.
>>>> Though this has the desired effect of skipping the web-fragment I
>>>> don't want, it has the very negative side effect that my
>>>> ServletContainerInitializer doesn't get handed all instances of
>>>> WebApplicationInitializer anymore, despite its @HandlesTypes
>>>> annotation. If I add the <others/>, classpath scanning works fine,
>>>> but the undesired web-fragment comes back. I've tested this in the
>>>> latest 7.x and 8.x Tomcat releases.
>>>>
>>>> This begs two questions:
>>>>
>>>> 1. Why does specifying an <absolute-ordering> without an <others/>
>>>> kill classpath scanning, or at least the part of Tomcat
>>>> responsible for finding types specified by @HandlesTypes and giving
>>>> it to interested parties? 2. Is there an alternate way to skip a
>>>> web-fragment, short of ripping it out of the jar, which I really
>>>> don't want to do?
> 
> It's unclear to me why <absolute-ordering> affects JAR scanning...
> absolute-ordering should affect only the processing of web-fragments.
> The Tomcat documentation for absolute-ordering makes it sounds like
> you have to mention a JAR name while the spec documentation makes it
> seem like you need to use the <name> element from web-fragments that
> are detected in JAR files.
> 
> The whole thing is a can of worms, honestly.
> 
> As for your inability to skip a web-fragment... that seems
> straightforward to me: if you have <others/> specified, then
> "everything else" will be processed in that order, including the
> web-fragment you don't want. There does not seem to be a way to
> blacklist a web-fragment short of completely removing it from your
> project's libraries.
> 
> But the fact that the lack of <others> causes Tomcat to fail to do JAR
> scanning is surprising to me. I tend to prefer explicit configuration
> over all this scanning-related magic so I'm afraid I don't have any
> experience with this kind of thing. In fact, it's this kind of
> foolishness that makes me stick with explicitly-specified
> configurations instead of magic ones. Good luck figuring out how the
> magic works / is supposed to work!
> 
> -chris
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to