commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rammohan Natarajan <rammohan.natara...@tcs.com>
Subject Re: [beanutils] Issue with ContextClassLoaderLocal class.
Date Wed, 25 May 2011 07:56:00 GMT
Thanks for the responses.
 
I had been thinking along those lines that the registration should be done
within the parsing module. But I am a bit curious as to know the root cause
of this problem. Is my application design flawed in registering all custom
converters during application startup or is it a result of some limitation of
beanutils?
And also how it manages to work properly in WebSphere?
 
Thanks.

-----Niall Pemberton <niall.pemberton@gmail.com> wrote: -----


To: Commons Users List <user@commons.apache.org>
From: Niall Pemberton <niall.pemberton@gmail.com>
Date: 05/24/2011 08:00PM
Subject: Re: [beanutils] Issue with ContextClassLoaderLocal class.

On Tue, May 24, 2011 at 1:55 PM, Rammohan Natarajan
<rammohan.natarajan@tcs.com> wrote:
> Hi,
>
> We are working on migrating a J2EE application from WAS6.1 to JBoss EAP 5.0. For unmarshalling
of some custom XML we make use of commons-beanutils-1.8.3 within this application; and in
the process, we have defined a custom type converter for one of the XML tags.
> The registration of this converter happens in one EJB module within our EAR, whereas
theactual XML parsing occurs in another EJB module within the same EAR.
> The org.apache.commons.beanutils.ContextClassLoaderLocal class ties 'global' variables
to a classloader instance in a map to ensure data isolation even if the variable is referenced
by multiple components running within a container.
> Here is the relevant code snippet from its get() method:
>
>    ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
>    if (contextClassLoader != null)
>    {
>        Object value = valueByClassLoader.get(contextClassLoader);
>        if ((value == null) && !valueByClassLoader.containsKey(contextClassLoader))
>        {
>            value = initialValue();
>            valueByClassLoader.put(contextClassLoader, value);
>        }
>    return value;
>    }
>
> After all that background information, here is the problem:
> During the converter registration process, a BeanUtilsBean instance is maintained in
the ContextClassLoaderLocal map against the classloader of the registration EJB module.
> During the parsing process, this map is queried to retreive the same BeanUtilsBean instance,
using the classloader of the parsing EJB module as the key. In Websphere Application server,
the classloader instance for the registration module and the parser module are both same;
the correct BeanUtilsBean instance is retreived and processing proceeds as expected. However,
in JBoss EAP 5.0, the two classloader instances are different so that the parser module fails
to retreive the value from the map.
> Is this a problem with beanutils' design or an issue with JBoss?

I think you need to register the converter in the module its used in -
i.e. your parsing EJB module

Niall

> Please let me know if I am missing something or if additional details are required.
> Thanks in advance.
> N.Rammohan.
> =====-----=====-----=====
> Notice: The information contained in this e-mail
> message and/or attachments to it may contain
> confidential or privileged information. If you are
> not the intended recipient, any dissemination, use,
> review, distribution, printing or copying of the
> information contained in this e-mail message
> and/or attachments to it are strictly prohibited. If
> you have received this communication in error,
> please notify us by reply e-mail or telephone and
> immediately and permanently delete the message
> and any attachments. Thank you
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you




---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message