Avoid the chaosHandling 100+ OSGi components
Balázs Zsoldos
Everit Component Model (ECM) since 2014
Source: Inglourious Basterds
Why another Component Model?
Blueprint
Declarative Services
OSGi Service
Component
Reference
DS
DataSource
Business
Log C
Cache
Declarative Services
UserDataServlet
ServletContext
ErrorServletLoginServlet
Not Supported
Declarative Services
UserDataServlet
Whiteboardextender
ErrorServletLoginServlet
Whiteboard
Declarative Services
Whiteboardextender
Whiteboardextender
Aries JPA
Extender
Blueprint
Source: Reservoir dogs movie
Whiteboard extender ServletContextComponent
Authentication Filter
URL Redirect Filter
User Mgmt Servlet
Login Servlet
Authentication Filter
URL Redirect Filter
User Mgmt Servlet
Login Servlet
TestComponent
Source: Home Alone movie
Declarative Services
Everit Component Model
UserDataServlet
ServletContext
ErrorServletLoginServlet
Not Supported
Declarative Services
Package 2
Bundle B
Bundle A
Package 1 Capability
Bundle BBundle B
UserDataServlet
ServletContext
ErrorServletLoginServlet
AuthFilter
ServletContext
WhateverFilter
URLRewriteFilter
AuthFilter
ServletContext
WhateverFilter
URLRewriteFilter
0. 1. 2.
XML Transform
CamelRoute
XMLDigital Signature
XML Validator
0. 1. 2.
AuthenticationServlet
ServletContext
AuthorizationServlet
LoginServlet
/login /auth /auth
/a /authrConfigAdmin /authn
logService.target: (implementation=felix)
servlet.clause: loginServlet;filter:=(service.pid=...)
servlet.clause: ...;init_param1=value1;init_param2=value2
Targeting references
public enum ComponentState {
STOPPED,
UNSATISFIED,
STARTING,
ACTIVE,
STOPPING,
FAILED,
FAILED_PERMANENT}
// Throwable, restart on configuration change
// Throwable, never restart
ecm-extender-ri
ecm-component-ri
ecm-component-api
ecm-metadata
ecm-util-method
linkage-api
capabilitycollector
ecm-annotation-metadatabuilder
ecm-annotation
ecm-extender-api
@StringAttribute
private String stringAttribute;
public void setStringAttribute(String stringAttribute) {
this.stringAttribute = stringAttribute;
}
private Integer integerAttribute;
@IntegerAttribute
public void setIntAttribute(Integer integerAttribute) {
this.integerAttribute = integerAttribute;
}
private String[] names;
@StringAttribute(dynamic = true) public void setStringAttribute(String[] names) {
this.names = names;
}
OSGiservice Bundle Capability
ECM Component
Demo
http://everit.org/ecm/index.html
Source: Inglourious Basterds
Source: Inglourious Basterds
ecm-extender-ri
ecm-component-ri
ecm-component-api
ecm-metadata
ecm-util-method
linkage-api
capabilitycollector
ecm-annotation-metadatabuilder
ecm-annotation
ecm-extender-api
OSGiservice Bundle Capability
ECM Component
Twitter: @EveritOrg
Top Related