[
https://issues.apache.org/jira/browse/KARAF-1640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13427875#comment-13427875
]
Guillaume Nodet commented on KARAF-1640:
----------------------------------------
I initially wanted to simply backport the trunk solution to 2.3, but found a
few problems when actually testing it. It wasn't smooth enough and when
booting a simple Karaf, the message was only displayed near the end.
In order for the progress bar to display as early as possible and be as smooth
as possible, the best location is the Main bootstrap jar. Using a
FrameworkListener / BundleListener works much better as the message can be
refreshed without having to wait a fix amount of time.
For the message, I agree, and in 2.3, the message is obtained from the
etc/config.properties so that it can be changed.
I didn't port the changes to trunk in order to let people see which solution
they prefer. The downside of my solution is a slightly tighter coupling
between main and console (though it was already there because of the system
property).
> Make sure the local console is fully working before the user can type commands
> ------------------------------------------------------------------------------
>
> Key: KARAF-1640
> URL: https://issues.apache.org/jira/browse/KARAF-1640
> Project: Karaf
> Issue Type: Improvement
> Reporter: Christian Schneider
> Assignee: Christian Schneider
> Fix For: 2.3.0, 3.0.0
>
>
> The console bundle starts early as it contains jline, gogo and karaf specific
> console interfaces and tools that all commands need.
> The problem with this is that the user can start typing commands before all
> commands are started. So it can happen that a command is not available at
> that point. This leads to (from the user point of view) errors in completion
> and when executing commands.
> So the idea is to still start the console bundle early but make sure the
> shell is only opened when all commands are started.
> As commands often use blueprint to startup we can not simply check the bundle
> status as it will be active before the commands are activated.
> So one option to improve the situation is to split the shell starting from
> the rest of console and do it in a separate bundle with a high start level.
> So most of the commands would be present. Still because of the blueprint
> startup we could miss some bundles.
> Another option is to start a thread that somehow watches the start of the
> bundles and that opens the shell when all bundles are really active. We could
> use the new status checking from the bundle module that also can watch
> spring-dm and blueprint status. The advantage with this aproach is that we
> could display the live startup status while waiting.
> We could also allow the user to press e.g. enter to open the console at any
> point.
> So for example we could show something like this:
> Karaf startup ...
> Press Enter to open a shell now
> Bundles started (11/78), 3 failures
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira