[weld-dev] Ordering of servlet listeners

David Allen drallendc at gmail.com
Wed Mar 24 12:50:47 EDT 2010


Nik,

You might have to post in the JBoss AS development forum to find the
answer.  Maybe Ales would know too since he's done a lot of work with
deployers.

I have no idea how the ordering is being handled by the meta-data beans.

- David

Am Mittwoch, den 24.03.2010, 18:16 +0200 schrieb Nicklas Karlsson:
> Yep but this is on implementation level, the JBoss - weld integration
> sticks the WeldListener in all deployments through meta-data
> manipulation. Previously it just got the list of listeners and added
> it to the end of the list (i.e. not with a xml file). I tried putting
> it first but that didn't help so the question is, "is the ordering
> done at a later stage?" and "how can we get it first in all cases?"
> and "can we simulate a web-fragment etc so that the ordering is
> portable?"
> 
> On Wed, Mar 24, 2010 at 5:33 PM, Dan Allen <dan.j.allen at gmail.com>
> wrote:
>         I've quoted some passages from the Servlet 3.0 spec to
>         clarify.
>         
>         
>         As you know:
>                 
>                       Prior to this release of the specification,
>                 listeners were invoked in a random order.
>                       As of servlet 3.0, the order in which listeners
>                 are invoked is defined in “Assembling
>                       the descriptor from web.xml, web-fragment.xml
>                 and annotations”
>         
>         
>         The spec acknowledges that:
>         
>         
>                                  Since the specification allows the
>                 application configuration resources to be
>                                  composed of multiple configuration
>                 files (web.xml and web-fragment.xml),
>                                  discovered and loaded from several
>                 different places in the application, the question
>                                  of ordering must be addressed.
>         
>         
>         The web.xml (or web-fragment.xml) must have a <name> element
>         to participate in ordering.
>         
>         
>         Since you are dealing with web.xml, you will need to use the
>         absolute ordering:
>         
>         
>         1. Absolute ordering: an <absolute-ordering> element in the
>         web.xml.
>            a. In this case, ordering preferences that would have been
>         handled by case 2
>               below must be ignored.
>            b. The web.xml MUST be processed before any of the
>         web-fragments listed in the
>               absolute-ordering element.
>            c. Any <name> element direct children of the
>         <absolute-ordering> MUST be
>               interpreted as indicating the absolute ordering in which
>         those named web-
>               fragments, which may or may not be present, must be
>         processed.
>            d. The <absolute-ordering> element may contain zero or one
>         <others />
>               element. The required action for this element is
>         described below. If the
>               <absolute-ordering> element does not contain an
>         <others/> element,
>               any web-fragment not specifically mentioned within
>         <name /> elements
>               MUST be ignored. Excluded jars are not scanned for
>         annotated servlets, filters
>               or listeners. However, if a servlet, filter or listener
>         from an excluded jar is listed
>               in web.xml or a non-excluded web-fragment.xml, then it's
>         annotations will
>               apply unless otherwise excluded by metadata-complete.
>               ServletContextListeners discovered in TLD files of
>         excluded jars are not
>               able to configure filters and servlets using the
>         programmatic APIs. Any
>               attempt to do so will result in an
>         IllegalStateException. If a discovered
>               ServletContainerInitializer is loaded from an excluded
>         jar, it will be
>               ignored. Excluded jars are not scanned for classes to be
>         handled by any
>               ServletContainerInitializer.
>            e. Duplicate name exception: if, when traversing the
>         children of <absolute-
>               ordering>, multiple children with the same <name>
>         element are encountered,
>               only the first such occurrence must be considered.
>         
>         
>         Hopefully you can parse all that and get further along. I
>         recommend you checkout the spec for more details, and let us
>         know your results!
>         
>         
>         -Dan
>         
>         
>         
>         On Wed, Mar 24, 2010 at 3:20 AM, Nicklas Karlsson
>         <nickarls at gmail.com> wrote:
>         
>                 
>                 Hi,
>                 
>                 
>                   I'm tinkering with the servlet listener -> CDI event
>                 bridge in the seam-servlet module and noticed that
>                 currently the WeldListener is placed last in
>                 the PostWebMetadataDeployer in weld-int.
>                 I changed this (and verified it with the debugger) but
>                 still my own servlet listener fires first (expecting
>                 the contexts to be up), causing problems. Any theories
>                 as to why this is? How could we guarantee that
>                 the WeldListener is the first one to fire?
>                  
>                 ---
>                 Nik
>                 
>                 
>                 
>                 _______________________________________________
>                 weld-dev mailing list
>                 weld-dev at lists.jboss.org
>                 https://lists.jboss.org/mailman/listinfo/weld-dev
>                 
>         
>         
>         
>         
>         -- 
>         Dan Allen
>         Senior Software Engineer, Red Hat | Author of Seam in Action
>         Registered Linux User #231597
>         
>         http://mojavelinux.com
>         http://mojavelinux.com/seaminaction
>         http://www.google.com/profiles/dan.j.allen
>         
> 
> 
> 
> -- 
> ---
> Nik
> _______________________________________________
> weld-dev mailing list
> weld-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/weld-dev




More information about the weld-dev mailing list