Felix is a platform for component applications that implements the OSGi standard with extensions.
// Service reference injected into field.
@Requires private LogService log;
// Service reference injected into constructor argument.
public MyComponent (@Requires LogService log) { ... }
// Service reference injected through method invocation.
@Bind public void bindLogService(LogService log) { ... }
@Unbind public void unbindLogService(LogService log) { ... }
@Modified public void modifiedLogService(LogService log) { ... }
// Example adjusted from documentation, see references.
// Service provision with implicitly declared interfaces.
@Component @Provides
public class FooProvider implements FooService {
...
}
// Service provision with explicitly declared interfaces.
@Component @Provides (specifications={FooService.class})
public class FooProvider implements FooService {
...
// Public service property declaration.
@ServiceProperty (name="foo", value="foo")
private String aFoo;
// Private component property declaration.
@Property (name="bar", falue="bar")
private String aBar;
// Property change notification.
@Updated public void updated (Dictionary properties) {
...
}
}
// Example adjusted from documentation, see references.
// Component with requirements and lifecycle management.
@Component @Instantiate
public class FooComponent {
@Requires private LogService log;
@Validate private void start () {
// Called when all instance requirements become available.
...
}
@Invalidate private void stop () {
// Called when some instance requirement ceases being available.
...
}
// Setting controller field to false disables component instance.
@Controller private boolean enabled;
}
// Example adjusted from documentation, see references.