+1 as well, looks good to me.
On Tue, Jun 11, 2013 at 12:12 PM, Mark Struberg <strub...@yahoo.de> wrote: > +1 let's move forward! > > Otherwise we will spend way too much time with discussions and too less > with productive hacking ;) > > LieGrue, > strub > > > > > ----- Original Message ----- > > From: Christian Kaltepoth <christ...@kaltepoth.de> > > To: dev@deltaspike.apache.org > > Cc: > > Sent: Tuesday, 11 June 2013, 17:29 > > Subject: Re: Servlet module prototype > > > > Hey all, > > > > I finished the modifications I proposed in my last mail. The code is now > > split up into different filters and listeners for each job. I think this > > makes the code much cleaner an maintainable. You can have a look at the > > branch here: > > > > https://github.com/chkal/deltaspike/tree/servlet > > > > Especially this package: > > > > > https://github.com/chkal/deltaspike/tree/servlet/deltaspike/modules/servlet/impl/src/main/java/org/apache/deltaspike/servlet/impl > > > > For now I registered all the listeners in web-fragment.xml: > > > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/main/resources/META-INF/web-fragment.xml > > > > If you all agree, I could rebase and merge the current state into the > > Apache repository. > > > > After I merged it, we could discuss how to implement ways to disable > parts > > of the functionality. Either by implementing a dynamic registration using > > ServletInitializers or by using Deactivatable. > > > > What do you think? > > > > Christian > > > > > > > > 2013/6/8 Christian Kaltepoth <christ...@kaltepoth.de> > > > >> Hey John, > >> > >> thank you very much for sharing your thoughts on this. It is very > >> interesting for me to hear about the feedback your got from Solder > users. > >> And I think we should definitely address the issues you pointed out. > >> > >> So my idea would be the following. I could start separating the filter > and > >> the listeners into distinct classes with explicit functions. For > example > >> one filter for managing everything that is required for the injection > of > >> servlet objects and one filter for sending the events. > >> > >> After I'm done with this and if everybody agrees on the new structure, > > I > >> could merge the current state into the main repository. After that we > could > >> think about and work on an approach to partially disable functionality > >> which should be easy to implement with this new structure. > >> > >> What do you think? > >> > >> > >> > >> > >> 2013/6/7 John D. Ament <john.d.am...@gmail.com> > >> > >> Hi Christian, > >>> > >>> Actually I was going to respond this morning but got side tracked. > >>> > >>> Anyways, I agree that the servlet module needs to provide all of this > >>> functionality, however I think we need to make sure that it's more > >>> scalable > >>> than the way this worked in solder/seam3. The biggest gripe I hear > > from > >>> people about seam3 was that it was all or nothing. It was difficult > to > >>> activate only portions of the functionality. I think we started to do > >>> that > >>> in DS with the deactivateable function but there are certain places > > where > >>> it makes sense to deactivate in other ways. > >>> > >>> What I'm suggesting is that we: > >>> > >>> 1. Separate the listeners out - can we have two listeners, one for the > >>> context listener and one for the session listener. > >>> 2. Come up with some way that the filters can be more manageable. For > >>> example, maybe I'm only interested in request, not response. Maybe > > I only > >>> want Initialized and not Destroyed. This way we don't have to fire > > the > >>> event every single request. This is probably a good case for > >>> deactivatable, but more at the class feature level. > >>> 3. Come up with a way to make this not automatically installed, even > if > >>> you > >>> include the servlet module in your archive. if metadata complete is > > the > >>> best option, we should just document the use of metadata complete to > >>> disable the installation. > >>> > >>> John > >>> > >>> > >>> On Fri, Jun 7, 2013 at 11:23 AM, Christian Kaltepoth < > >>> christ...@kaltepoth.de > >>> > wrote: > >>> > >>> > Sorry, I think my mail wasn't very clear. Sorry for the > > confusion. :) > >>> > > >>> > The servlet module provides two features: the injection of servlet > >>> objects > >>> > and the propagation of servlet events. It makes sense that the > > request > >>> > events can be disabled. But IMHO the producers that allow > > injection of > >>> > servlet objects is a fundamental feature of the servlet module > > without > >>> any > >>> > performance overhead and should therefore not be deactivateable. > >>> > > >>> > The filter implemented in the servlet modules does two things: > >>> > > >>> > - It stores the request and the response in a ThreadLocal. The > >>> producer > >>> > methods use this ThreadLocal to access the request/response. So > > the > >>> > request/response injection requires this filter to work > > correctly. > >>> > - The filter also propagates the servlet events to the CDI > > event bus. > >>> > This is something that should be deactivatable. > >>> > > >>> > The same applies to things like the ServletContextListener. This > > one > >>> stores > >>> > the ServletContext in a map for each context class loader and it > > sends > >>> the > >>> > events for it's construction and destruction to the event bus, > > while > >>> only > >>> > the latter one should be deactivateable. > >>> > > >>> > What I wanted to say in my previous mail is that we cannot use a > >>> > ServletContainerInitializer > >>> > which register the filter only if the servlet events are not > > disabled, > >>> > because this would not only disable the servlet events but also > > break > >>> the > >>> > injection of the request/response into CDI beans. > >>> > > >>> > So I think it would make sense to always register the filter using > >>> > web-fragment.xml. Additionally we could control if the events are > > fired > >>> or > >>> > not using the config resolver approach that you talked about. But > > the > >>> > ThreadLocal management should always be active so that the > > injection of > >>> > request/response works like expected. > >>> > > >>> > To sum it up: IMHO we will _always_ need the filters and the > > listeners > >>> in > >>> > the servlet module, but we should allow to disable certain parts > > of > >>> their > >>> > functionality. > >>> > > >>> > I hope this makes everything a bit clearer. :) > >>> > > >>> > Christian > >>> > > >>> > > >>> > > >>> > > >>> > 2013/6/7 Romain Manni-Bucau <rmannibu...@gmail.com> > >>> > > >>> > > If a user deactivate it it means it doesn't it the > > feature so no need > >>> of > >>> > > any thread local. If a module needs it it can just override > > the > >>> > > configuration to force it (through config resolver) so i > > still think > >>> my > >>> > > proposal was possible and better than having it always on (if > > i missed > >>> > sthg > >>> > > just push a bit more your explanations please). > >>> > > > >>> > > *Romain Manni-Bucau* > >>> > > *Twitter: @rmannibucau > > <https://twitter.com/rmannibucau>* > >>> > > *Blog: **http://rmannibucau.wordpress.com/*< > >>> > > http://rmannibucau.wordpress.com/> > >>> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau* > >>> > > *Github: https://github.com/rmannibucau* > >>> > > > >>> > > > >>> > > > >>> > > 2013/6/7 Christian Kaltepoth <christ...@kaltepoth.de> > >>> > > > >>> > > > @Romain: > >>> > > > > >>> > > > The filter and the listeners do not only send the events > > but also > >>> > manage > >>> > > > the ThreadLocals required for the producers. So > > currently it is > >>> > required > >>> > > to > >>> > > > have the filter and the listeners configured for the > > injection to > >>> work. > >>> > > > That's why I think that it makes sense to always > > have the filter and > >>> > > > listeners in place and just don't send the events if > > the user > >>> disabled > >>> > > > them. And of cause one could use ConfigResolver for > > that. > >>> > > > > >>> > > > @Mark: > >>> > > > > >>> > > > So you say that firing events is expensive even if there > > are no > >>> > observers > >>> > > > listening? > >>> > > > > >>> > > > Generally I like the idea of having DeltaSpike > > automatically detect > >>> > that > >>> > > > certain features can be disabled because they are not > > used. So if > >>> > nobody > >>> > > > listens for servlet events, the filter could simply > > never send them. > >>> > > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > 2013/6/7 Gerhard Petracek > > <gerhard.petra...@gmail.com> > >>> > > > > >>> > > > > the general jira-issue for it is [1]. > >>> > > > > > >>> > > > > regards, > >>> > > > > gerhard > >>> > > > > > >>> > > > > [1] > > https://issues.apache.org/jira/browse/DELTASPIKE-349 > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > 2013/6/7 Mark Struberg <strub...@yahoo.de> > >>> > > > > > >>> > > > > > > >>> > > > > > > >>> > > > > > Gerhard and me thought about this for quite a > > few other > >>> features as > >>> > > > well. > >>> > > > > > > >>> > > > > > > >>> > > > > > Event firing is indeed a bit expensive. Thus > > we might add a > >>> > > > > > > >>> > > > > > > >>> > > > > > Map<Class<? extends Deactivatable> > > /*the 'feature'*/, > >>> Set<Class<?>> > >>> > > > > > /*types which get observed*/ > >>> > > > > > > >>> > > > > > and utilize @Observes ProcessObserverMethod to > > check whether > >>> there > >>> > > is a > >>> > > > > > need to activate this feature at all. > >>> > > > > > > >>> > > > > > In short: if there is no ObserverMethod which > > @Observes ? > >>> extends > >>> > > > > > ServletResponse or ServletResponse then we > > don't need to fire > >>> any > >>> > CDI > >>> > > > > > event. Not sure if this is needed though or > > whether the > >>> Containers > >>> > > are > >>> > > > > > smart enough to optimize this away themselfs > > (with a negative > >>> cache > >>> > > > kind > >>> > > > > of > >>> > > > > > thingy). > >>> > > > > > > >>> > > > > > > >>> > > > > > LieGrue, > >>> > > > > > strub > >>> > > > > > > >>> > > > > > >________________________________ > >>> > > > > > > From: Christian Kaltepoth > > <christ...@kaltepoth.de> > >>> > > > > > >To: dev@deltaspike.apache.org > >>> > > > > > >Cc: Mark Struberg > > <strub...@yahoo.de> > >>> > > > > > >Sent: Friday, 7 June 2013, 8:22 > >>> > > > > > >Subject: Re: Servlet module prototype > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > >I think Nicklas and John fear that firing > > events for each > >>> > > > > > request/response could lead to performance > > issues!?! > >>> > > > > > > > >>> > > > > > > > >>> > > > > > >But I'm not sure if there will be a > > noticeable performance > >>> impact > >>> > if > >>> > > > > > there are no observers for the events. I > > don't think that > >>> firing an > >>> > > > event > >>> > > > > > that nobody observes is expensive. > >>> > > > > > > > >>> > > > > > > > >>> > > > > > >And I also think that Solder didn't > > provide any way to disable > >>> > these > >>> > > > > > events (correct me if I'm wrong). Or has > > there been any reports > >>> > > > regarding > >>> > > > > > Solder's performance? > >>> > > > > > > > >>> > > > > > > > >>> > > > > > > > >>> > > > > > >2013/6/7 Romain Manni-Bucau > > <rmannibu...@gmail.com> > >>> > > > > > > > >>> > > > > > >Hi > >>> > > > > > >> > >>> > > > > > >>in fact i don't get why you would > > like to be able to > >>> deactivate > >>> > it. > >>> > > > > > >>Basically it is a web *module* so if > > it is here it is either > >>> > needed > >>> > > > by > >>> > > > > a > >>> > > > > > >>dep or you explicitely imported it so > > you want it. So > >>> basically a > >>> > > > > > >>configurable (through ConfigResolver) > >>> ServletContainerInitializer > >>> > > is > >>> > > > > just > >>> > > > > > >>what we need to be able to deactivate > > not needed listeners. > >>> Other > >>> > > > > config > >>> > > > > > >>can break modules relying on it so it > > could prevent lib to use > >>> > this > >>> > > > > > module. > >>> > > > > > >> > >>> > > > > > >>*Romain Manni-Bucau* > >>> > > > > > >>*Twitter: @rmannibucau > > <https://twitter.com/rmannibucau>* > >>> > > > > > >>*Blog: > > **http://rmannibucau.wordpress.com/*< > >>> > > > > > http://rmannibucau.wordpress.com/> > >>> > > > > > >>*LinkedIn: > > **http://fr.linkedin.com/in/rmannibucau* > >>> > > > > > >>*Github: > > https://github.com/rmannibucau* > >>> > > > > > >> > >>> > > > > > >> > >>> > > > > > >> > >>> > > > > > >> > >>> > > > > > >>2013/6/7 Christian Kaltepoth > > <christ...@kaltepoth.de> > >>> > > > > > >> > >>> > > > > > >>> The servlet module doesn't > > work at all without the filter > >>> and > >>> > the > >>> > > > > > >>> listeners. So I think it > > absolutely makes sense to include > >>> them > >>> > > in > >>> > > > a > >>> > > > > > >>> web-fragment.xml inside the > > servlet-impl module. If > >>> something > >>> > > like > >>> > > > > > >>> filter/listener ordering is an > > issue for users, they can > >>> still > >>> > > set > >>> > > > > > >>> "metadata-complete" and > > manually add the required entries > >>> into > >>> > > > their > >>> > > > > > own > >>> > > > > > >>> web.xml. Or they could use > > <absolute-ordering>. > >>> > > > > > >>> > >>> > > > > > >>> But I agree that it should be > > possible to disable the events > >>> > (all > >>> > > > > > events or > >>> > > > > > >>> perhaps just the request/response > > events?). The question is > >>> > which > >>> > > > way > >>> > > > > > the > >>> > > > > > >>> user should use to configure > > this. Of cause we could also > >>> use a > >>> > > > > servlet > >>> > > > > > >>> context parameter. Something > > like: > >>> > > > > > >>> > >>> > > > > > >>> <context-param> > >>> > > > > > >>> > >>> > > > > > > >>> > > > <param-name>org.apache.deltaspike.DISABLE_SERVLET_EVENTS</param-name> > >>> > > > > > >>> > > <param-value>true</param-value> > >>> > > > > > >>> </context-param> > >>> > > > > > >>> > >>> > > > > > >>> But DeltaSpike already provides a > > mechanism for disabling > >>> > > features > >>> > > > > > which is > >>> > > > > > >>> part of the core module and is > > already used in various other > >>> > > > places. > >>> > > > > > If we > >>> > > > > > >>> allow users to deactivate > > features, we should be consistent > >>> in > >>> > > how > >>> > > > > > users > >>> > > > > > >>> can do it. > >>> > > > > > >>> > >>> > > > > > >>> Is it correct that there is > > currently no implementation of > >>> > > > > > ClassDeactivator > >>> > > > > > >>> in DeltaSpike at all? What about > > adding an implementation > >>> that > >>> > > uses > >>> > > > > > servlet > >>> > > > > > >>> context parameters to the servlet > > module? Wouldn't this be a > >>> > nice > >>> > > > > > >>> enhancement? This way users could > > either use "simple" > >>> servlet > >>> > > > context > >>> > > > > > >>> parameters or they could use some > > other more flexible way if > >>> > they > >>> > > > > want > >>> > > > > > to. > >>> > > > > > >>> > >>> > > > > > >>> Christian > >>> > > > > > >>> > >>> > > > > > >>> > >>> > > > > > >>> > >>> > > > > > >>> > >>> > > > > > >>> 2013/6/6 John D. Ament > > <john.d.am...@gmail.com> > >>> > > > > > >>> > >>> > > > > > >>> > What if the web-fragment.xml > > were in a separate JAR? > >>> > > > > > >>> > Deactivatable is a custom > > solution, I'd love to avoid > >>> using > >>> > it. > >>> > > > > > >>> > > >>> > > > > > >>> > > >>> > > > > > >>> > On Thu, Jun 6, 2013 at 11:03 > > AM, Christian Kaltepoth < > >>> > > > > > >>> > christ...@kaltepoth.de > >>> > > > > > >>> > > wrote: > >>> > > > > > >>> > > >>> > > > > > >>> > > @John, @Nicklas: > >>> > > > > > >>> > > > >>> > > > > > >>> > > I agree that it should > > be possible to disable the > >>> servlet > >>> > > > events. > >>> > > > > > But I > >>> > > > > > >>> > > think we should > > automatically register the filter and > >>> the > >>> > > > > listeners > >>> > > > > > >>> using > >>> > > > > > >>> > > web-fragment.xml > > because they are required for the > >>> > injection > >>> > > to > >>> > > > > > work > >>> > > > > > >>> > > correctly. > >>> > > > > > >>> > > > >>> > > > > > >>> > > Isn't this a > > perfect use case for Deactivatable? We > >>> could > >>> > > > simply > >>> > > > > > >>> define a > >>> > > > > > >>> > > dummy implementation of > > Deactivatable which can be used > >>> to > >>> > > > > disable > >>> > > > > > just > >>> > > > > > >>> > the > >>> > > > > > >>> > > events. We already do > > something with GlobalAlternative: > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/apache/deltaspike/blob/master/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/GlobalAlternative.java#L26 > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/apache/deltaspike/blob/master/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/exclude/extension/ExcludeExtension.java#L91 > >>> > > > > > >>> > > > >>> > > > > > >>> > > What about this: > >>> > > > > > >>> > > > >>> > > > > > >>> > > public interface > > ServletEventBridge implements > >>> > > Deactivatable > >>> > > > { > >>> > > > > } > >>> > > > > > >>> > > > >>> > > > > > >>> > > Thoughts? > >>> > > > > > >>> > > > >>> > > > > > >>> > > Christian > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > 2013/6/6 John D. Ament > > <john.d.am...@gmail.com> > >>> > > > > > >>> > > > >>> > > > > > >>> > > > I'd prefer if > > we simply didn't include the > >>> > web-fragment.xml > >>> > > > and > >>> > > > > > >>> instead > >>> > > > > > >>> > > > provided > > instructions on the wiki on how to enable > >>> them. > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > On Thu, Jun 6, > > 2013 at 4:37 AM, Nicklas Karlsson < > >>> > > > > > nicka...@gmail.com > >>> > > > > > >>> > > >>> > > > > > >>> > > > wrote: > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > > I would also > > drop the @Web-annotation, I think. BTW, > >>> > can > >>> > > > the > >>> > > > > > >>> > > > > > > request/reponse lifecycle events be disabled? I > >>> would > >>> > > > assume > >>> > > > > > that > >>> > > > > > >>> > there > >>> > > > > > >>> > > > is > >>> > > > > > >>> > > > > a lot of > > firing going off for an ajax-application > >>> and > >>> > > they > >>> > > > > > >>> observers > >>> > > > > > >>> > > will > >>> > > > > > >>> > > > > have to be > > resolved even if there are no > >>> observers(?) > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > On Thu, Jun > > 6, 2013 at 11:25 AM, Mark Struberg < > >>> > > > > > strub...@yahoo.de> > >>> > > > > > >>> > > > wrote: > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > > Nice > > work! > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > The @Web > > Qualifier looks a bit odd, but will turn > >>> out > >>> > > > into > >>> > > > > > the > >>> > > > > > >>> > > broader > >>> > > > > > >>> > > > > > > > discussion about how to implement features which > >>> > might > >>> > > > get > >>> > > > > > >>> 'added' > >>> > > > > > >>> > in > >>> > > > > > >>> > > > > > future > > specs. > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > LieGrue, > >>> > > > > > >>> > > > > > strub > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > ----- > > Original Message ----- > >>> > > > > > >>> > > > > > > > > From: Christian Kaltepoth < > >>> christ...@kaltepoth.de> > >>> > > > > > >>> > > > > > > To: > > "deltaspike-...@incubator.apache.org" < > >>> > > > > > >>> > > > > > > > deltaspike-...@incubator.apache.org> > >>> > > > > > >>> > > > > > > Cc: > >>> > > > > > >>> > > > > > > > > Sent: Thursday, 6 June 2013, 6:56 > >>> > > > > > >>> > > > > > > > > Subject: Servlet module prototype > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > Hey > > all, > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > I > > spent some time working on a first version of > >>> the > >>> > > > > servlet > >>> > > > > > >>> > module. > >>> > > > > > >>> > > > All > >>> > > > > > >>> > > > > > the > >>> > > > > > >>> > > > > > > > > basic features are finished now and therefore I > >>> > think > >>> > > > its > >>> > > > > > time > >>> > > > > > >>> to > >>> > > > > > >>> > > ask > >>> > > > > > >>> > > > > for > >>> > > > > > >>> > > > > > > > > some feedback. > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > I > > pushed the code to the "servlet" branch on my > >>> > > github > >>> > > > > > repo: > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> https://github.com/chkal/deltaspike/tree/servlet > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > The > > servlet module provides two major features: > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > * > > Injection of servlet various objects > >>> > > > > > >>> > > > > > > * > > Servlet lifecycle events > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > The > > producers are using the qualifier @Web to > >>> avoid > >>> > > > > > conflicts > >>> > > > > > >>> > with > >>> > > > > > >>> > > > CDI > >>> > > > > > >>> > > > > > 1.1. > >>> > > > > > >>> > > > > > > We > > could discuss whether some other name for the > >>> > > > > qualifier > >>> > > > > > fits > >>> > > > > > >>> > > > better. > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > See > > the following classes from the tests to get > >>> an > >>> > > idea > >>> > > > > of > >>> > > > > > what > >>> > > > > > >>> > can > >>> > > > > > >>> > > > be > >>> > > > > > >>> > > > > > > > > injected: > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/producer/ServletObjectInjectionBean.java > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/producer/ServletContextInjectionTest.java > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > The > > lifecycle events are fired using the > >>> qualifiers > >>> > > > > > >>> @Initialized > >>> > > > > > >>> > or > >>> > > > > > >>> > > > > > > > > @Destroyed just like in Seam Solder. I also > >>> added > >>> > the > >>> > > > > @Web > >>> > > > > > >>> > > qualifier > >>> > > > > > >>> > > > to > >>> > > > > > >>> > > > > > all > >>> > > > > > >>> > > > > > > > > events, but we could discuss whether this is > >>> really > >>> > > > > > necessary. > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > The > > following classes show which events can be > >>> > > > observed: > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/request/RequestResponseEventsObserver.java > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/session/SessionEventsObserver.java > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > >>> > > > > > >>> > > > > > >>> > > > > > >>> > > > > >>> > > > > > >>> > > > >>> > > > > > >>> > > >>> > > > > > >>> > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > > > https://github.com/chkal/deltaspike/blob/servlet/deltaspike/modules/servlet/impl/src/test/java/org/apache/deltaspike/test/servlet/impl/event/context/ServletContextEventsObserver.java > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > One > > thing that I'm not quite happy with is the > >>> way > >>> > > the > >>> > > > > > >>> > > ServletContext > >>> > > > > > >>> > > > > > > > > injection works. I'm currently using a map that > >>> > > stores > >>> > > > > the > >>> > > > > > >>> > > > > > > ServletContext > >>> > > > > > >>> > > > > > > for > > each context class loader. IMHO this is > >>> better > >>> > > than > >>> > > > > > using > >>> > > > > > >>> > > > > > > > > HttpServletRequest.getServletContext() as it > >>> also > >>> > > works > >>> > > > > for > >>> > > > > > >>> > threads > >>> > > > > > >>> > > > > > outside > >>> > > > > > >>> > > > > > > of > > a request (like schedulers for example). I > >>> also > >>> > > > wanted > >>> > > > > > to > >>> > > > > > >>> > avoid > >>> > > > > > >>> > > > > using > >>> > > > > > >>> > > > > > > the > > CDI application scope for storing the > >>> > > > ServletContext > >>> > > > > to > >>> > > > > > >>> avoid > >>> > > > > > >>> > > > > > problems > >>> > > > > > >>> > > > > > > > > regarding different implementations of the > >>> scope in > >>> > > > > regard > >>> > > > > > to > >>> > > > > > >>> EAR > >>> > > > > > >>> > > > > > > > > packaging. I would be very interested in hearing > >>> > your > >>> > > > > > thoughts > >>> > > > > > >>> on > >>> > > > > > >>> > > > this. > >>> > > > > > >>> > > > > > :) > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > One > > other thing. As I currently don't use any > >>> > Servlet > >>> > > > 3.0 > >>> > > > > > >>> > features, > >>> > > > > > >>> > > > the > >>> > > > > > >>> > > > > > > > > module depends on the Servlet 2.5 API. Do you > >>> think > >>> > > it > >>> > > > > > makes > >>> > > > > > >>> > sense > >>> > > > > > >>> > > to > >>> > > > > > >>> > > > > > still > >>> > > > > > >>> > > > > > > > > support Servlet 2.5 or should we require at > >>> least > >>> > > > Servlet > >>> > > > > > 3.0? > >>> > > > > > >>> > > > > > > > >>> > > > > > >>> > > > > > > > > Looking forward to your feedback. Especially I > >>> > would > >>> > > > like > >>> > > > > > to > >>> > > > > > >>> know > >>> > > > > > >>> > > if > >>> > > > > > >>> > > > > you > >>> > > > > > >>> > > > > > > > > think that the code should be merged into the > >>> > > upstream > >>> > > > > > >>> > repository. > >>> > > > > > >>> > > :) > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > > >>> > > > > >>> > > > -- > >>> > > > Christian Kaltepoth > >>> > > > Blog: http://blog.kaltepoth.de/ > >>> > > > Twitter: http://twitter.com/chkal > >>> > > > GitHub: https://github.com/chkal > >>> > > > > >>> > > > >>> > > >>> > > >>> > > >>> > -- > >>> > Christian Kaltepoth > >>> > Blog: http://blog.kaltepoth.de/ > >>> > Twitter: http://twitter.com/chkal > >>> > GitHub: https://github.com/chkal > >>> > > >>> > >> > >> > >> > >> -- > >> Christian Kaltepoth > >> Blog: http://blog.kaltepoth.de/ > >> Twitter: http://twitter.com/chkal > >> GitHub: https://github.com/chkal > >> > >> > > > > > > -- > > Christian Kaltepoth > > Blog: http://blog.kaltepoth.de/ > > Twitter: http://twitter.com/chkal > > GitHub: https://github.com/chkal > > >