Hi,

Gopinath Raghavan wrote:
> Hi Werner,
> 
> Please find my answers inline.
> 
> a) Do you have a test case that I can use to replay your probpem.
> [Gopi] We do not have a test case that could reproduce this problem. We
> have'nt been able to replay this problem in our test environments. From the
> observation (looking at timestamps in the DB and log file) of the issue we
> found that when two different xml messages are picked up for processing by
> two different threads exactly at the same time (timing matches upto
> millisecond level) then one of the response xml is corrupted.
> 
> b) How are you using Castor ? How are you creating Marshaller instances.
> [Gopi] We've a generic wrapper class that provides ability to configure
> castor or other xml data binding components. Please find the code below on
> how we create marshaller/unmarshaller classes with in the wrapper classes.
> // Marshaller Usage
>            StringWriter sw = new StringWriter();
>            _marshaller = new Marshaller(sw);
>            _marshaller.setResolver((XMLClassDescriptorResolver)
> _cdResolver);
>            _marshaller.setSuppressXSIType(true);
>            _marshaller.marshal(myObject);
> 
> 
> // Unmarshaller Usage
> _mapping = new Mapping();
> _mapping.loadMapping(_xmlMappingFile);
> 
> _cdResolver =
> ClassDescriptorResolverFactory.createClassDescriptorResolver(BindingType.XML);
> 
> MappingUnmarshaller mappingUnmarshaller = new MappingUnmarshaller();
> 
> MappingLoader mappingLoader = (MappingLoader)
> mappingUnmarshaller.getMappingLoader(
>         _mapping, BindingType.XML);
>     _cdResolver.setMappingLoader((XMLMappingLoader) mappingLoader);
> 
> _unmarshaller = new Unmarshaller();
> _unmarshaller.setResolver((XMLClassDescriptorResolver) _cdResolver);
> 
> 
> c) Do you share a Marshaller instance between the threads ?
> [Gopi] Yes we do share marshaller instances between threads. It is a
> singleton instance that is shared between the threads.
That is you problem, indeed. You should not share one Marshaller
instance between multiple threads; actually, you must not. In other
words, each thread must create its own instance of a Marshaller before
using it.

As long as you resuse the ClassDescriptorResolver amongst all the
Marshallers, start-up tine for a Marshaller upon instantiation will be
minimal.

Regards
Werner
> 
> Thanks and Regards,
> Gopinath R.
> 
> 
> On Tue, Dec 16, 2008 at 5:38 AM, Werner Guttmann <[email protected]>wrote:
> 
>> Hi,
>>
>> to be honest with you, I have not heard a single person in the past four
>> years or so that reported a concurrency issue with Castor. Please note
>> that I am NOT saying that you are doing somethnig wrong, but I think it
>> is extremly unlikely that this is the case.
>>
>> Let me ask you a few questions:
>>
>> a) Do you have a test case that I can use to replay your probpem.
>> b) How are you using Castor ? How are you creating Marshaller instances.
>> c) Do you share a Marshaller instance between the threads ?
>>
>> Regards
>> Werner Guttmann
>>
>> Gopinath Raghavan wrote:
>>> Hi there,
>>>
>>> We are using castor 1.1 in a multi-threaded environment.
>>>
>>> Please find below a brief description about our usage of castor and our
>>> system -
>>> Our application consumes xml message from messaging queue then uses
>> castor
>>> to process the message and send back a response. This is a plain simple
>> POJO
>>> application that listens to the messaging queues and we've about 10
>> threads
>>> listening to the queue. Whenever a message arrives one of the thread
>> picks
>>> up the xml message and starts processing. We use a mapping.xml.
>>>
>>> Observation of the issue -
>>> Recently after upgrading to castor 1.1 we are seeing that when two
>> threads
>>> pick up and process different xml messages at the same time we see that
>> the
>>> response of one thread has unwanted data attached to the response xml.
>> The
>>> corrupt xml response message has two parts first part was the correct
>>> repsonse xml and the second part actually has the Java object converted
>> to a
>>> xml message for e.g. it was not using the mapping file to generate the
>> xml
>>> rather the java object's attribute names were directly used as tag names.
>>> There are no errors / exceptions thrown or logged in the log files.
>>>
>>> We havent seen this kind of issue before when we were using Cator 0.9.5.3
>>>
>>> Please let me know if someone has experienced the same issue or a some
>>> inputs towards what could possibly be causing the issue.
>>>
>>> Thanks and Regards,
>>> Gopinath R.
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>    http://xircles.codehaus.org/manage_email
>>
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to