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

