Apache Gogo Shell is command line interface (CLI) to interact with OSGi module framework or OSGi container.
Apache Gogo shell is very useful in trouble shooting of module issues, getting module information and perform certain action like install, active and de-active OSGi bundles.
Liferay is already using Apache Gogo Shell and when we start Liferay 7.2/DXP portal, it will start automatically and we can use different ways to access Apache Gogo Shell in Liferay Portal Environment.
We can categorize Gogo shell commands in the following types.
Basic Commands
Declarative Services (DS) | Service Component Registry Commands (SCR) Commands
Dependency Management (DM) Commands
Basic Commands
Its regular usage commands to get bundles/module information like list bundles and its status.
Following are list of useful basic commands.
lb lb | grep <BUNDLE_MATCH_PATTERN> bundle <BUNDLE_ID> headers <BUNDLE_ID> install [URI_JAR_FILE_PATH] start [BUNDLE_ID] stop [BUNDLE_ID] uninstall [BUNDLE_ID] inspect requirement service [BUNDLE_ID] inspect capability service [BUNDLE_ID] diag [BUNDLE_ID] upgrade:check system:check history help |
Example Usage
lb lb | grep student bundle 1076 headers 1076 install "file:C://Liferay/Liferay7.2/student-web/target/student-web-1.0.0.jar" start 1076 stop 1076 uninstall 1076 inspect requirement service 1076 inspect capability service 1076 diag 1076 upgrade:check system:check history help |
Identify Bundle ID
Use lb command in the Gogo shell it will display the list of bundles installed in the OSGi modules framework. In the console view first column represent the BUNDLE ID.
Example
Declarative Services (DS) | Service Component Registry Commands (SCR)
Liferay module framework uses the OSGi Declarative Services/Service Component Registry to manage module components and its services references. Gogo shell leverage the Service Component Registry and Declarative Services. We can access services information using Gogo shell commands.
In Liferay 7.2/DXP most of modules are using DS/SCR framework. Only service builder components are using the Apache Felix Dependency Management Framework to register and manage service components.
If you see any @Component or @Reference annotations in the java class, it implies that module components are using the Declarative Services/Service Component Registry Framework.
The following are some of useful Gogo Shell commands to insect components and its references.
services services grep [SEARCH-PATTERN] ds:unsatisfied ds:unsatisfied [BUNDLE_ID] scr:info [COMPONENT_ID] scr:list scr:list | grep [SEARCH-PATTERN] |
Example Usage
services services | grep student ds:unsatisfied ds:unsatisfied 1075 scr:info 4884 scr:list scr:list | grep student |
Identify COMPONENT ID
Use services/ ds:unsatisfied go shell commands and it will display component information and its ID.
Example 1
Example 2
Dependency Management (DM) Commands
Liferay Service Builder is using Apache Felix Dependency Management framework to manage components and its dependencies. Apache Gogo Shell leverage the Dependency Management framework and have set of predefined commands to provide more details of service components.
These commands are very useful when we trouble shoot about unsatisfied services in the registry.
The following are some of useful Gogo Shell commands related to Dependency Management
dm dm | grep [SEARCH-PATTERN] dm cp dm nd dm na dm wtf OR dm dm | grep [SEARCH-PATTERN] dm compact dm nodeps dm notavail dm wtf |
Example Usage
dm dm | grep student dm cp dm nd dm na dm wtf |
Example usage screen
Reference
Author