You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Florian Pattke <ca...@web.de> on 2018/07/05 16:43:17 UTC

Dependency Manager - Service does not stop

Hello,

I am using a FactoryConfigurationAdapterServer and I have problems to 
unregister the services, when I stop the bundle.

Here is my activator code:

public void init(BundleContext bundleContext, DependencyManager 
dependencyManager) throws Exception {
     dependencyManager.add(
             createFactoryConfigurationAdapterService(
                     JavacordConnector.SERVICE_PID,
                     "configure",
                     true,
                     JavacordConnectorConfiguration.class
             )
             .setImplementation(JavacordConnector.class)
             .setCallbacks(null, "connect", "disconnect", null)
             .add(
                     createServiceDependency()
                             .setService(CommandRegistry.class)
                             .setRequired(false)
.setDefaultImplementation(NOPCommandRegistry.class)
             )
     );
}

Situation:
- bundle is active
- factory adapter is registered
- via config file and ConfigAdmin is a JavacordConnector registered as well

Now when I stop the bundle nothing happens. All services are still 
available, up and running.
How can achieve that all these services will be stopped, once I stop the 
bundle?

Regards
Florian

---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Dependency Manager - Service does not stop

Posted by Florian Pattke <ca...@web.de>.
Hello Pierre,

your example worked fine. I got it working now, it was not related to 
the Dependcy Manager directly. I messed because an Exception was 
swallowed by a CompletableFuture.

Thanks a lot for your help.

Regards
Florian


On 06.07.2018 01:35, Pierre De Rop wrote:
> Hello Florian,
>
> I have tried to reproduce the problem, but it seems to work well; I have
> committed a sample code which reflects the usecase you are describing here
> [1].
> Can you please clone it and give it a try (the sample code is built using
> bndtools 3.4.0).
>
> To build the sample:
>
> git clone https://github.com/pderop/test.dm.factorypid.git
> cd test.dm.factorypid
> chmod a+x ./gradlew
> ./gradlew jar
> ./gradlew export.launch
>
> the last command generates a ubber jar in
> test.dm.factorypid/test/generated/distributions/executable/launch.jar
>
> just run it:
>
> cd test.dm.factorypid/test/generated/distributions/executable
> java -jar launch.jar
>
> you will see these logs:
>
> Configurator: creating conf
> JavacordConnector.configure: property=value
> JavacordConnector.start
> NOPCommandRegistry.run
>
> now, from gogo, stop the bundle:
>
> g! lb
> START LEVEL 1
>    ID|State      |Level|Name
>     0|Active     |    0|System Bundle (5.6.10)|5.6.10
>     1|Active     |    1|test (1.0.0.201807052324)|1.0.0.201807052324
>     2|Active     |    1|Apache Felix Configuration Admin Service
> (1.8.8)|1.8.8
>     3|Active     |    1|Apache Felix Dependency Manager (4.4.1)|4.4.1
>     4|Active     |    1|Apache Felix Gogo Command (1.0.2)|1.0.2
>     5|Active     |    1|Apache Felix Gogo Runtime (1.0.10)|1.0.10
>     6|Active     |    1|Apache Felix Gogo Shell (1.0.0)|1.0.0
>     7|Active     |    1|Apache Felix Metatype Service (1.1.2)|1.1.2
>
> stop 1
>
> and you will see this logs:
>
> JavacordConnector.stop
>
> so, I wonder why you are overriding the init/start/stop/destroy callbacks
> using :
>
>     setCallbacks(null, "connect", "disconnect", null);
>
> This method is only used when you need to override the lifecycle
> init/start/stop/destroy callbacks.
> Maybe your component has "start"/"stop" callbacks, not
> "connect"/"disconnect" callbacks ?
>
> let me know if the sample works for you, maybe there is another thing I
> have missed ?
>
> regards
> Pierre
>
> [1] https://github.com/pderop/test.dm.factorypid
>
> On Thu, Jul 5, 2018 at 6:43 PM, Florian Pattke <ca...@web.de> wrote:
>
>> Hello,
>>
>> I am using a FactoryConfigurationAdapterServer and I have problems to
>> unregister the services, when I stop the bundle.
>>
>> Here is my activator code:
>>
>> public void init(BundleContext bundleContext, DependencyManager
>> dependencyManager) throws Exception {
>>      dependencyManager.add(
>>              createFactoryConfigurationAdapterService(
>>                      JavacordConnector.SERVICE_PID,
>>                      "configure",
>>                      true,
>>                      JavacordConnectorConfiguration.class
>>              )
>>              .setImplementation(JavacordConnector.class)
>>              .setCallbacks(null, "connect", "disconnect", null)
>>              .add(
>>                      createServiceDependency()
>>                              .setService(CommandRegistry.class)
>>                              .setRequired(false)
>> .setDefaultImplementation(NOPCommandRegistry.class)
>>              )
>>      );
>> }
>>
>> Situation:
>> - bundle is active
>> - factory adapter is registered
>> - via config file and ConfigAdmin is a JavacordConnector registered as well
>>
>> Now when I stop the bundle nothing happens. All services are still
>> available, up and running.
>> How can achieve that all these services will be stopped, once I stop the
>> bundle?
>>
>> Regards
>> Florian
>>
>> ---
>> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
>> https://www.avast.com/antivirus
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: Dependency Manager - Service does not stop

