Hansa Pakkage Protocol
The Pakkage protocol is to obtain the classes within a defined and properly versioned Java package. This will make OSGi assembly much more interesting, and allowing for new types of application descriptors based on OSGi package metadata. The protocol handler will locate the Jar file where the package can be found, download and cache that on the local file system in isolated packages and serve classes as resources according to the URLClassLoader format of jar\:<filename>!<class>, such as
jar:file:log4j-1.2.12.jar!/org/apache/log4j/Log4J.class
- Protocol:
pakkage:<java-package>?<query>
where query ::= <queryitem>[&<queryitem>]
and queryitem is one of;
version=<version>
<attributename>=<attributevalue>
<directivename>:=<directivevalue>
- Setup Example:
- Usage Examples:
How to setup a classloader with Jetty
URL[] urls = new URL[]
{
new URL( "pakkage:javax.servlet?version=2.3" );
new URL( "pakkage:javax.servlet.http?version=2.3" );
new URL( "pakkage:org/mortbay/component?version=6.0.0" );
new URL( "pakkage:org/mortbay/io?version=6.0.0" );
new URL( "pakkage:org/mortbay/io/bio?version=6.0.0" );
new URL( "pakkage:org/mortbay/io/nio?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/bio?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/handler?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/nio?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/security?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/servlet?version=6.0.0" );
new URL( "pakkage:org/mortbay/jetty/webapp?version=6.0.0" );
new URL( "pakkage:org/mortbay/log?version=6.0.0" );
new URL( "pakkage:org/mortbay/resource?version=6.0.0" );
new URL( "pakkage:org/mortbay/servlet?version=6.0.0" );
new URL( "pakkage:org/mortbay/thread?version=6.0.0" );
new URL( "pakkage:org/mortbay/util?version=6.0.0" );
new URL( "pakkage:org/mortbay/util/ajax?version=6.0.0" );
new URL( "pakkage:org/mortbay/xml?version=6.0.0" );
};
ClassLoader parent = ...;
ClassLoader cl = new URLClassLoader( urls, parent );