Expand my Community achievements bar.

Submissions are now open for the 2026 Adobe Experience Maker Awards.
SOLVED

Few services have "satisfied" state on OSGI console

Avatar

Level 1

I have a few services that are not in the "active" state but "satisfied". Does this mean they are not working and also how to debug the issue causing it to be in satisfied?

Error logs for these services only capture this 'ServiceEvent UNREGISTERING'

 
1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @RobbieRami ,

A service in the "Satisfied" state means:

The component is valid and all required references are resolved.

But it is not activated yet usually because:

  - The service has no consumer (lazy activation).

  - @Component(immediate = true) is missing (deferred activation).

  - Optional or dynamic references may cause unexpected behavior.


Try below steps:

Step 1: Use Felix Console to Diagnose

Visit: http://localhost:4502/system/console/components

Search for your component by class name or package.

Click on the component entry to inspect it.

Look for:

"References" section: check if any are marked as unsatisfied or optional.

"Configuration" and "Properties": see if it’s missing config or awaiting activation.

Step 2: Check Your Code Annotations

package com.example.core.services.impl;

import com.example.core.services.MyCustomService;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Reference;

@Component(
    service = MyCustomService.class,
    immediate = true // =>This ensures service is activated immediately
)
public class MyCustomServiceImpl implements MyCustomService {

    @Reference
    private SomeDependencyService dependency;

    @Activate
    protected void activate() {
        System.out.println("MyCustomServiceImpl activated.");
    }
}

Make sure:

You use immediate = true for services that should activate as soon as they are satisfied.

You don't mark services as immediate = false unless using on-demand (consumer-initiated) behavior.

Step 3: Check If the Referenced Service Is Active

Go to: http://localhost:4502/system/console/components

Check for SomeDependencyService.

Ensure:

It's in Active state.

It’s not Disabled, Unsatisfied, or Missing.


Step 4: Debug Logs (to Find Hidden Issues)

Go to: http://localhost:4502/system/console/slinglog

Add these loggers:
org.apache.felix.scrDEBUG
org.apache.felix.scr.implDEBUG
org.osgi.frameworkDEBUG
org.apache.sling

 

Step 5: Force Activation

You can activate manually via console if needed:

Go to http://localhost:4502/system/console/components

Click Activate button under your service

Or update it to:

@Component(
    service = MyCustomService.class,
    immediate = true
)

Then re-deploy your bundle.

 

Regards,
Amit

View solution in original post

3 Replies

Avatar

Level 10

A "satisfied" state in the OSGi console means that the component is enabled and all its required dependencies are available, but it has not been activated yet. In AEM, this usually means the service is not currently functioning, ie it is not running or registered as an active service, and its code (such as @activate methods) has not been executed.

Please verify that your service is configured for activation as follows:

@component(immediate = true, service = MyCustomService.class)

 

Avatar

Community Advisor

Hi @RobbieRami,

It usually means:

  • The service is correctly configured and ready to activate, but is waiting on one or more of its required dependencies to become available.

  • It hasn't failed, but it can’t become "Active" because something it needs is missing — such as a reference to another service.

1. Use the Web Console:

Go to:

http://localhost:4502/system/console/components

Search for your service class name.

  • Satisfied = waiting on something.

  • Click on it to open its detail view.

  • Check the "References" section to see:

    • Which services it depends on.

    • Which ones are "unsatisfied" or "missing".

This is your best clue. If a reference shows as “unsatisfied,” the service it points to is either not present or not active.

2. Check the Service Class

Look for @Reference or @ReferenceCardinality annotations or XML reference elements.

Example:

@Reference
private MyDependencyService dependency;

If MyDependencyService is not active or missing, your service will stay in "Satisfied".

3. Check Bundle State

Make sure:

  • Your own bundle is Active

  • The bundle providing the referenced service is also Active

Go to:

http://localhost:4502/system/console/bundles

Search for the relevant bundle. Check if:

  • It’s in "Resolved" (bad) or "Installed" (bad) - needs to be "Active".

4. Look at Sling Logs

Although you're only seeing ServiceEvent UNREGISTERING, try enabling DEBUG for the following loggers:

  • org.apache.sling

  • org.apache.felix.scr

  • org.apache.felix.scr.impl

  • org.osgi.framework

You can do this here:

http://localhost:4502/system/console/slinglog

This often reveals details about why a service is not activating or which dependency is missing.


Santosh Sai

AEM BlogsLinkedIn


Avatar

Correct answer by
Community Advisor

Hi @RobbieRami ,

A service in the "Satisfied" state means:

The component is valid and all required references are resolved.

But it is not activated yet usually because:

  - The service has no consumer (lazy activation).

  - @Component(immediate = true) is missing (deferred activation).

  - Optional or dynamic references may cause unexpected behavior.


Try below steps:

Step 1: Use Felix Console to Diagnose

Visit: http://localhost:4502/system/console/components

Search for your component by class name or package.

Click on the component entry to inspect it.

Look for:

"References" section: check if any are marked as unsatisfied or optional.

"Configuration" and "Properties": see if it’s missing config or awaiting activation.

Step 2: Check Your Code Annotations

package com.example.core.services.impl;

import com.example.core.services.MyCustomService;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Reference;

@Component(
    service = MyCustomService.class,
    immediate = true // =>This ensures service is activated immediately
)
public class MyCustomServiceImpl implements MyCustomService {

    @Reference
    private SomeDependencyService dependency;

    @Activate
    protected void activate() {
        System.out.println("MyCustomServiceImpl activated.");
    }
}

Make sure:

You use immediate = true for services that should activate as soon as they are satisfied.

You don't mark services as immediate = false unless using on-demand (consumer-initiated) behavior.

Step 3: Check If the Referenced Service Is Active

Go to: http://localhost:4502/system/console/components

Check for SomeDependencyService.

Ensure:

It's in Active state.

It’s not Disabled, Unsatisfied, or Missing.


Step 4: Debug Logs (to Find Hidden Issues)

Go to: http://localhost:4502/system/console/slinglog

Add these loggers:
org.apache.felix.scrDEBUG
org.apache.felix.scr.implDEBUG
org.osgi.frameworkDEBUG
org.apache.sling

 

Step 5: Force Activation

You can activate manually via console if needed:

Go to http://localhost:4502/system/console/components

Click Activate button under your service

Or update it to:

@Component(
    service = MyCustomService.class,
    immediate = true
)

Then re-deploy your bundle.

 

Regards,
Amit