geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ivan <xhh...@gmail.com>
Subject Re: How to resolve the different thread is used for Tomcat context initialization ?
Date Thu, 20 Jan 2011 04:36:15 GMT
Attach a new patch to https://issues.apache.org/jira/browse/GERONIMO-5759.
Now, we will invoke the beforeAfter while we enter the new thread. Think
that everything should be ready in the new thread.
Thanks.

2011/1/20 Ivan <xhhsld@gmail.com>

> Thanks, just realized that more configurations need to propagate to the new
> thread context. Will continue to investigate it.
>
> 2011/1/20 David Jencks <david_jencks@yahoo.com>
>
> I don't understand what you are proposing here.  I also think that tomcat's
>> new thread also removes the jndi and transaction context handling from
>> initialization so it is a lot more broken that we have seen yet.
>>
>> For this code in particular WebBeansContext.getInstance() is the call that
>> fails right now because the GeronimoSingletonService has not been
>> initialized with the correct WebBeansContext for this thread.  The correct
>> WebBeansContext is already stored somewhere in the standard context, the
>> problem is to be notified that we are working on a particular thread and
>> completely initialize all the contexts (OWB, jndi, tx, security)
>>
>> thanks
>> david jencks
>>
>> On Jan 19, 2011, at 2:49 AM, Rick McGuire wrote:
>>
>> > On 1/19/2011 4:17 AM, Ivan wrote:
>> >> Hi,
>> >> From Tomcat 7.0.6, a different thread is used for listener start,
>> filter start, and loadOnStartup, the purpose for that is for avoiding
>> potential memory leaking. But we got problems for OWB initialization, as we
>> register a OWB listener in the context. I am not sure whether this issue is
>> a common issue, but so far, I could only see that OWB is affected. Now, my
>> idea is to save the webbeans context in the servlet context, then attach it
>> with the thread in WebBeansConfigurationListener. Part of those codes are
>> like :
>> >> --->
>> >> WebBeansContext oldWebBeansContext =
>> GeronimoSingletonService.contextEntered((WebBeansContext)event.getServletContext().getAttribute("org.apache.webbeans.config.WebBeansContext"));
>> >>        try {
>> >>            this.webBeansContext = WebBeansContext.getInstance();
>> >>            this.failoverService =
>> webBeansContext.getService(FailOverService.class);
>> >>            //                this.lifeCycle.startApplication(event);
>> >>
>>  event.getServletContext().setAttribute(OpenWebBeansConfiguration.PROPERTY_OWB_APPLICATION,
>> "true");
>> >>        } catch (Exception e) {
>> >>            logger.error(OWBLogConst.ERROR_0018,
>> event.getServletContext().getContextPath());
>> >>            WebBeansUtil.throwRuntimeExceptions(e);
>> >>        } finally {
>> >>            GeronimoSingletonService.contextExited(oldWebBeansContext);
>> >>        }
>> >> <---
>> >>
>> >> Not sure that there is a common solution for it. Thoughts ?
>> >
>> > Saving the information needed by the listener in the servlet context
>> seems like a much cleaner solution than relying on the thread context.  If
>> this is the only piece that is an issue, I'd go with the simple solution.
>>  If there are other contexts that need to be accessed, then I think these
>> should be wrappered in a single Geronimo context object that would be
>> anchored in the servlet context.
>> >
>> > Rick
>> >
>> >
>> >> Thanks.
>> >> --
>> >> Ivan
>> >
>>
>>
>
>
> --
> Ivan
>



-- 
Ivan

Mime
View raw message