SlideShare a Scribd company logo
1 of 46
Introduction to Everit Component 
Registry 
Model 
Balázs Zsoldos
Blueprint 
+ 
JPA 
+ 
JSF 
Declarative 
Services 
+ 
Modularized 
Persistence 
+ 
JSF 
ECM 
+ 
Modularized 
Persistence 
+ 
JSF 
ECM 
+ 
Modularized 
Persistence 
+ 
Modularized 
Web 
Declarative 
Services 
+ 
JPA 
+ 
JSF
Blueprint 
iPojo 
Declarative Services 
Everit Component Model
Blueprint 
iPojo 
DS 
ECM 
Monoholitic + Magic 
Christmas tree + Magic 
KISS 
KISS
Blueprint 
iPojo 
DS 
ECM 
~ 630Kb 
~ 800 Kb 
~ 260 Kb 
< 200 Kb 
Core with dependencies + Proxy impl, 
without annotations, without ASM 
With dependencies 
including ASM
Declarative 
Services 
Everit 
Component 
Model
Felix SCR 
Capability Collector 
ECM Metadata 
ECM Component 
Annotation Set 
Annotation Processor 
Annotation Set 
Annotation → Metadata 
Extender
Annotation 
XML 
Annotation 
processor 
Development time 
Annotation 
XML 
Declarative Services 
Runtime
Annotation 
Metadata 
ECM 
Component 
container 
Annotation 
Metadata 
ECM 
Component 
container 
Runtime
public class TestActivator implements BundleActivator { 
private ComponentContainerInstance<MyComponent> componentContainer; 
public TestActivator() { 
// Initialize component container 
} 
public void start(BundleContext bundleContext) throws Exception { 
componentContainer.open(); 
} 
public void stop(BundleContext context) throws Exception { 
componentContainer.close(); 
} 
}
Component 
container 
ComponentContainer 
Registers OSGi service 
OR 
ComponentContainer + [MetatypeProvider] + ManagedService 
OR 
ComponentContainer + [MetatypeProvider] + ManagedServiceFactory
public interface ComponentContainer<C> { 
ComponentRevision[] getComponentRevisions(); 
ComponentMetadata getComponentMetadata(); 
BundleContext getBundleContext(); 
}
Resource Wiring Wire Capability 
ComponentRevision 
ComponentWiring 
ComponentWire 
BundleCapability 
ServiceCapability 
OSGi R5 
ECM
ConfigAdmin Component 
container 
Configuration 
Configuration 
Configuration 
Component 
Component 
Component
ManagedService 
ManagedServiceFactory
Configuration References 
Component 
Service Service
@StringAttribute 
private String stringAttribute; 
public void setStringAttribute(String stringAttribute) { 
this.stringAttribute = stringAttribute; 
} 
private String stringAttribute; 
@StringAttribute 
public void setStringAttribute(String stringAttribute) { 
this.stringAttribute = stringAttribute; 
} 
@StringAttribute(dynamic = true) 
public void setStringAttribute(String[] stringAttribute) { 
// Do something with the information 
}
@Component(configurationPolicy = ConfigurationPolicy.FACTORY) 
@StringAttributes({ 
@StringAttribute(attributeId = "name"), 
@StringAttribute(attributeId = "motherName", 
setter = "setMotherName") }) 
@IntegerAttributes({ 
@IntegerAttribute(attributeId = "age", optional = true), 
@IntegerAttribute(attributeId = "dimensions", 
multiple = ThreeStateBoolean.TRUE, 
setter = "setDimensions(int[])") 
}) 
@AttributeOrder({ "name", "age", "dimensions", "motherName" }) 
@Service 
public class ServletContextComponent { 
... 
}
Configuration References 
Component 
Service Service
Reference types 
OSGi Service 
BundleCapability
Targeting references 
logService.target: (implementation=felix) 
servlet.clause: loginServlet;filter:=(service.pid=...) 
servlet.clause: ...;init_param1=value1;init_param2=value2
Multiplicity 
@ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) 
private Filter[] filters; 
@ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) 
public void setServlet(ServiceCapabilityHolder[] servletHolders) {} 
@ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) 
public void setListeners(EventListener[] listeners) {}
Mutiplicity
Delayed component 
Declarative Services Everit Component 
Model 
The activation of the component is 
delayed until the service is 
requested. 
No
Optionality 
Declarative Services Everit Component 
Model 
Component is satisfied even if there 
is no OSGi service available for the 
reference 
No configuration must be provided 
for the reference / attribute. 
If there is no configuration for a 
reference, no OSGi service is 
picked up.
Optionality
Whiteboard extender ServletContextComponent 
URL Redirect Filter 
Authentication Filter 
Login Servlet 
User Mgmt Servlet 
URL Redirect Filter 
Authentication Filter 
Login Servlet 
User Mgmt Servlet
Whiteboard ECM 
Configuration on Service side Configuration on Container 
and / or on Service side 
Services are extended as 
soon as they are available 
Services are extended as 
soon as all necessary services 
are available 
Ordering based on 
service.ranking 
Ordering based on the 
configuration of container
public enum ComponentState { 
STOPPED, 
UNSATISFIED, 
STARTING, 
ACTIVE, 
STOPPING, 
FAILED, 
FAILED_PERMANENT 
} 
// activate(), Thread 
// deactivate(), Thread 
// Throwable, restart on configuration change 
// Throwable, never restart
Dynamism 
Declarative Services Everit Component 
Model 
If the configuration is updated, the 
component is not restarted. 
If a reference is dynamic, the OSGi 
services can come and go based on 
the cardinality of the reference. 
If any of the dynamic attributes / 
references are updated, the 
component is not restarted 
automatically. 
If an OSGi service is that is wired to 
a reference is unregistered, but 
there is another one that can be 
wired, the component is not 
restarted.
Component failure and restart 
● Failure cause 
– Issue in the component definition (permanent) 
– Exception in activate method (temporary) 
– Fail called programmatically 
● Restart 
– A non-dynamic attribute or reference is changed 
– Restart called programmatically
public interface ComponentContext<C> { 
/** 
* Causes the component to step into the {@link ComponentState#FAILED} or 
* {@link ComponentState#FAILED_PERMANENT} state. 
* 
* @param e 
* The cause of the failure. 
* @param permanent 
* Whether the failure should be permanent or not. In case of 
* permanent failure, the component will not be restarted until 
* the bundle that registered the component is updated. 
*/ 
void fail(Throwable e, boolean permanent); 
/** 
* Causes the restarting of the component. The old instance will be dropped 
* and a new one will be instantiated. 
*/ 
void restart(); 
// Other methods 
}
@Activate 
public void activate(ComponentContext<Component> componentContext) { 
// A funny StackOverflowError 
componentContext.restart(); 
} 
@Activate 
public void activate(ComponentContext<Component> componentContext) { 
// Always failing component 
Exception e = new Exception("I am an evil failure"); 
componentContext.fail(e, true); 
}
Configuration References 
Component 
Service Service
@Component 
@Service 
public class TestComponent { 
private ServiceRegistration<String> serviceRegistration; 
@Activate 
public void activate(ComponentContext<TestComponent> context) { 
Hashtable<String, Object> properties = 
new Hashtable<String, Object>(); 
serviceRegistration = context.registerService( 
String.class, "Hello world", properties); 
} 
@Deactivate 
public void deactivate() { 
serviceRegistration.unregister(); 
} 
}
Metatype extensions 
AttributeDefinition 
AttributeMetadataHolder 
AttributeDefinitionImpl 
Metatype 
Spec. 
ECM
Metatype extensions 
● String attribute 
– multiLine (textArea) 
● Service Reference (String type) 
– service interface 
● BundleCapability reference (String type) 
– namespace
Webconsole plugins
ThreadViewer
Configuration
Components view 
● Shows the state of the components 
● Shows the wirings 
● Link to the configuration 
● Link to the ThreadViewer plugin if the component 
is in STARTING or STOPPING state 
● Link to the Component Graph plugin 
● No enable / disable, restart, etc.
Component Graph 
● Visual representation of OSGi services and 
Components 
● Only the selected component and its direct 
wirings are shown 
● Walking via the wirings
Jetty components 
● Server Component 
● ServletContext Component 
● Connector components (Http, SSL, ...)
No magic, no Christmas tree 
@Transactional 
public long saveUser(String firstName, String lastName) { 
public long saveUser(String firstName, String lastName) { 
Objects.requireNonNull(firstName); 
Objects.requireNonNull(lastName); 
return transactionHelper.required(() -> { 
// Logic that should be implemented 
return 0l; 
}); 
} 
Objects.requireNonNull(firstName); 
Objects.requireNonNull(lastName); 
// Logic that should be implemented 
return 0l; 
}
Capability-collector: https://github.com/everit-org/osgi-capability-collector 
ECM Annotation: https://github.com/everit-org/ecm-annotation 
ECM Method util: https://github.com/everit-org/ecm-util-method 
ECM Metadata: https://github.com/everit-org/ecm-util-method 
ECM Annotation → Metadata: https://github.com/everit-org/ecm-annotation-metadatabuilder 
ECM Component: https://github.com/everit-org/ecm-component 
Cookbook: http://cookbook.everit.org/ 
Everit Components: http://www.everit.org/components.html 
Twitter: @EveritOrg

