This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 3.5.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.5.x-fixes by this push:
new a9683e05e8 Fix possible IllegalStateException when bundle is stopped
(#2144)
a9683e05e8 is described below
commit a9683e05e83042d14e7fcbf8f7b9c74fb54800ce
Author: Thomas Watson <[email protected]>
AuthorDate: Sat Nov 16 10:39:09 2024 -0600
Fix possible IllegalStateException when bundle is stopped (#2144)
If a failure occurs while trying to register the service ignore
it. The IllegalStateException will have occurred because the
bundle is stopped. The ManagedService will have been
unregistered or is about to be automatically by the framework.
There is no need to handle or throw the exception here because
the bundles services will have been automatically cleaned
up by the framework when the bundle was stopped.
---
.../java/org/apache/cxf/ext/logging/osgi/Activator.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/osgi/Activator.java
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/osgi/Activator.java
index 4534dd7b10..b46a439ded 100644
---
a/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/osgi/Activator.java
+++
b/rt/features/logging/src/main/java/org/apache/cxf/ext/logging/osgi/Activator.java
@@ -104,14 +104,14 @@ public class Activator implements BundleActivator {
if (intentReg == null) {
Dictionary<String, Object> properties = new Hashtable<>();
properties.put("org.apache.cxf.dosgi.IntentName", "logging");
- bundleContext.registerService(AbstractFeature.class.getName(),
logging, properties);
+ intentReg = safeRegister(AbstractFeature.class.getName(),
logging, properties);
}
if (enabled) {
if (serviceReg == null) {
Dictionary<String, Object> properties = new Hashtable<>();
properties.put("name", "logging");
- serviceReg =
bundleContext.registerService(Feature.class.getName(), logging, properties);
+ serviceReg = safeRegister(Feature.class.getName(),
logging, properties);
}
} else {
if (serviceReg != null) {
@@ -121,6 +121,16 @@ public class Activator implements BundleActivator {
}
}
+ private ServiceRegistration<?> safeRegister(String name, Object
service,
+ Dictionary<String, Object> properties) {
+ try {
+ return bundleContext.registerService(name, service,
properties);
+ } catch (IllegalStateException e) {
+ // ignore, likely the bundle is stopped
+ return null;
+ }
+ }
+
@SuppressWarnings("rawtypes")
private Set<String> getTrimmedSet(Dictionary config, String
propertyKey) {
return new HashSet<>(