There is problem when another bundle wants to use etc/org.apache.karaf.jaas.cfg config file.
usecase
Add LDAPLoginModule, also keep properties login module with system configuration.
steps to reproduce
1. start fuse
2. deploy attached blueprint.xml (copy into $FUSE_HOME/deploy/)
... <!-- reference to etc/org.apache.karaf.jaas.cfg (used by karaf jaas modules) --> <cm:property-placeholder persistent-id="org.apache.karaf.jaas" update-strategy="reload" placeholder-prefix="${" placeholder-suffix="}"> ... </cm:property-placeholder> ...
3. change something in etc/org/apache.karaf.jaas.cfg (for instance set encryption.enabled = true)
4. check log:tail for following error
2015-09-08 14:14:42,931 | ERROR | ache.karaf.jaas) | configadmin | 7 - org.apache.felix.configadmin - 1.8.2 |
Cannot use configuration org.apache.karaf.jaas for [org.osgi.service.cm.ManagedService, id=618, bundle=264/blueprint:file:/home/jludvice/apps/fuse/jboss-fuse-6.2.1.redhat-027/deploy/visibility_reproducer.xml]:
No visibility to configuration bound to mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/2.4.0.redhat-621026
It affects fuse 6.2.0.redhat-020 and 6.2.1.redhat-027 (didn't test other)
Maybe it's related to https://issues.apache.org/jira/browse/KARAF-3103.
diff of KARAF-3101 fix:
Unable to find source-code formatter for language: diff. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
diff --git a/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java index 4055cd9..4c63375 100644 --- a/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java +++ b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java @@ -85,7 +85,7 @@ public class ConfigRepositoryImpl implements ConfigRepository { @Override public String createFactoryConfiguration(String factoryPid, Dictionary<String, ?> properties) { try { - Configuration config = configAdmin.createFactoryConfiguration(factoryPid); + Configuration config = configAdmin.createFactoryConfiguration( factoryPid, null); config.update(properties); return config.getPid(); } catch (IOException e) {
possible workaround
Using different config file for jaas, but then it's "yet another config file".
<cm:property-placeholder persistent-id="org.apache.karaf.jaas2" update-strategy="reload" placeholder-prefix="${" placeholder-suffix="}">