More Related Content

What's hot

Web注入+http漏洞等描述
Web注入+http漏洞等描述Web注入+http漏洞等描述
Web注入+http漏洞等描述
fangjiafu
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
Xavier Noria
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
Michał Orman
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
Carol McDonald
 

What's hot (19)

Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013
Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013
Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013
 
Workshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionWorkshop 19: ReactJS Introduction
Workshop 19: ReactJS Introduction
 
Web注入+http漏洞等描述
Web注入+http漏洞等描述Web注入+http漏洞等描述
Web注入+http漏洞等描述
 
Spring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentationSpring 4 advanced final_xtr_presentation
Spring 4 advanced final_xtr_presentation
 
Hibernate Developer Reference
Hibernate Developer ReferenceHibernate Developer Reference
Hibernate Developer Reference
 
Spring 4 final xtr_presentation
Spring 4 final xtr_presentationSpring 4 final xtr_presentation
Spring 4 final xtr_presentation
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5
 
Documenting from the Trenches
Documenting from the TrenchesDocumenting from the Trenches
Documenting from the Trenches
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
 
JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?
 
React ES5 to ES6 | React ES5 vs ES6 | React Tutorial for Beginners | React on...
React ES5 to ES6 | React ES5 vs ES6 | React Tutorial for Beginners | React on...React ES5 to ES6 | React ES5 vs ES6 | React Tutorial for Beginners | React on...
React ES5 to ES6 | React ES5 vs ES6 | React Tutorial for Beginners | React on...
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)Mike Taulty OData (NxtGen User Group UK)
Mike Taulty OData (NxtGen User Group UK)
 
