Thursday, March 29, 2012

A Modular and Extensible OSGi Shell


A presentation by Lazar Kirchev of SAP on the new, upcoming Equinox shell (OSGi console).
  • Improvements in usability, added telnet and SSH support.
  • Currently cannot correct mistypes - no backspace, no history, no tab completion.
  • New version based on Apache Gogo
  • Can start with port, e.g. -console 2222, for remote access.
  • Command line editing and tab completion (telnet or remote only), history, telnet, SSH
  • JAAS or public key authentication
  • 4 bundles to autostart
  • Piping, grep, help [command]
  • config.ini entries: osgi.console and osgi.console.ssh , followed by port number
  • Virgo, the enterprise web application server using OSGi deploys, used to demonstrate remote access:
    • Two regions: user and kernel
    • Two shells too
    • One region or shell cannot access the other - security
    • Configuration through ConfigAdmin (2 instances also)
    • By default, its config.ini has telnet and ssh disabled - enable to use
    • Ports 2401 and 2501 - kernel and user
  • Programming for shell, i.e. writing OSGi console commands:
    • console commands are OSGi services with scope and function properties
    • osgi.command.scope : "eclipsecon"
    • osgi.command.function : new String[] { "printfile" }
    • Converters and formatters, e.g. pass bundle id argument, convert to bundle object to be received as actual argument.
    • Install new bundle and start
    • help | grep printfile <- tests that new service is available
  • Available with Juno.
  • "Mostly" backward compatible with 3.7, 3.8.
I spend a lot of time in the OSGi console debugging installations and OSGi services, both for our team and when requested by others. This will greatly improve the effectiveness of such debugging. For example, a developer can start with -console [port] and I can debug his runtime using his IP and putty. We can debug prod the same way if we want! Huge!

No comments:

Post a Comment