Just a quick clarification.
The goal of metadata-complete="true" is to say that the metadata in the
web.xml is complete.
It has no effect on the scanning or not classpath information in
WEB-INF/classes and WEB-INF/lib
Here's 2 examples where scanning is still required, regardless of what
metadata-complete says.
1) ServletContainerInitializer
In order to support this, the services for these are looked up from
META-INF/services/javax.servlet.ServletContainerInitializer and
instantiated.
Then any @HandlesTypes annotations on these SCI implementations are
identified.
All of the HandlesTypes entries are then required to be scanned for in
the WEB-INF/classes and WEB-INF/lib tree.
Then the server calls the SCI.onStartup(Set<Class<?>>, ServletContext)
with the entire set of classes matching the @HandlesTypes entries.
2) JSR-356 javax.websocket @ServerEndpoint and ServerApplicationConfig
support.
When you have websocket endpoints in the mix, they have to be scanned
for in order to be installed.
When you have ServerApplicationConfig instances, those have to be
invoked to (potentially) filter the found endpoints from the scan.
In short, don't rely on metadata-complete="true" to mean "will not scan
WEB-INF/classes and WEB-INF/lib jars".
That's simply not true (anymore)
--
Joakim Erdfelt <[email protected]>
webtide.com <http://www.webtide.com/> - intalio.com/jetty
Expert advice, services and support from from the Jetty & CometD experts
eclipse.org/jetty - cometd.org
On Wed, Oct 2, 2013 at 10:48 AM, Miguel Almeida
<[email protected]>wrote:
> Thanks for the quick reply Rossen,
>
>
> On Wed, Oct 2, 2013 at 5:40 PM, Rossen Stoyanchev <
> [email protected]> wrote:
>
>> You must be pulling in spring-web as a dependency. That's not required
>> for dependency injection so you might want to check what's pulling it
>> in.
>>
> Indeed. struts2-spring-plugin is using spring-web. Also, jmesa 3.0.4 is
> also using it (this one seems kind of odd).
>
> So I guess I need to go down the other way, but to be honest I do not
> quite understand what I am supposed to be doing.
> This is what I understood so far:
> 1) The goal of metadata-complete=true is to tell the container that it
> doesn't need to scan the lib/ folder for any Servlet 3.0 specific
> annotations
> 2) This is desired, because I am not using any
> 3) The presence of spring-web somehow forces Jetty to scan the entire /lib
> nonetheless *(searching for ServletContainerInitializers?)
> *
> 4) By adding an empty <absolute-ordering/>, we are essentially saying no
> ServletContainerInitializers are to be searched
> 5) This is what I need in this case, because this is a Struts application.
>
> I am sure to have said something wrong, but my limited knowledge of
> ServletContainerInitializers and whatnot is probably hindering these
> assumptions. Could you care to shed some light?
>
> Once again, thanks for the help!
>
> Miguel
>
>>
>> That said there is a way to include/exclude specific web fragments
>> through <absolute-ordering> in web.xml. It is a Servlet spec specific
>> mechanism but also see this commit message:
>>
>> https://github.com/spring-projects/spring-framework/commit/d309bb4bbbf41cac2c59808e0addebcaee5b9e29
>>
>> Rossen
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>>
>
>
> _______________________________________________
> jetty-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
>
_______________________________________________
jetty-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/jetty-users