Spray - Build RESTfull services in scala
Spray - Build RESTfull services in scalaSpray - Build RESTfull services in scala
Spray - Build RESTfull services in scala
 
Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014Java EE 7 in practise - OTN Hyderabad 2014
Java EE 7 in practise - OTN Hyderabad 2014
 
Angular2 + rxjs
Angular2 + rxjsAngular2 + rxjs
Angular2 + rxjs
 
Java EE and Glassfish
Java EE and GlassfishJava EE and Glassfish
Java EE and Glassfish
 

Viewers also liked

Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
mfrancis
 
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBMOSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
mfrancis
 
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
mfrancis
 
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
mfrancis
 
Using OSGi for the Realization of Complex Building Management Systems - Peter...
Using OSGi for the Realization of Complex Building Management Systems - Peter...Using OSGi for the Realization of Complex Building Management Systems - Peter...
Using OSGi for the Realization of Complex Building Management Systems - Peter...
mfrancis
 
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
mfrancis
 
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigitalOSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
mfrancis
 
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P KriensWhy Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
mfrancis
 
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
mfrancis
 
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
mfrancis
 
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
mfrancis
 
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
mfrancis
 
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
mfrancis
 

Viewers also liked (20)

Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
Enabling the Enterprise with Next-Generation Mobile Architectures - Mark Vand...
 
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBMOSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
OSGi Technology, Eclipse and Convergence - Jeff McAffer, IBM
 
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
Building Global Telematics System by Using OSGi Technology - Dimitar Valtchev...
 
Experiences from Building the Fastest OSGi Container on the Planet - Jaroslav...
Experiences from Building the Fastest OSGi Container on the Planet - Jaroslav...Experiences from Building the Fastest OSGi Container on the Planet - Jaroslav...
Experiences from Building the Fastest OSGi Container on the Planet - Jaroslav...
 
OSGi - Four Years and Forward - J Barr
OSGi - Four Years and Forward - J BarrOSGi - Four Years and Forward - J Barr
OSGi - Four Years and Forward - J Barr
 
