OSGi Core

The OSGi Alliance

Release 8

October 2020


Table of Contents

OSGi Specification License, Version 2.0
License Grant
No Warranties and Limitation of Liability
Covenant Not to Assert
General
Trademarks
Feedback
1 Introduction
1.1 OSGi Framework Overview
1.2 Reader Level
1.3 Conventions and Terms
1.4 Version Information
1.5 References
1.6 Changes
2 Security Layer
2.1 Introduction
2.2 Security Overview
2.3 Digitally Signed JAR Files
2.4 Permissions
2.5 References
2.6 Changes
3 Module Layer
3.1 Introduction
3.2 Bundles
3.3 Dependencies
3.4 Execution Environment
3.5 Class Loading Architecture
3.6 Resolving Metadata
3.7 Constraint Solving
3.8 Resolving Process
3.9 Runtime Class Loading
3.10 Loading Native Code Libraries
3.11 Localization
3.12 Bundle Validity
3.13 Requiring Bundles
3.14 Fragment Bundles
3.15 Extension Bundles
3.16 Security
3.17 References
3.18 Changes
4 Life Cycle Layer
4.1 Introduction
4.2 Frameworks
4.3 Bundles
4.4 The Bundle Object
4.5 The Bundle Context
4.6 The System Bundle
4.7 Events
4.8 Security
4.9 References
4.10 Changes
5 Service Layer
5.1 Introduction
5.2 Services
5.3 Service Scope
5.4 Getting Service Objects
5.5 Releasing Service Objects
5.6 Service Events
5.7 Stale References
5.8 Filters
5.9 Service Factory
5.10 Prototype Service Factory
5.11 Unregistering Services
5.12 Multiple Version Export Considerations
5.13 Security
5.14 Changes
6 Resource API Specification
6.1 Introduction
6.2 Resources
6.3 Namespaces
6.4 Resolution
6.5 Wiring
7 Bundle Wiring API Specification
7.1 Introduction
7.2 Using the Wiring API
7.3 Bundle Wiring
7.4 Fragments
7.5 Framework Actions
7.6 Container Scanning
7.7 Security
8 Framework Namespaces Specification
8.1 Introduction
8.2 osgi.ee Namespace
8.3 osgi.wiring.package Namespace
8.4 osgi.wiring.bundle Namespace
8.5 osgi.wiring.host Namespace
8.6 osgi.identity Namespace
8.7 osgi.native Namespace
8.8 References
8.9 Changes
9 Start Level API Specification
9.1 Introduction
9.2 Start Level API
9.3 The Concept of a Start Level
9.4 Example Applications
9.5 Security
10 Framework API
10.1 org.osgi.framework
10.2 org.osgi.framework.launch
10.3 org.osgi.resource
10.4 org.osgi.framework.wiring
10.5 org.osgi.framework.startlevel
10.6 org.osgi.framework.namespace
10.7 org.osgi.annotation.versioning
10.8 org.osgi.annotation.bundle
50 Conditional Permission Admin Service Specification
50.1 Introduction
50.2 Permission Management Model
50.3 Effective Permissions
50.4 Conditional Permissions
50.5 Conditions
50.6 The Permission Check
50.7 Permission Management
50.8 File Permission for Relative Path Names
50.9 Implementing Conditions
50.10 Standard Conditions
50.11 Bundle Permission Resource
50.12 Relation to Permission Admin
50.13 Implementation Issues
50.14 Security
50.15 org.osgi.service.condpermadmin
51 Permission Admin Service Specification
51.1 Introduction
51.2 Permission Admin service
51.3 Security
51.4 org.osgi.service.permissionadmin
52 URL Handlers Service Specification
52.1 Introduction
52.2 Factories in java.net
52.3 Framework Procedures
52.4 Providing a New Scheme
52.5 Providing a Content Handler
52.6 Security Considerations
52.7 org.osgi.service.url
52.8 References
53 Resolver Hook Service Specification
53.1 Introduction
53.2 Resolve Operation
53.3 The Resolve Operation
53.4 Security
53.5 org.osgi.framework.hooks.resolver
54 Bundle Hook Service Specification
54.1 Introduction
54.2 About the Hooks
54.3 Bundle Event Hook
54.4 Bundle Find Hook
54.5 Bundle Collision Hook
54.6 Security
54.7 org.osgi.framework.hooks.bundle
55 Service Hook Service Specification
55.1 Introduction
55.2 Service Hooks
55.3 Usage Scenarios
55.4 Event Listener Hook
55.5 Find Hook
55.6 Listener Hook
55.7 Architectural Notes
55.8 Security
55.9 org.osgi.framework.hooks.service
55.10 References
56 Weaving Hook Service Specification
56.1 Introduction
56.2 Usage
56.3 Weaving Hook
56.4 Woven Class Listener
56.5 Security
56.6 org.osgi.framework.hooks.weaving
56.7 References
57 Data Transfer Objects Specification
57.1 Introduction
57.2 Data Transfer Object
57.3 Core Data Transfer Objects
57.4 Obtaining Core Data Transfer Objects
57.5 Security
57.6 org.osgi.dto
57.7 org.osgi.framework.dto
57.8 org.osgi.framework.startlevel.dto
57.9 org.osgi.framework.wiring.dto
57.10 org.osgi.resource.dto
57.11 References
57.12 Changes
58 Resolver Service Specification
58.1 Introduction
58.2 The Resolve Context
58.3 Resolver Service
58.4 Security
58.5 org.osgi.service.resolver
58.6 References
59 Condition Service Specification
59.1 Introduction
59.2 Condition Service
59.3 Security
59.4 org.osgi.service.condition
60 Connect Specification
60.1 Introduction
60.2 Module Connector
60.3 Connect Bundles
60.4 Framework Utility Helpers
60.5 Example Class Path Connector
60.6 Security
60.7 org.osgi.framework.connect
101 Log Service Specification
101.1 Introduction
101.2 The Logger Interface
101.3 Obtaining a Logger
101.4 Logger Configuration
101.5 Log Reader Service
101.6 Log Entry Interface
101.7 Mapping of Events
101.8 Log Service
101.9 Capabilities
101.10 Security
101.11 org.osgi.service.log
101.12 org.osgi.service.log.admin
101.13 References
101.14 Changes
701 Tracker Specification
701.1 Introduction
701.2 Tracking
701.3 Service Tracker
701.4 Bundle Tracker
701.5 Security
701.6 org.osgi.util.tracker

