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

Daniel Kulp reassigned CXF-4066:
--------------------------------

    Assignee: Daniel Kulp
    
> AbstractTransportFactory registers itself as extension, before being fully 
> initialized
> --------------------------------------------------------------------------------------
>
>                 Key: CXF-4066
>                 URL: https://issues.apache.org/jira/browse/CXF-4066
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.4.5, 2.5.2
>            Reporter: Vitaliy Garnashevich
>            Assignee: Daniel Kulp
>
> AbstractTransportFactory calls register() at the end of its constructor, to 
> register itself as a DestinationFactory and/or as a ConduitInitiator. Classes 
> that extend AbstractTransportFactory (e.g. HTTPTransportFactory), and which 
> call super's constructor, have no way to properly initialize, before being 
> exposed as an extension. Such classes must call super() constructor, before 
> initializing their fields.
> This could lead to concurrency issues, when such object is used as an 
> extension, before being fully initialized. Here is a stack trace of such 
> problem:
> java.lang.NullPointerException
>         at 
> org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:261)
>         at 
> org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:134)
>         at 
> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:93)
>         at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)
>         at 
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:158)
>         at 
> org.apache.cxf.dosgi.dsw.handlers.PojoConfigurationTypeHandler.createServer(PojoConfigurationTypeHandler.java:143)
>         at 
> org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUtils.java:86)
>         at 
> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.java:106)
>         at 
> org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHook.java:80)
>         at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> Here, the HTTPTransportFactory.getDestination() method, implementing 
> DestinationFactory interface, is called before HTTPTransportFactory's 
> "registry" field is assigned by constructor.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to