[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-user
Subject:    Re: [beanutils] Issue with ContextClassLoaderLocal class.
From:       Rammohan Natarajan <rammohan.natarajan () tcs ! com>
Date:       2011-05-25 7:56:33
Message-ID: OFC51EC625.07B0769D-ON6525789B.002B946C-6525789B.002B9470 () tcs ! com
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic