karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guillaume Nodet (JIRA)" <j...@apache.org>
Subject [jira] Commented: (KARAF-334) At startup, Karaf does not support urls like mvn:, obr:.
Date Thu, 03 Feb 2011 09:08:28 GMT

    [ 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

        

Mime
View raw message