OSGi Applications Testing - André Elia Assad, System Engineer, Cesar
OSGi Applications Testing - André Elia Assad, System Engineer, CesarOSGi Applications Testing - André Elia Assad, System Engineer, Cesar
OSGi Applications Testing - André Elia Assad, System Engineer, Cesar
 
Opensugar - Enabling pervasive services - P Scokaert
Opensugar - Enabling pervasive services - P ScokaertOpensugar - Enabling pervasive services - P Scokaert
Opensugar - Enabling pervasive services - P Scokaert
 
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
OSGi Technology Based In-vehicle Computing Platforms- The Embedded Systems Pe...
 
Delivering Services Using an OSGi Gateway - C Nycander
Delivering Services Using an OSGi Gateway - C NycanderDelivering Services Using an OSGi Gateway - C Nycander
Delivering Services Using an OSGi Gateway - C Nycander
 
Using OSGi for the Realization of Complex Building Management Systems - Peter...
Using OSGi for the Realization of Complex Building Management Systems - Peter...Using OSGi for the Realization of Complex Building Management Systems - Peter...
Using OSGi for the Realization of Complex Building Management Systems - Peter...
 
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
OSGi Users’ Forum Korea - Haejun Yi, ProSyst Technology Korea, Inc.
 
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigitalOSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
OSGi Residential Gateways Experience in Spain - Andrés Manso, HogarDigital
 
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P KriensWhy Have The Specifications Been Based On Java™ Technology? - P Kriens
Why Have The Specifications Been Based On Java™ Technology? - P Kriens
 
Massive Enterprise Product Migration to OSG - Raymond Auge
Massive Enterprise Product Migration to OSG - Raymond AugeMassive Enterprise Product Migration to OSG - Raymond Auge
Massive Enterprise Product Migration to OSG - Raymond Auge
 
E2 Home - P Ljunggren
E2 Home - P LjunggrenE2 Home - P Ljunggren
E2 Home - P Ljunggren
 
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
OSGi Technology as it relates to Java, Smartcards, and the Automotive Industr...
 
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
iPOJO - The Simple Life - Richard Hall, Visiting Assistant Professor at Tufts...
 
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
Making the Home Gateway an Operator Control Point - Andreas Sayegh, Deutsche ...
 
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
Keynote - OSGi Service Enabler - Peter Möckel, Managing Director T-Labs, Deu...
 
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
Available OSGi Service Platforms - What distinguishes ProSyst’s offering? - D...
 

Similar to Introduction to Everit Component Registry - B Zsoldos

Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
Ted Pennings
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
Gunith Devasurendra
 

Similar to Introduction to Everit Component Registry - B Zsoldos (20)

Declarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi styleDeclarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi style
 
Declarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi StyleDeclarative Services - Dependency Injection OSGi Style
Declarative Services - Dependency Injection OSGi Style
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6Integrating Wicket with Java EE 6
Integrating Wicket with Java EE 6
 
SCR Annotations for Fun and Profit
SCR Annotations for Fun and ProfitSCR Annotations for Fun and Profit
SCR Annotations for Fun and Profit
 
Spring 3: What's New
Spring 3: What's NewSpring 3: What's New
Spring 3: What's New
 
Advance java session 5
Advance java session 5Advance java session 5
Advance java session 5
 
Intake 37 ef2
Intake 37 ef2Intake 37 ef2
Intake 37 ef2
 
JavaEE Spring Seam
JavaEE Spring SeamJavaEE Spring Seam
JavaEE Spring Seam
 
Asp.NET MVC
Asp.NET MVCAsp.NET MVC
Asp.NET MVC
 
Configuration beyond Java EE 8
Configuration beyond Java EE 8Configuration beyond Java EE 8
Configuration beyond Java EE 8
 
Intake 38 data access 5
Intake 38 data access 5Intake 38 data access 5
Intake 38 data access 5
 
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
 
Dev309 from asgard to zuul - netflix oss-final
Dev309  from asgard to zuul - netflix oss-finalDev309  from asgard to zuul - netflix oss-final
Dev309 from asgard to zuul - netflix oss-final
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use it
 
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdfdokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
dokumen.tips_rediscovering-spring-with-spring-boot1 (1).pdf
 
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdfdokumen.tips_rediscovering-spring-with-spring-boot1.pdf
dokumen.tips_rediscovering-spring-with-spring-boot1.pdf
 
