Description
Within the write() method in the AbstractJAXBCollectionProvider class, a for each loop is used to marshall each object in the elementArray. Within this for loop, right before the next iteration is made, the marshaller that is being used is released back to the marshaller pool. The remaining elements will then be iterated upon using the same marshaller because the marshaller pointer that is referred to is not null. This creates the possibility of a single marshaller being used by multiple threads.
In version 1.1.2, see line 167 for the referred to null check and line 187 for the misplaced releaseJAXBMarshaller() method call.