[
https://issues.apache.org/jira/browse/KARAF-334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12990021#comment-12990021
]
Guillaume Nodet commented on KARAF-334:
---------------------------------------
I do get the problem, but I think we can't go step by step, as we loose the
fact that the wiring is done globally.
Maybe something like:
first.jar=5
second.jar=10
#phase=15
third.jar=20
The {{#phase}} would identify a pause in the installation/starting process so
that at start level 15, only bundles with a level <= 15 would be installed and
started.
Though the real problem is that the phases would badly interfere with the
locking mechanism, so that it needs to be rewritten to not use the start level,
but do its work directly as you described.
On a last note, remember that some url handlers may be started asynchronously
if they are created via blueprint bundles, so I'm not even sure if all the
problems would be really solved.
> At startup, Karaf 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
> Assignee: Guillaume Nodet
> Attachments: patch-KARAF-334, patch-KARAF-334-karaf-2.1.x,
> test-karaf-home.zip
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> 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.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira