Pax Script
Unknown macro: {ops4j-style}
Pax Script is an extender that automatically registers JSR223 engines (javax.script.ScriptEngineFactory) as OSGi services when a JSR223 JAR is loaded.
SCM: http://scm.ops4j.org/browse/OPS4J/laboratory/users/ceefour/pax-script
Also "jointly developed" with JSR223: https://scripting.dev.java.net/issues/show_bug.cgi?id=34
An effort is undergoing to make all JSR223 engines OSGi-compliant. Right now Groovy engine is directly usable by Pax-Script.
Requirements
- OSGi R4.1 runtime
- Java 5 or Java 4 with javax.scripting package
- A scripting implementation (e.g. groovy)
- A JSR223 scripting engine for that scripting implementation (from https://scripting.dev.java.net/ )
- Pax-Script dependencies (Extender, OPS4J Base-Lang)
Example Usage
Run OSGi runtime and install the bundles mentioned in Requirements
$ pax-provision -f equinox -u runner-groovy.lst
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building org.ops4j.pax.script
[INFO] task-segment: [org.ops4j:maven-pax-plugin:1.3:provision] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [pax:provision]
[INFO] Installing /home/ceefour/project/ops4j/pax-script/runner/deploy-pom.xml to /home/ceefour/.m2/repository/org/ops4j/pax/script/build/deployment/1.0.1-SNAPSHOT/deployment-1.0.1-SNAPSHOT.pom
______ ________ __ __
/ __ / / __ / / / / /
/ ___/ / __ / _\ \ _/
/ / / / / / / _\ \
/__/ /__/ /__/ /_/ /_/
Pax Runner from OPS4J - http://www.ops4j.org
--------------------------------------------
-> Using config [classpath:META-INF/runner.properties]
-> Provision from [/home/ceefour/project/ops4j/pax-script/runner/deploy-pom.xml]
-> Provision from [scan-pom:file:/home/ceefour/project/ops4j/pax-script/runner/deploy-pom.xml]
-> Using property [bundle.symbolicName=org.ops4j.pax.script]
-> Using property [bundle.namespace=org.ops4j.pax.script]
-> Installing bundle [{location=mvn:org.ops4j.pax.script/pax-script/1.0.1-SNAPSHOT,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.swissbox/pax-swissbox-lifecycle/0.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.base/ops4j-base-lang/0.5.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.swissbox/pax-swissbox-extender/0.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.logging/pax-logging-api/1.1.1,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.logging/pax-logging-service/1.1.1,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Provision from [runner-groovy.lst]
-> Provision from [scan-file:file:/home/ceefour/project/ops4j/pax-script/runner-groovy.lst]
-> Installing bundle [{location=mvn:com.sun.script/groovy-engine/1.1,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.swissbox/pax-swissbox-extender/0.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.base/ops4j-base-lang/0.5.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.ops4j.pax.swissbox/pax-swissbox-lifecycle/0.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.codehaus.groovy/groovy/1.5.7-SNAPSHOT,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.antlr/com.springsource.antlr/2.7.7,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.util/2.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.attrs/2.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.tree.analysis/2.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.tree/2.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Installing bundle [{location=mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/2.2.0,startlevel=null,shouldStart=true,shouldUpdate=false}]
-> Downloading bundles...
-> mvn:org.ops4j.pax.script/pax-script/1.0.1-SNAPSHOT : 7910 bytes @ [ 659kBps ]]
-> mvn:org.ops4j.pax.swissbox/pax-swissbox-lifecycle/0.2.0 : 6493 bytes @ [ 927kBps ]]
-> mvn:org.ops4j.base/ops4j-base-lang/0.5.0 : 5965 bytes @ [ 2982kBps ]
-> mvn:org.ops4j.pax.swissbox/pax-swissbox-extender/0.2.0 : 14782 bytes @ [ 1343kBps ]
-> mvn:org.ops4j.pax.logging/pax-logging-api/1.1.1 : 72696 bytes @ [ 2506kBps ]
-> mvn:org.ops4j.pax.logging/pax-logging-service/1.1.1 : 183340 bytes @ [ 2957kBps ]
-> mvn:com.sun.script/groovy-engine/1.1 : 12050 bytes @ [ 12050kBps ]
-> mvn:org.ops4j.pax.swissbox/pax-swissbox-extender/0.2.0 : 14782 bytes @ [ 14782kBps ]
-> mvn:org.ops4j.base/ops4j-base-lang/0.5.0 : 5965 bytes @ [ 5965kBps ]
-> mvn:org.ops4j.pax.swissbox/pax-swissbox-lifecycle/0.2.0 : 6493 bytes @ [ 6493kBps ]
-> mvn:org.codehaus.groovy/groovy/1.5.7-SNAPSHOT : 2339050 bytes @ [ 3360kBps ]
-> mvn:org.antlr/com.springsource.antlr/2.7.7 : 445573 bytes @ [ 4500kBps ]]
-> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.util/2.2.0 : 33393 bytes @ [ 1236kBps ]
-> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.attrs/2.2.0 : 7351 bytes @ [ 7351kBps ]
-> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.tree.analysis/2.2.0 : 18211 bytes @ [ 958kBps ]
-> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm.tree/2.2.0 : 16805 bytes @ [ 16805kBps ]
-> mvn:org.objectweb.asm/com.springsource.org.objectweb.asm/2.2.0 : 35272 bytes @ [ 11757kBps ]
-> Execution environment [J2SE-1.6]
-> Starting platform [Equinox 3.3.2]. Runner has successfully finished his job!
osgi> [org.ops4j.pax.script.internal.ExtenderActivator] : STARTING org.ops4j.pax.script Extender
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Creating bundle watcher with scanner [BundleURLScanner{path=META-INF/services/,filePattern=javax.script.ScriptEngineFactory,recurse=false}]...
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.eclipse.osgi]
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.eclipse.osgi.util]
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.eclipse.osgi.services]
[org.ops4j.pax.script.internal.ExtenderActivator] : Pax-Script JSR223 watcher started.
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.ops4j.pax.script]
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.ops4j.pax.swissbox.lifecycle]
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.ops4j.base.lang]
[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.ops4j.pax.swissbox.extender]
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling SLF4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Jakarta Commons Logging API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Log4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Avalon Logger API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling JULI Logger API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.ops4j.pax.logging.pax-logging-api]
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [org.ops4j.pax.logging.pax-logging-service]
[Framework Event Dispatcher] INFO org.ops4j.pax.logging.pax-logging-service - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.sun.script.groovy]
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Found resources [bundleentry://9/META-INF/services/javax.script.ScriptEngineFactory]
[Start Level Event Dispatcher] INFO org.ops4j.pax.script.internal.ExtenderActivator - Bundle com.sun.script.groovy added with 1 factories.
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [groovy]
[Framework Event Dispatcher] INFO groovy - BundleEvent STARTED
[Start Level Event Dispatcher] INFO com.sun.script.groovy - ServiceEvent REGISTERED
[Start Level Event Dispatcher] INFO org.ops4j.pax.script.internal.ExtenderActivator - Registered JSR223 class=com.sun.script.groovy.GroovyScriptEngineFactory engine.name=groovy engine.version=1.5.7-SNAPSHOT language.name=groovy language.version=1.5.6
[Framework Event Dispatcher] INFO com.sun.script.groovy - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.antlr]
[Framework Event Dispatcher] INFO com.springsource.antlr - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.org.objectweb.asm.util]
[Framework Event Dispatcher] INFO com.springsource.org.objectweb.asm.util - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.org.objectweb.asm.tree.attrs]
[Framework Event Dispatcher] INFO com.springsource.org.objectweb.asm.tree.attrs - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.org.objectweb.asm.tree.analysis]
[Framework Event Dispatcher] INFO com.springsource.org.objectweb.asm.tree.analysis - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.org.objectweb.asm.tree]
[Framework Event Dispatcher] INFO com.springsource.org.objectweb.asm.tree - BundleEvent STARTED
[Start Level Event Dispatcher] DEBUG org.ops4j.pax.swissbox.extender.BundleWatcher - Scanning bundle [com.springsource.org.objectweb.asm]
[Framework Event Dispatcher] INFO com.springsource.org.objectweb.asm - BundleEvent STARTED
[Framework Event Dispatcher] INFO org.eclipse.osgi - FrameworkEvent STARTLEVEL CHANGED
Inspect the bundles, particularly the JSR223 engine bundle.
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.3.2.R33x_v20080105
1 ACTIVE org.eclipse.osgi.util_3.1.200.v20070605
2 ACTIVE org.eclipse.osgi.services_3.1.200.v20070605
3 ACTIVE org.ops4j.pax.script_1.0.1.SNAPSHOT
4 ACTIVE org.ops4j.pax.swissbox.lifecycle_0.2.0
5 ACTIVE org.ops4j.base.lang_0.5.0
6 ACTIVE org.ops4j.pax.swissbox.extender_0.2.0
7 ACTIVE org.ops4j.pax.logging.pax-logging-api_1.1.1
8 ACTIVE org.ops4j.pax.logging.pax-logging-service_1.1.1
9 ACTIVE com.sun.script.groovy_0.0.0
10 ACTIVE groovy_1.5.7.SNAPSHOT
11 ACTIVE com.springsource.antlr_2.7.7
12 ACTIVE com.springsource.org.objectweb.asm.util_2.2.0
13 ACTIVE com.springsource.org.objectweb.asm.tree.attrs_2.2.0
14 ACTIVE com.springsource.org.objectweb.asm.tree.analysis_2.2.0
15 ACTIVE com.springsource.org.objectweb.asm.tree_2.2.0
16 ACTIVE com.springsource.org.objectweb.asm_2.2.0
osgi> b 9
initial@reference:file:com.sun.script.groovy_0.jar/ [9]
Id=9, Status=ACTIVE Data Root=/home/ceefour/project/ops4j/pax-script/runner/equinox/org.eclipse.osgi/bundles/9/data
Registered Services
{javax.script.ScriptEngineFactory}={language.version=1.5.6, engine.name=groovy, language,name=groovy, engine.version=1.5.7-SNAPSHOT, language=groovy, service.id=22}
No services in use.
Exported packages
com.sun.script.groovy; version="0.0.0"[exported]
Imported packages
com.sun.script.groovy; version="0.0.0"<initial@reference:file:com.sun.script.groovy_0.jar/ [9]>
groovy.lang; version="1.5.7.SNAPSHOT"<initial@reference:file:groovy_1.5.7.SNAPSHOT.jar/ [10]>
javax.script; version="0.0.0"<System Bundle [0]>
org.codehaus.groovy.control; version="1.5.7.SNAPSHOT"<initial@reference:file:groovy_1.5.7.SNAPSHOT.jar/ [10]>
org.codehaus.groovy.runtime; version="1.5.7.SNAPSHOT"<initial@reference:file:groovy_1.5.7.SNAPSHOT.jar/ [10]>
org.codehaus.groovy.syntax; version="1.5.7.SNAPSHOT"<initial@reference:file:groovy_1.5.7.SNAPSHOT.jar/ [10]>
No fragment bundles
Named class space
com.sun.script.groovy; bundle-version="0.0.0"[provided]
No required bundles
Pax-Script Extender has registered OSGi services for that bundle.
JSR223 Scripting is now very easy to use under OSGi!
, multiple selections available, Use left or right arrow keys to navigate selected items