Skip to main content

TOTD #34: Using Felix Shell with GlassFish

Posted by arungupta on June 20, 2008 at 5:54 PM PDT

href="http://blogs.sun.com/arungupta/entry/totd_33_building_glassfish_v3">TOTD
#33 explains how to create a href="http://glassfish.org/v3">GlassFish v3
distribution that uses href="http://cwiki.apache.org/FELIX/index.html">Apache Felix
(default) as the  href="http://www.osgi.org/Release4/HomePage">OSGi R4 Service
Platform runtime. This blog explains how to use href="http://felix.apache.org/site/apache-felix-shell-tui.html">Felix
Shell href="http://felix.apache.org/site/apache-felix-shell-tui.html">
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 ...


cellspacing="2">
style="font-family: monospace;"> ${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:


cellpadding="2" cellspacing="2">
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 style="font-weight: bold;">\ style="font-weight: bold;">
 ${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:


cellpadding="2" cellspacing="2">
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:


cellpadding="2" cellspacing="2">
style="font-weight: bold;">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:


cellspacing="2">
style="font-family: monospace; font-weight: bold;">ps style="font-family: monospace;">
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)
style="font-family: monospace;">
Jun 16, 2008
7:13:57 PM  


INFO:
[   1]
[Active     ]
[    1] org.jvnet.tiger-types repackaged as
module (0.3.2)


. . . style="font-family: monospace;">
INFO: [ 137]
[Installed  ] [    1] WebTier
Security Integration (10.0.0.SNAPSHOT)
style="font-family: monospace;">
Jun 16, 2008
7:13:57 PM 
style="font-family: monospace;">
INFO: [ 138]
[Installed  ] [    1] Web module
command line interface (10.0.0.SNAPSHOT)
style="font-family: monospace;">
Jun 16, 2008
7:13:57 PM 
style="font-family: monospace;">
INFO: [ 139]
[Installed  ] [    1] Admin GUI Web
Container Plugin (10.0.0.SNAPSHOT)
style="font-family: monospace;">
Jun 16, 2008
7:13:57 PM 
style="font-family: monospace;">
INFO:
->



More details about the commands and options are available @ href="http://felix.apache.org/site/apache-felix-usage-documentation.html">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 href="http://technorati.com/tag/felix">felix href="http://technorati.com/tag/osgi">osgi

Related Topics >>

Comments

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...

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.

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

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.