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'
Solved! Go to Solution.
Views
Replies
Total Likes
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
Views
Replies
Total Likes
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)
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.
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
Views
Replies
Total Likes
Views
Likes
Replies