OpenDMS - the first 2 weeks
OpenDMS - the first 2 weeksOpenDMS - the first 2 weeks
OpenDMS - the first 2 weeks
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 

More from mfrancis

Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Introduction to Everit Component Registry - B Zsoldos

  • 1. Introduction to Everit Component Registry Model Balázs Zsoldos
  • 2. Blueprint + JPA + JSF Declarative Services + Modularized Persistence + JSF ECM + Modularized Persistence + JSF ECM + Modularized Persistence + Modularized Web Declarative Services + JPA + JSF
  • 3. Blueprint iPojo Declarative Services Everit Component Model
  • 4. Blueprint iPojo DS ECM Monoholitic + Magic Christmas tree + Magic KISS KISS
  • 5. Blueprint iPojo DS ECM ~ 630Kb ~ 800 Kb ~ 260 Kb < 200 Kb Core with dependencies + Proxy impl, without annotations, without ASM With dependencies including ASM
  • 6. Declarative Services Everit Component Model
  • 7. Felix SCR Capability Collector ECM Metadata ECM Component Annotation Set Annotation Processor Annotation Set Annotation → Metadata Extender
  • 8. Annotation XML Annotation processor Development time Annotation XML Declarative Services Runtime
  • 9. Annotation Metadata ECM Component container Annotation Metadata ECM Component container Runtime
  • 10. public class TestActivator implements BundleActivator { private ComponentContainerInstance<MyComponent> componentContainer; public TestActivator() { // Initialize component container } public void start(BundleContext bundleContext) throws Exception { componentContainer.open(); } public void stop(BundleContext context) throws Exception { componentContainer.close(); } }
  • 11. Component container ComponentContainer Registers OSGi service OR ComponentContainer + [MetatypeProvider] + ManagedService OR ComponentContainer + [MetatypeProvider] + ManagedServiceFactory
  • 12. public interface ComponentContainer<C> { ComponentRevision[] getComponentRevisions(); ComponentMetadata getComponentMetadata(); BundleContext getBundleContext(); }
  • 13. Resource Wiring Wire Capability ComponentRevision ComponentWiring ComponentWire BundleCapability ServiceCapability OSGi R5 ECM
  • 14. ConfigAdmin Component container Configuration Configuration Configuration Component Component Component
  • 17. @StringAttribute private String stringAttribute; public void setStringAttribute(String stringAttribute) { this.stringAttribute = stringAttribute; } private String stringAttribute; @StringAttribute public void setStringAttribute(String stringAttribute) { this.stringAttribute = stringAttribute; } @StringAttribute(dynamic = true) public void setStringAttribute(String[] stringAttribute) { // Do something with the information }
  • 18. @Component(configurationPolicy = ConfigurationPolicy.FACTORY) @StringAttributes({ @StringAttribute(attributeId = "name"), @StringAttribute(attributeId = "motherName", setter = "setMotherName") }) @IntegerAttributes({ @IntegerAttribute(attributeId = "age", optional = true), @IntegerAttribute(attributeId = "dimensions", multiple = ThreeStateBoolean.TRUE, setter = "setDimensions(int[])") }) @AttributeOrder({ "name", "age", "dimensions", "motherName" }) @Service public class ServletContextComponent { ... }
  • 20. Reference types OSGi Service BundleCapability
  • 21. Targeting references logService.target: (implementation=felix) servlet.clause: loginServlet;filter:=(service.pid=...) servlet.clause: ...;init_param1=value1;init_param2=value2
  • 22. Multiplicity @ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) private Filter[] filters; @ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) public void setServlet(ServiceCapabilityHolder[] servletHolders) {} @ServiceRef(configurationType = ReferenceConfigurationType.CLAUSE) public void setListeners(EventListener[] listeners) {}
  • 24. Delayed component Declarative Services Everit Component Model The activation of the component is delayed until the service is requested. No
  • 25. Optionality Declarative Services Everit Component Model Component is satisfied even if there is no OSGi service available for the reference No configuration must be provided for the reference / attribute. If there is no configuration for a reference, no OSGi service is picked up.
  • 27. Whiteboard extender ServletContextComponent URL Redirect Filter Authentication Filter Login Servlet User Mgmt Servlet URL Redirect Filter Authentication Filter Login Servlet User Mgmt Servlet
  • 28. Whiteboard ECM Configuration on Service side Configuration on Container and / or on Service side Services are extended as soon as they are available Services are extended as soon as all necessary services are available Ordering based on service.ranking Ordering based on the configuration of container
  • 29. public enum ComponentState { STOPPED, UNSATISFIED, STARTING, ACTIVE, STOPPING, FAILED, FAILED_PERMANENT } // activate(), Thread // deactivate(), Thread // Throwable, restart on configuration change // Throwable, never restart
  • 30. Dynamism Declarative Services Everit Component Model If the configuration is updated, the component is not restarted. If a reference is dynamic, the OSGi services can come and go based on the cardinality of the reference. If any of the dynamic attributes / references are updated, the component is not restarted automatically. If an OSGi service is that is wired to a reference is unregistered, but there is another one that can be wired, the component is not restarted.
  • 31. Component failure and restart ● Failure cause – Issue in the component definition (permanent) – Exception in activate method (temporary) – Fail called programmatically ● Restart – A non-dynamic attribute or reference is changed – Restart called programmatically
  • 32. public interface ComponentContext<C> { /** * Causes the component to step into the {@link ComponentState#FAILED} or * {@link ComponentState#FAILED_PERMANENT} state. * * @param e * The cause of the failure. * @param permanent * Whether the failure should be permanent or not. In case of * permanent failure, the component will not be restarted until * the bundle that registered the component is updated. */ void fail(Throwable e, boolean permanent); /** * Causes the restarting of the component. The old instance will be dropped * and a new one will be instantiated. */ void restart(); // Other methods }
  • 33. @Activate public void activate(ComponentContext<Component> componentContext) { // A funny StackOverflowError componentContext.restart(); } @Activate public void activate(ComponentContext<Component> componentContext) { // Always failing component Exception e = new Exception("I am an evil failure"); componentContext.fail(e, true); }
  • 35. @Component @Service public class TestComponent { private ServiceRegistration<String> serviceRegistration; @Activate public void activate(ComponentContext<TestComponent> context) { Hashtable<String, Object> properties = new Hashtable<String, Object>(); serviceRegistration = context.registerService( String.class, "Hello world", properties); } @Deactivate public void deactivate() { serviceRegistration.unregister(); } }
  • 36. Metatype extensions AttributeDefinition AttributeMetadataHolder AttributeDefinitionImpl Metatype Spec. ECM
  • 37. Metatype extensions ● String attribute – multiLine (textArea) ● Service Reference (String type) – service interface ● BundleCapability reference (String type) – namespace
  • 38.
  • 42. Components view ● Shows the state of the components ● Shows the wirings ● Link to the configuration ● Link to the ThreadViewer plugin if the component is in STARTING or STOPPING state ● Link to the Component Graph plugin ● No enable / disable, restart, etc.
  • 43. Component Graph ● Visual representation of OSGi services and Components ● Only the selected component and its direct wirings are shown ● Walking via the wirings
  • 44. Jetty components ● Server Component ● ServletContext Component ● Connector components (Http, SSL, ...)
  • 45. No magic, no Christmas tree @Transactional public long saveUser(String firstName, String lastName) { public long saveUser(String firstName, String lastName) { Objects.requireNonNull(firstName); Objects.requireNonNull(lastName); return transactionHelper.required(() -> { // Logic that should be implemented return 0l; }); } Objects.requireNonNull(firstName); Objects.requireNonNull(lastName); // Logic that should be implemented return 0l; }
  • 46. Capability-collector: https://github.com/everit-org/osgi-capability-collector ECM Annotation: https://github.com/everit-org/ecm-annotation ECM Method util: https://github.com/everit-org/ecm-util-method ECM Metadata: https://github.com/everit-org/ecm-util-method ECM Annotation → Metadata: https://github.com/everit-org/ecm-annotation-metadatabuilder ECM Component: https://github.com/everit-org/ecm-component Cookbook: http://cookbook.everit.org/ Everit Components: http://www.everit.org/components.html Twitter: @EveritOrg

Editor's Notes

  1. Development time / running time
  2. Let&amp;apos;s see the lifecycle of the component - When a configuration and references are available, service(SS) are registered
  3. How to use annotations Note that for Strings the StringAttribute is used. Type safety.
  4. One annotation for each type Attribute Order
  5. BundleCapability: Namespace, stateMask
  6. Like buying a new car without starting the engine ever
  7. And the textarea
  8. Release will be tweeted out