Download - Karaf ee-apachecon eu-2012
![Page 1: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/1.jpg)
Karaf - When OSGI modularity meets Java EE world
Charles Moulliard &
Romain Manni-Bucau
![Page 2: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/2.jpg)
Agenda
● Modularity● OSGI EE● Java EE● All together● Conclusion
![Page 3: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/3.jpg)
Speaker : Charles Moulliard
● Engineer in Agronomy & Master in Zoology● Project Manager & Architect for banking sector● Solution Architect & Consultant @RedHat ● Committer → Karaf (PMC), Camel (PMC),
ServiceMix, DeltaSpike, Fabric @cmoulliard
http://www.linkedin.com/in/charlesmoulliard
http://cmoulliard.blogspot.com
http://www.slideshare.net/cmoulliard
![Page 4: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/4.jpg)
Speaker : Romain Manni-Bucau● Java and JavaEE developer● Participates to Apache OpenEJB & TomEE
since 2011 ● His professional area is particularly linked to
banks and insurances ● His development environment mainly
consists of Open Source & Apache projects (TomEE, Karaf, ...)●
![Page 5: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/5.jpg)
Introductionto Modularity
![Page 6: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/6.jpg)
What does modularity means ?
● Open Standard Gateway Initiative exists since 1999
● Initially conceived to create dynamic environments for the “home gateway”
● Lead by Telco, IT vendors● Class-loading isolation ● Dependency control, versioning
![Page 7: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/7.jpg)
What does modularity means ?
● Function → Class● Class → Interface● Classes → Jar● Jar → Bundle (a Module)● Bundle has a lifecycle !
![Page 8: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/8.jpg)
What does modularity means ?
![Page 9: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/9.jpg)
What does modularity means ?
BundleActivator, Blueprint, SpringDM
iPOJO
Dependencies & versionschecked
Replace bundle by a new
![Page 10: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/10.jpg)
What does modularity means ?● OSGI Architecture introduces core concepts:
– Execution Environment– Modules (bundles) & lifecycle– Services & Service Registry
![Page 11: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/11.jpg)
What does modularity means ?● How modularity is expressed
→ METADATA added in MANIFEST.mf file
![Page 12: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/12.jpg)
What does modularity means ?● And of course : Import & Export Package
![Page 13: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/13.jpg)
What does modularity means ?
![Page 14: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/14.jpg)
Apache Karaf● Birthdate - 16th of June 2010● Platform running on OSGI (Apache Felix, Eclipse
Equinox)● Provides a lightweight container where
● Applications, Integration projects● Web Service, JMS Brokers● Java applications
can be deployed● Used by ServiceMix, Geronimo projects
![Page 15: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/15.jpg)
Apache Karaf
![Page 16: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/16.jpg)
Enterprise Service Bus
Java OSGI
![Page 17: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/17.jpg)
Apache Karaf ● Administration console (locale, remote, ssh,
web, jmx)● Provisioning system (features)● Hot deployment and configuration
management (properties)● Instances management● Security integration (JAAS → ldap, jdbc, file)● Logging unification (log4j, logger, commons
logging, ….)
![Page 18: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/18.jpg)
Quick Apache Karaf demo
![Page 19: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/19.jpg)
Is there an alternative ?
![Page 20: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/20.jpg)
Java Jigsaw vision
● Jigsaw project seems like
Loch Ness Monster ● Announced since Java SE 7
& now -> Java SE 9
in 2015● Faced to issues
(backward compatibility)
![Page 21: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/21.jpg)
Java Jigsaw vision● CLASSPATH death● New Class format● Static linkage (<= Java card – 1996)● Byte code verification step moved to speed
process● JDK will have a system module library in
which the platform modules are installed
![Page 22: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/22.jpg)
Java Jigsaw vision● Dependency defined --> module-info.java
file module com.greetings @ 0.1 {
requires jdk.base;
requires org.astro @ 1.2;
class com.greetings.Hello;
}
![Page 23: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/23.jpg)
Java Jigsaw vision● Managed using specific commands
jmod -L mlib create # this creates module lib "mlib"
jmod -L mlib install modules org.astro com.greetings
rm -rf mlib/com.greetings
java -L mlib -m com.greetings
![Page 24: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/24.jpg)
OSGI EE
Extend Modularity with enterprise features
![Page 25: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/25.jpg)
OSGI EE● OSGI is not only a specification defining a
“modular” architecture● Embrace EE world● Provide support for Java standards :
– JPA, JNDI, Web (HTTP), JTA, JDBC– Soon CDI, EJB
![Page 26: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/26.jpg)
OSGI EE
● Implemented by Apache Aries
● But also OPS4J - Pax
![Page 27: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/27.jpg)
What is OSGI EE ?● OSGI services (Java Interfaces)● JPA, JTA OSGI containers● Web OSGI container● Blueprint (IoC) to configure services, beans and
access services● But also
– JNDI (wrapper) – SpiFly (Java ServiceLoader – static/dynamic)– Applications isolation (EBA)
![Page 28: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/28.jpg)
Enterprise Service Bus
Java OSGI EE
JPA, JTA, JNDI, JDBC
OSGI EE
![Page 29: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/29.jpg)
Apache Karaf
What is OSGI EE ?
● A typical architecture
DB
Java Service Java DAO
OSGI Services
Blueprint
JPA Tx
<bean id="conferenceService" class="org.apache.conf2012.service.impl.ConferenceService">
<property name="conferenceDAO"> <reference interface="org.apache.conf2012.service.ConferenceDAO"/> </property>
</bean>
Blueprint
![Page 30: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/30.jpg)
Apache Karaf
What is OSGI EE ?
● Architecture enriched with Web layer
Java DAO Java Service
OSGI Services
Blueprint Blueprint
JPA Tx
Web
Blueprint
Simply HTML artifacts, web framework
DB
![Page 31: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/31.jpg)
Apache Karaf
What is OSGI EE ?● Using Camel for Integration
Java DAO Java Service
OSGI Services
Blueprint Blueprint
JPA Tx
Camel
Bean
Java Service
from(“file://apacheCon2012”).unmarshall(“csv”).beanRef(“insertConference”);
File, WS, Rest, JMS
DB
![Page 32: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/32.jpg)
What is OSGI EE ?
● Persistence
![Page 33: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/33.jpg)
What is OSGI EE ?
● DAO
![Page 34: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/34.jpg)
What is OSGI EE ?
● DAO (Spring/Blueprint) using JPA/Hibernate
![Page 35: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/35.jpg)
What is OSGI EE ?
● Service
![Page 36: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/36.jpg)
Java EE
![Page 37: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/37.jpg)
Java EE - Specs● JSR 907 (JTA)● JSR 196 (JAAS)● JSR 115 (JACC)● JavaMail● JSR 338 (JPA)● JSR 303 (Bean Validation)● JSR 299 + 330 (CDI)● JSR 318 (EJB)
![Page 38: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/38.jpg)
Java EE – Specs (next)● JSR 315 (servlet)● JSR 245 (JSP)● JSR 344 (JSF)● JSR 914 (JMS)● JSR 339 (JAX-RS)● JSR 224 (JAX-WS)● Connector
![Page 39: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/39.jpg)
Java EE & Apache● Supported by Apache foundation projects
OpenJPA
OpenEJB
OpenWebbeans
DeltaSpike
ActiveMQ
CXF, Camel
Tomcat, MyFaces
![Page 40: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/40.jpg)
Java EE - Concepts
Transactions
Endpoint
Pooling
@Inject
@Resource
JAX-WS
JAX-REST
JAAS
@EntityManager
PersistenceUnit
![Page 41: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/41.jpg)
When Java EEmeets OSGI
![Page 42: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/42.jpg)
Java EE on Karaf
● What is required– A Karaf runtime– Features (= provisioning)– New Karaf command (optional)
● Follow Java EE specs & development guidelines
![Page 43: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/43.jpg)
Karaf plus EE
● Features →
Java EE api + OpenEJB + OpenWebbeans + OpenJPA
● Turn on your Karaf into Java EE world :
CDI + EJB3 + JPA + JTA + ...
![Page 44: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/44.jpg)
Enterprise Service Bus
Java EE world
EECDI, EJB, JPA, JTA
![Page 45: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/45.jpg)
Karaf EE Architecture● Architecture (JPA, EJB, CDI)
Apache Karaf
DB
Java Service Java DAO
OSGI Services
CDI
OpenJPA
…@Inject@Startup@SingletonConference DAO MyConferenceDAO….
CDI
OpenEJB JTA
HTTP
Web Framework
![Page 46: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/46.jpg)
Karaf with EE - Example● Pers
istence
![Page 47: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/47.jpg)
Karaf with EE - Example● Entity
![Page 48: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/48.jpg)
Karaf with EE - Example● DAO
![Page 49: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/49.jpg)
Karaf with EE - Example● Service
![Page 50: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/50.jpg)
DEMO & Conclusion
![Page 51: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/51.jpg)
● Karaf EE = Combine multi-lightweight containers of Karaf with Java EE world
● Allow to develop modular projects● Capitalize your Java EE knowledge● Convergence between, best of both
technologies OSGI & Java EE
![Page 52: Karaf ee-apachecon eu-2012](https://reader034.vdocuments.site/reader034/viewer/2022052523/5554b02cb4c90502618b558f/html5/thumbnails/52.jpg)
Questions @cmoulliard @rmannibucau
Karaf with EE http://repo1.maven.org/maven2/org/apache/openejb/apache-karafee/https://github.com/cmoulliard/apachecon-2012/tree/master/karafee