List of Figures

1.1 Layering
1.2 Interactions between layers
1.3 Class and interface symbol
1.4 Service symbol
1.5 Alternative Service symbol
1.6 Inheritance (implements or extends) symbol
1.7 Relations symbol
1.8 Associations symbol
1.9 Bundles
2.1 Delegation model
2.2 Signer files in JAR
2.3 Signer files in JAR
2.4 Manifest, signature instruction files and digests in JAR
2.5 Structure of a certificate
2.6 Certificate authorities fan out
2.7 Country, Company, Person based namespace.
3.1 Primary Property Types
3.2 Core Requirement/Capability model
3.3 Requirements and Capabilities and their Wiring
3.4 Delegation model
3.5 Class Space
3.6 Example class structure of wiring
3.7 Legend of wiring instance diagrams, and example
3.8 Example bundle diagram
3.9 Version Constrained
3.10 Optional import
3.11 Uses directive in B, forces A to use javax.servlet from D
3.12 Implied Packages
3.13 Uses directive and resolving
3.14 Flow chart for class loading (non-normative)
3.15 Depth First search with Require Bundle
3.16 Cycles
3.17 Split packages and package constraints
3.18 Resource/class searching with fragments
3.19 Permissions and bundle sharing
4.1 Class diagram org.osgi.framework Life Cycle Layer
4.2 Action Diagram for Framework Launching
4.3 State diagram Framework
4.4 State diagram Bundle
4.5 Starting with eager activation versus lazy activation
4.6 Setup for showing the difference between getResource and getEntry
5.1 Class Diagram org.osgi.framework Service Layer
5.2 Service Registration and registration
6.1 Class diagram for org.osgi.resource
6.2 Wire and declared Resources
6.3 Hosted Capability Example
7.1 Class Diagram org.osgi.framework.wiring (with relations to org.osgi.resource)
7.2 Requirements and Capabilities Diagramming
7.3 Example Import/Export Package with Requirements/Capabilities Model
7.4 Relationship between events, revisions, and wirings
7.5 The Bundle Revisions and Bundle Wirings over time
7.6 Bundle A requires Bundle B Wiring Instances
7.7 Fragments and Wiring
7.8 Exporting a Package from a Fragment
7.9 Fragments Wiring Instances
8.1 Example osgi.wiring.package Namespace
9.1 Class Diagram org.osgi.framework.startlevel package
9.2 Move to requested start level R, active level is A, B is a bundle's start level
50.1 org.osgi.service.condpermadmin package
50.2 Local permissions and Deployment
50.3 with signing
50.4 Delegation model
50.5 Typical Delegation model
50.6 System, Local and Security permissions
50.7 Instantiation of the policy table
50.8 in OSGi bundles
50.9 Structure of Postponed List PL
50.10 Evaluation of postponed policies
50.11 Evaluation of postponed policies
50.12 Structure of the Info objects.
51.1 org.osgi.service.permissionadmin package
52.1 Class Diagram, java.net (URL and associated classes)
52.2 Proxy Issues
53.1 Resolver Hooks Entities
54.1 Bundle Hooks, org.osgi.framework.hooks.bundle package
55.1 Service Hooks, org.osgi.framework.hooks.service package
55.2 Service Primitives
55.3 Normal and proxied service interaction
55.4 Event Listener Hook Interaction
55.5 Listener Hook Interaction
56.1 Byte Code Weaving
56.2 Woven Class State Diagram
57.1 Resource API Data Transfer Objects
57.2 Bundle Wiring API Data Transfer Objects
58.1 Class and Service overview
59.1 Service Activation with a normal Whiteboard
59.2 Service Activation with Condition
60.1 Connect Class Diagram
101.1 Logger Class Diagram org.osgi.service.log package
101.2 Log Admin Class Diagram org.osgi.service.log.admin package
701.1 Class diagram of org.osgi.util.tracker