Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Gemini/Management/Examples"

(Examples)
(Introspect a single bundle)
 
Line 88: Line 88:
 
Built-By = cgfrost
 
Built-By = cgfrost
 
Build-Jdk = 1.6.0_45
 
Build-Jdk = 1.6.0_45
Export-Package = org.osgi.jmx;uses:="javax.management.openmbean";version="1.1",org.osgi.jmx.framework;uses:="org.osgi.jmx,javax.management.openmbean";version="1.7",org.osgi.jmx.framework.wiring;uses:="org.osgi.jmx,javax.management.openmbean,javax.management";version="1.1",org.osgi.jmx.service.permissionadmin;version="1.2",org.osgi.jmx.service.provisioning;uses:="javax.management.openmbean";version="1.2",org.osgi.jmx.service.cm;uses:="javax.management.openmbean";version="1.3",org.osgi.jmx.service.useradmin;uses:="org.osgi.jmx,javax.management.openmbean";version="1.1.1"
+
Export-Package = org.osgi.jmx;uses:="javax.management.openmbean";version="1.1", [...]
 
Bundle-Vendor = Eclipse Gemini Management
 
Bundle-Vendor = Eclipse Gemini Management
 
Bundle-Version = 2.0.0.RELEASE
 
Bundle-Version = 2.0.0.RELEASE

Latest revision as of 09:12, 24 September 2013

Examples

Accessing Gemini Management MBeans from a Groovy Script

Create a server connection:

import groovy.jmx.builder.JmxBuilder
import javax.management.MBeanServerConnection
 
def client = new JmxBuilder().connectorClient(port: 1234)
 
print("connecting to JMX server...")
client.connect()
println("established.")
 
MBeanServerConnection serverConnection = client.getMBeanServerConnection()

Query the list of available bundles

ObjectName objectName = serverConnection.queryNames(new ObjectName("osgi.core:type=bundleState,*"), null).first()
TabularData data = serverConnection.invoke(objectName, "listBundles", null, null)
 
println("List of available bundles:")
data.values().each { println "[" + it.get("Identifier") + "] - " + it.get("State") + " -  " + it.get("SymbolicName")}

Sample output:

List of available bundles:
[0] - ACTIVE - org.eclipse.osgi
[1] - ACTIVE - org.eclipse.osgi.services
[2] - ACTIVE - osgi.enterprise
[3] - ACTIVE - org.eclipse.gemini.management

Query the available info per bundle

ObjectName objectName = serverConnection.queryNames(new ObjectName("osgi.core:type=bundleState,*"), null).first()
TabularData data = serverConnection.invoke(objectName, "listBundles", null, null)
 
println("List of available info:")
println data.values().first().compositeType.keySet().each {println it}

Sample output:

List of available info:
ActivationPolicyUsed
ExportedPackages
Fragment
Fragments
Headers
...

Introspect a single bundle

The following snippet checks if the bundle with ID 3 is a fragment, then prints all bundle headers.

long bundleId = 3
def args = [bundleId] as Object[]
def signature = ["long"] as String[]
def isFragment = serverConnection.invoke(objectName, "isFragment", args, signature)
println "Is bundle $bundleId a fragment? $isFragment"
 
println "Bundle $bundleId has the following bundle headers:"
def headers = serverConnection.invoke(objectName, "getHeaders", args, signature)
headers.values().each { println it.get("Key") + " = " + it.get("Value") }

Sample output:

Is bundle 3 a fragment? false
Bundle 3 has the following bundle headers:
Manifest-Version = 1.0
Archiver-Version = Plexus Archiver
Created-By = Apache Maven
Built-By = cgfrost
Build-Jdk = 1.6.0_45
Export-Package = org.osgi.jmx;uses:="javax.management.openmbean";version="1.1", [...]
Bundle-Vendor = Eclipse Gemini Management
Bundle-Version = 2.0.0.RELEASE
Bundle-Name = Gemini Management
...

Back to the top