[ 
https://issues.apache.org/jira/browse/CXF-2229?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp resolved CXF-2229.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.2
                   2.1.6
         Assignee: Daniel Kulp

> thread safe issue caused by XMLOutputFactoryImpl
> ------------------------------------------------
>
>                 Key: CXF-2229
>                 URL: https://issues.apache.org/jira/browse/CXF-2229
>             Project: CXF
>          Issue Type: Bug
>          Components: WS-* Components
>    Affects Versions: 2.1.3
>            Reporter: leon wu
>            Assignee: Daniel Kulp
>             Fix For: 2.1.6, 2.2.2
>
>
> Currently CXF calls StaxUtils.getXMLOutputFactory() to get the cached 
> instance of XMLOutputFactoryImpl. But 
> XMLOutputFactoryImpl.createXMLStreamWriter is not thread-safe. See below.
> javax.xml.stream.XMLStreamWriter 
> createXMLStreamWriter(javax.xml.transform.stream.StreamResult sr, String 
> encoding) throws javax.xml.stream.XMLStreamException {
>          try{
>            if(fReuseInstance && fStreamWriter != null && 
> fStreamWriter.canReuse() && !fPropertyChanged){
>                fStreamWriter.reset();
>                fStreamWriter.setOutput(sr, encoding);
>                if(DEBUG)System.out.println("reusing instance, object id : " + 
> fStreamWriter);
>                return fStreamWriter;
>            }
>            return fStreamWriter = new XMLStreamWriterImpl(sr, encoding, new 
> PropertyManager(fPropertyManager));   -- this is not thread safe, since the 
> new instance is assigned to the field fStreamWriter first, then it is 
> possible that different threads get the same XMLStreamWriterImpl when they 
> call this method at the same time.
>          }catch(java.io.IOException io){
>            throw new XMLStreamException(io);
>        }
>    }
> The solution might be, StaxUtils.getXMLOutputFactory() method creates a new 
> instance of XMLOutputFactory every time, don't cache it.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to