Posted by Pierre De Rop <pi...@gmail.com>.
Hello Florian,

I have tried to reproduce the problem, but it seems to work well; I have
committed a sample code which reflects the usecase you are describing here
[1].
Can you please clone it and give it a try (the sample code is built using
bndtools 3.4.0).

To build the sample:

git clone https://github.com/pderop/test.dm.factorypid.git
cd test.dm.factorypid
chmod a+x ./gradlew
./gradlew jar
./gradlew export.launch

the last command generates a ubber jar in
test.dm.factorypid/test/generated/distributions/executable/launch.jar

just run it:

cd test.dm.factorypid/test/generated/distributions/executable
java -jar launch.jar

you will see these logs:

Configurator: creating conf
JavacordConnector.configure: property=value
JavacordConnector.start
NOPCommandRegistry.run

now, from gogo, stop the bundle:

g! lb
START LEVEL 1
  ID|State      |Level|Name
   0|Active     |    0|System Bundle (5.6.10)|5.6.10
   1|Active     |    1|test (1.0.0.201807052324)|1.0.0.201807052324
   2|Active     |    1|Apache Felix Configuration Admin Service
(1.8.8)|1.8.8
   3|Active     |    1|Apache Felix Dependency Manager (4.4.1)|4.4.1
   4|Active     |    1|Apache Felix Gogo Command (1.0.2)|1.0.2
   5|Active     |    1|Apache Felix Gogo Runtime (1.0.10)|1.0.10
   6|Active     |    1|Apache Felix Gogo Shell (1.0.0)|1.0.0
   7|Active     |    1|Apache Felix Metatype Service (1.1.2)|1.1.2

stop 1

and you will see this logs:

JavacordConnector.stop

so, I wonder why you are overriding the init/start/stop/destroy callbacks
using :

   setCallbacks(null, "connect", "disconnect", null);

This method is only used when you need to override the lifecycle
init/start/stop/destroy callbacks.
Maybe your component has "start"/"stop" callbacks, not
"connect"/"disconnect" callbacks ?

let me know if the sample works for you, maybe there is another thing I
have missed ?

regards
Pierre

[1] https://github.com/pderop/test.dm.factorypid

On Thu, Jul 5, 2018 at 6:43 PM, Florian Pattke <ca...@web.de> wrote:

> Hello,
>
> I am using a FactoryConfigurationAdapterServer and I have problems to
> unregister the services, when I stop the bundle.
>
> Here is my activator code:
>
> public void init(BundleContext bundleContext, DependencyManager
> dependencyManager) throws Exception {
>     dependencyManager.add(
>             createFactoryConfigurationAdapterService(
>                     JavacordConnector.SERVICE_PID,
>                     "configure",
>                     true,
>                     JavacordConnectorConfiguration.class
>             )
>             .setImplementation(JavacordConnector.class)
>             .setCallbacks(null, "connect", "disconnect", null)
>             .add(
>                     createServiceDependency()
>                             .setService(CommandRegistry.class)
>                             .setRequired(false)
> .setDefaultImplementation(NOPCommandRegistry.class)
>             )
>     );
> }
>
> Situation:
> - bundle is active
> - factory adapter is registered
> - via config file and ConfigAdmin is a JavacordConnector registered as well
>
> Now when I stop the bundle nothing happens. All services are still
> available, up and running.
> How can achieve that all these services will be stopped, once I stop the
> bundle?
>
> Regards
> Florian
>
> ---
> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
> https://www.avast.com/antivirus
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>