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

Felix Meschberger updated FELIX-314:
------------------------------------

    Attachment: FELIX-314_2.diff

Sounds reasonable. So I suggest the following solution: We make the constructor 
private and provide a static factory method to acquire an EventDispatcher 
instance. This factory method would care to have the thread running and the 
flags cleared as well as having the use counter managed. The shutdown method in 
turn is "fixed" to obey the reference counter and to drop the thread reference 
after stopping it.

I think it is more symetric to the static shutdown method if we have a static 
"startup" method instead of a constructor to acquire the EventDispatcher and 
setup the statics and a static shutdown to "disable" the dispatcher.

> EventDispatcher class not reusable in same class loader for multiple Felix 
> instances
> ------------------------------------------------------------------------------------
>
>                 Key: FELIX-314
>                 URL: https://issues.apache.org/jira/browse/FELIX-314
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 0.8.0
>            Reporter: Felix Meschberger
>             Fix For: 1.0.0
>
>         Attachments: FELIX-314.diff, FELIX-314_2.diff
>
>
> Consider this use case:
>    Felix felix = new Felix();
>    felix.start(props, null);
>    felix.shutdown();
>    felix = new Felix();
>    felix.start(props, null);
>    felix.shutdown();
> The first Felix instance will stop the EventDispatcher by calling the static 
> EventDispatcher.shutdown() method thus stopping the event dispatcher thread 
> and setting the static variables stopping and stopped to true. The reference 
> to the event dispatcher thread in the static variable m_thread is not cleared 
> on shutdown.
> The second Felix instance will create an EventDispatcher instance but the 
> static fields are not reset. That is the event dispatcher is assumed to be 
> stopped and the event dispatcher thread will not be newly created and started.
> I will suggest a patch for this issue.

-- 
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