The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


TOTD #34: Using Felix Shell with GlassFish

Posted by arungupta on June 20, 2008 at 5:54 PM PDT
TOTD #33 explains how to create a GlassFish v3 distribution that uses Apache Felix (default) as the  OSGi R4 Service Platform runtime. This blog explains how to use Felix Shell TUI with that bundle to issue commands to the OSGi framework and obtain information from it.

To enable Felix Shell with GlassFish v3, add the lines ...

 ${com.sun.aas.installRootURI}/felix/bundle/org.apache.felix.shell.jar \
 ${com.sun.aas.installRootURI}/felix/bundle/org.apache.felix.shell.tui.jar

to "felix.auto.start.1" property in "felix/conf/config.properties" file of the expanded bundle. The updated property looks like:

felix.auto.start.1= \
 ${com.sun.aas.installRootURI}/modules/tiger-types-osgi-0.3.2.jar \
 ${com.sun.aas.installRootURI}/modules/auto-depends-0.3.2.jar \
 ${com.sun.aas.installRootURI}/modules/config-0.3.2.jar \
 ${com.sun.aas.installRootURI}/modules/hk2-core-0.3.2.jar \
 ${com.sun.aas.installRootURI}/modules/osgi-adapter-0.3.2.jar \
 ${com.sun.aas.installRootURI}/felix/bundle/org.apache.felix.shell.jar \
 ${com.sun.aas.installRootURI}/felix/bundle/org.apache.felix.shell.tui.jar

with the changes highlighted in bold.

The shell works only if GlassFish is started using "java -jar modules/glassfish-10.0-SNAPSHOT.jar" command.

The shell is available when the following prompt is shown:

INFO: Glassfish v3 started in 1624 ms
Jun 16, 2008 7:10:37 PM  
INFO: ->
Jun 16, 2008 7:10:37 PM com.sun.enterprise.glassfish.bootstrap.ASMainFelix launchOSGiFW
INFO: Framework successfully started

You can type "help" in the shell to see the complete list of commands that are available:

help
Jun 16, 2008 7:11:12 PM  
INFO: bundlelevel <level> <id> ... | <id> - set or get bundle start level.
Jun 16, 2008 7:11:12 PM  
INFO: cd [<base-URL>]                     - change or display base URL.
Jun 16, 2008 7:11:12 PM  
INFO: headers [<id> ...]                  - display bundle header properties.
Jun 16, 2008 7:11:12 PM  
INFO: help                                - display impl commands.
Jun 16, 2008 7:11:12 PM  
INFO: install <URL> [<URL> ...]           - install bundle(s).
Jun 16, 2008 7:11:12 PM  
INFO: packages [<id> ...]                 - list exported packages.
Jun 16, 2008 7:11:12 PM  
INFO: ps [-l | -s | -u]                   - list installed bundles.
Jun 16, 2008 7:11:12 PM  
INFO: refresh [<id> ...]                  - refresh packages.
Jun 16, 2008 7:11:12 PM  
INFO: resolve [<id> ...]                  - attempt to resolve the specified bundles.
Jun 16, 2008 7:11:12 PM  
INFO: services [-u] [-a] [<id> ...]       - list registered or used services.
Jun 16, 2008 7:11:12 PM  
INFO: shutdown                            - shutdown framework.
Jun 16, 2008 7:11:12 PM  
INFO: start <id> [<id> <URL> ...]         - start bundle(s).
Jun 16, 2008 7:11:12 PM  
INFO: startlevel [<level>]                - get or set framework start level.
Jun 16, 2008 7:11:12 PM  
INFO: stop <id> [<id> ...]                - stop bundle(s).
Jun 16, 2008 7:11:12 PM  
INFO: uninstall <id> [<id> ...]           - uninstall bundle(s).
Jun 16, 2008 7:11:12 PM  
INFO: update <id> [<URL>]                 - update bundle.
Jun 16, 2008 7:11:12 PM  
INFO: version                             - display version of framework.
Jun 16, 2008 7:11:12 PM  
INFO: -> 

This shows the list of available commands along with a brief description. For example "ps" shows the list of installed bundles as shown below:

ps
Jun 16, 2008 7:13:57 PM  
INFO: START LEVEL 1
Jun 16, 2008 7:13:57 PM  
INFO:    ID   State         Level  Name
Jun 16, 2008 7:13:57 PM  
INFO: [   0] [Active     ] [    0] System Bundle (1.0.4)
Jun 16, 2008 7:13:57 PM  
INFO: [   1] [Active     ] [    1] org.jvnet.tiger-types repackaged as module (0.3.2)
. . .
INFO: [ 137] [Installed  ] [    1] WebTier Security Integration (10.0.0.SNAPSHOT)
Jun 16, 2008 7:13:57 PM 
INFO: [ 138] [Installed  ] [    1] Web module command line interface (10.0.0.SNAPSHOT)
Jun 16, 2008 7:13:57 PM 
INFO: [ 139] [Installed  ] [    1] Admin GUI Web Container Plugin (10.0.0.SNAPSHOT)
Jun 16, 2008 7:13:57 PM 
INFO: ->

More details about the commands and options are available @ Felix Usage Docs.

The commands are described in "felix/conf/config.properties" (around line 38).

Please leave suggestions on other TOTD (Tip Of The Day) that you'd like to see. A complete archive is available here.

Technorati: totd glassfish v3 felix osgi
Related Topics >> Glassfish      
Comments
Comments are listed in date ascending order (oldest first)

Hi Arun, This worked very nicely for me. Now as you know we developers get momentary highs (from our work) and then go back to grubbing on next issues. The next TOTD that would be helpful for me is how and where to build the updatetool and the pkg etc. that came with gfv3 tp2. To use the snap shot I need to install the ejb and metro componentry etc.

rimartin7, do you want to build the tool or use it ? You can invoke glassfishv3-tp2/bin/updatetool script to invoke the tool.

After building gf v3 (out of svn checkout as your #33 describes) I get a SNAPSHOT. There is no update tool in the SNAPSHOT/bin folder and there are no folders parallel to bin for updatetool and pkg as there are in glassfishv3-tp2. glassfishv3-tp2 on Windows would not launch the felix console, gui or otherwise. So I svn'ed and built the SNAPSHOT. It runs nicely from "java -jar modules/glassfish-10.0-SNAPSHOT.jar" command and the felix gui works. But no updatetool found.

At this point, updatetool integration is done in packager module which is built as separate build target by release engineering. Main reason for this is that integration involves creation of IPS packages which in its turn requires running IPS package repository server, so it is quite heavy weight and not something most GF developers will do. We are currently working on the new implementation of packager which will enable developers to create zip based distribution with the same file layout as the "official" distribution and it will also include basic aspects of updatetool integration. While this is tricky to implement, you should end up being able to install ejb, metro and other additional UC components in the distribution that you built yourself although you will probably not be able to upgrade any of base GlassFish packages. HTH...