At startup, Karafi does not support urls like mvn:, obr:.
---------------------------------------------------------
Key: KARAF-334
URL: https://issues.apache.org/jira/browse/KARAF-334
Project: Karaf
Issue Type: Improvement
Components: runtime
Affects Versions: 2.1.2
Reporter: Stephane Chomat
Fix For: 2.1.3
At startup, Karafi does not support urls like mvn:, obr:.
Imagine that at level 5 you install the bundle pax-url-mvn with
karaf.auto.start.5 = "file: pax-url-mvn.jar | pax-url-mvn"
and then at level 10 you install mvn:. ... With karaf.auto.start.10 = "mvn
:....| ...."
At the level 6 the url handler 'mvn' is available and you can use it.
This feature does not work with Karaf
I propose this path :
diff -r f0bb11c3d77c src/main/java/org/apache/karaf/main/Main.java
--- a/src/main/java/org/apache/karaf/main/Main.java Mon Dec 20 11:05:11
2010 +0100
+++ b/src/main/java/org/apache/karaf/main/Main.java Mon Dec 20 11:46:29
2010 +0100
@@ -485,28 +485,20 @@
// the start level to which the bundles are assigned is specified by
// appending a ".n" to the auto-install property name, where "n" is
// the desired start level for the list of bundles.
- autoInstall(PROPERTY_AUTO_INSTALL, context, sl, convertToMavenUrls);
+ autoInstall(PROPERTY_AUTO_INSTALL, context, sl, convertToMavenUrls,
false);
// The auto-start property specifies a space-delimited list of
// bundle URLs to be automatically installed and started into each
// new profile; the start level to which the bundles are assigned
// is specified by appending a ".n" to the auto-start property name,
// where "n" is the desired start level for the list of bundles.
- // The following code starts bundles in two passes, first it installs
- // them, then it starts them.
- List<Bundle> bundlesToStart = autoInstall(PROPERTY_AUTO_START,
context, sl, convertToMavenUrls);
- // Now loop through and start the installed bundles.
- for (Bundle b : bundlesToStart) {
- try {
- b.start();
- }
- catch (Exception ex) {
- System.err.println("Auto-properties start: " + ex);
- }
- }
+ // The following code starts bundles in one passes, it installs
+ // and it starts them by level.
+ autoInstall(PROPERTY_AUTO_START, context, sl, convertToMavenUrls,
true);
+
}
- private List<Bundle> autoInstall(String propertyPrefix, BundleContext
context, StartLevel sl, boolean convertToMavenUrls) {
+ private List<Bundle> autoInstall(String propertyPrefix, BundleContext
context, StartLevel sl, boolean convertToMavenUrls, boolean start) {
Map<Integer, String> autoStart = new TreeMap<Integer, String>();
List<Bundle> bundles = new ArrayList<Bundle>();
for (Iterator i = configProps.keySet().iterator(); i.hasNext();) {
@@ -531,6 +523,7 @@
}
for (Integer startLevel : autoStart.keySet()) {
StringTokenizer st = new
StringTokenizer(autoStart.get(startLevel), "\" ", true);
+ List<Bundle> bundlesLevel = new ArrayList<Bundle>();
if (st.countTokens() > 0) {
String location = null;
do {
@@ -541,6 +534,7 @@
Bundle b = context.installBundle(parts[0], new
URL(parts[1]).openStream());
sl.setBundleStartLevel(b, startLevel);
bundles.add(b);
+ bundlesLevel.add(b);
}
catch (Exception ex) {
System.err.println("Auto-properties install:" +
ex);
@@ -549,6 +543,15 @@
}
while (location != null);
}
+ // Now loop through and start the installed bundles.
+ for (Bundle b : bundlesLevel) {
+ try {
+ b.start();
+ }
+ catch (Exception ex) {
+ System.err.println("Auto-properties start: " + ex);
+ }
+ }
}
return bundles;
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.