Skip to content

OSGi current recommended usage patterns and 'how to' s.

Gordon Hutchison edited this page May 5, 2023 · 7 revisions

Mandatory static references

For mandatory static references the preferred way to inject is to use constructor injection:

@Activate
public NettyFrameworkImpl(@Reference ExecutorService executorService) {
    this.executorService = executorService;
}

Slack

Service Components

Use a @Component rather than a .bnd file entry and there is no need to have the service.vendor field

slack

Configurable Components

See

If your component is configurable then the target filter for the reference can be configured with configuration admin. For example if you gave your reference a name @Reference(name="example1") and your component PID is mypid then in the server.xml it could be configured like: <mypid example1.target="(some.property=select.this.one)" /> Slack

Lazy Service Instantiation

Slack The most simple is always to get directly injected with the service object implementation with a simple @Reference. Only after you prove that such a simple reference contributes to a performance issue should you consider using AtomicServiceReference to try to have lazy service instantiation.

Inheritance and References

Keep Java types for references as simple as possible: Slack

Clone this wiki locally