osgi r4.3 // next release overviewosgi r4.3 // next release overview agenda • framework &...
TRANSCRIPT
![Page 1: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/1.jpg)
Peter Kriens | OSGi Evangelist/Director
OSGi R4.3 //Next Release Overview
![Page 2: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/2.jpg)
Agenda• Framework & ServiceTracker update to Java 5 generics• A replacement for Package Admin and Start Level• A Shell standard• Managing System.out and System.in per thread• Formatting and Conversion• Coordination Service• Resolver Hook• Generic Capabilities and Requirements• Configuration Admin Overhaul• An easier way to receive configuration updates• Bytecode weaving• Minor parts
![Page 3: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/3.jpg)
Framework & ServiceTracker update to Java 5 generics• Current API feels “old-fashioned”
– Lack of generics– Uses of arrays and null return
• Generics have been held back because the embedded world is still still on Java 1.4
![Page 4: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/4.jpg)
JSR 14!• Developed to run Java 5 code on 1.4
VMs• All compilers recognize the
– source 5 -target jsr14 switches• Output class format 48 (1.4)
– stores generics in skippable attributes• Works like a charm
– No annotatons– No enums
![Page 5: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/5.jpg)
Generic ServicesServiceReference<LogService> lr =
context.getServiceReference( LogService.class );
LogService log = context.getService(lr);
Collection<EventAdmin> rs =
context.getServiceReference(EventAdmin.class);
ServiceRegistration<ConfigurationListener> sr =
context.registerService(ConfigurationListener.class)
ServiceTracker<EventListener> st =
new ServiceTracker<EventListener>( context,
EventListener.class, null);
![Page 6: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/6.jpg)
Adapt Method• Package Admin and Start Level were
cumbersome to use– Bundle was almost always
parameter– Not very OO
• The adapt method converts an object another type (if supported) public <T> T adapt( Class<T> clazz );
![Page 7: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/7.jpg)
A Replacement for Package Admin and Start Level Service• Package Admin and Start Level now
use the adapt() method.• Package Admin translated to
BundleWiring, BundleRevision, and BundleWirings
• Start Level Service translated to Start Level and Framework Start Level
![Page 8: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/8.jpg)
Bundle Wiring
Bundle
BundleRevision
BundleWiring
BundleWirings
adapt to:
adapt to current:
adapt to current:
getBundleVersion
getBundleWirings
1
0..n0..1
11
0..1
11
1
1
![Page 9: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/9.jpg)
Start Level
Bundle
Start Level
FrameworkStart Level
adapt to:
adapt to:
0..1
1
1
0..n
(for system bundle id=0)
(for non-system bundles id!=0)
![Page 10: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/10.jpg)
Shell• Uses reflection to provide the
commands– Aligns commands with the
specified API• Optimizes for typing• Has closures• Methods are commands• Very easy to provide commands• Terminal abstraction
![Page 11: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/11.jpg)
A Shell
CommandProcessor
AggregateConverter
Thread IO
AggregateFormatter
Formatter
Converter…
Handler
…Commands
ThreadIO
osgi.command.scope=…osgi.command.function=...
CommandProcessor
AggregateConverter
AggregateFormatter
Formatter
Converter
![Page 12: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/12.jpg)
An OSGi Shell$ bundles | grep eclipse
000000 ACT org.eclipse.osgi-3.3.1.R33x_v20070828
000001 ACT org.eclipse.osgi.util-3.1.200.v20070605
...
000002 ACT org.eclipse.osgi.services-3.1.200.v20070605
$ <bundle 6> headers
Tool Bnd-0.0.169
...
Bundle-SymbolicName biz.aQute.fileinstall
$ <<bundle 6> headers> get Tool
Bnd-0.0.169
$ fi = bundle 6
RegisteredServices [ManagedServiceFactory]
...
StateChanging null
$ $fi stop
$ $fi location
initial@reference:file:biz.aQute.fileinstall_1.3.jar/
![Page 13: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/13.jpg)
Managing System.out. System.err, and System.in per thread• System.out, System.in, and
System.err are singletons• The ThreadIO service turns them
into thread specific streams• The shell allows commands to
output to System.out
![Page 14: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/14.jpg)
Formatting and Conversion• Formatter formats an object to a
string– PART, LINE, INSPECT
• Converter converts an object to another type
• Uses whiteboard pattern• Aggregates provided to simplify
normal usage and simple cases
![Page 15: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/15.jpg)
Coordination Service• Allow multiple parties to collaborate
by signalling the end of a work item– ended(Coordination)– failed(Coordination)
• Thread based or specifically passed as parameter
• Nested
![Page 16: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/16.jpg)
Coordination Service
Coordinator
Some Task
Task
Initiator
TaskTask Coordination
![Page 17: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/17.jpg)
Coordination ServiceCoordination c = coordinator.begin();
try {
… do work
c.end();
} catch( FailedCoordinatioNfinally {
}
![Page 18: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/18.jpg)
Resolver Hook• Allows interception of resolver• Deny certain dependencies
– Provide context• Replaces nested frameworks
– Went through nested frameworks, virtual bundles, and now hooks
• Allows scoping– Needed for subsystems
![Page 19: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/19.jpg)
Generic Capabilities and Requirements• Package-Import, Require-Bundle,
and Bundle-Host are requirements• Bundle-SymbolicName and
Package-Export are capabilities• Requirements are filter expressions• Capabilities are sets of properties• Pioneered in OBR• Screen size, certificate, etc.
![Page 20: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/20.jpg)
Configuration Admin Overhaul• Security
– Segmentation• Allow a service to register under multiple
pids– Use aspects: web config, system config
• Coordinated Update• Version count on Configuration object• Extension PIDs
– Target a single bundle• com.example.WebConf-com.bundle.foo-1.2.3-123
![Page 21: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/21.jpg)
An Easier Way to Receive Configuration Updates• Configuration Admin uses
properties– Hard to use in Java
• Would be nice to use Java type …• Schema of properties defined in a
Java Interface– PID is classname– Interfaces can extend other
interfaces
![Page 22: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/22.jpg)
An Easier Way to Receive Configuration Updates• Works for Managed Services and
Managed Service Factories• Data Validation a la Meta Type using
annotations– mandatory/default– options– size
• Implemented in Apache Cade already (Karaf)...
![Page 23: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/23.jpg)
An Easier Way to Receive Configuration Updatespublic interface WebConf {
String host();
@Default(80) int port();
}
public class X implements Configurable<WebConf> {
public void updated( WebConf web ) {
setPort( web.port() );
}}
public interface MyConf extends WebConf, SysConf { }
PID
![Page 24: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/24.jpg)
Bytecode weaving• Bytecode weaving very popular in
enterprise applications• Needs to changes the bytes loaded
by the class loader• Introduces the service:
org.osgi.framework.weaving.WeavingHook
• Ordering defined by ranking• Can add additional requirements
![Page 25: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/25.jpg)
Byte Code Weaving
Framework
Weaver
WeavingHook
![Page 26: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/26.jpg)
Minor Updates• Event Admin
– Reusing properties• Classpath scanning
– Following the bundle class path
![Page 27: OSGi R4.3 // Next Release OverviewOSGi R4.3 // Next Release Overview Agenda • Framework & ServiceTracker update to Java 5 generics • A replacement for Package Admin and Start Level](https://reader034.vdocument.in/reader034/viewer/2022050505/5f96f8b54aa6ae43d5649715/html5/thumbnails/27.jpg)
Q&A