Date post: | 22-Jun-2018 |
Category: |
Documents |
Author: | trannguyet |
View: | 214 times |
Download: | 0 times |
Enterprise Developmentwith
What needs to be done to run JEE like applications inside Karaf?
2014-10-233
@anierbeck- Karaf PMC, Apache Member - OPS4j Pax Web Project Lead
- Senior IT Consultant @codecentric
- co-Author of Apache Karaf Cookbook
Agenda
Enterprise Requirements OSGi with Karaf Enterprise Requirements on Karaf Specialties Http Service Cellar - or how to cluster Karaf Summary
2014-10-234
Enterprise Requirements
Enterprise Java
2014-10-236
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
JAX-RPC
SAAJ
OSGi with Karaf
OSGi - a very brief introduction
Modular
OSGi Bundles:
High Cohesion (One classloader/bundle)
Low Coupling (Package Import/Export)
Versioning per bundle ( [1.0,2,0) )
Service Registry
2014-10-238
What is Karaf
Container
OSGi Applications
Ligthtweight
expandable to Full Enterprise support
Covers all major needs
Logging
Deployment
Configuration
2014-10-239
Karaf - Overview
2014-10-2310
Console Admin
OSGi Framework - Felix / Equinox
Logging DeployerConfig
JMX
SSHBlueprint
Enterprise requirements on Karaf
Karaf
2014-10-2312
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
JAX-RPC
SAAJ
Enterprise - Pax Web
2014-10-2313
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
JAX-RPC
SAAJ
Enterprise - Pax CDI
2014-10-2314
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
JAX-RPC
SAAJ
Enterprise - Aries
2014-10-2315
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
JAX-RPC
SAAJ
Enterprise - Tomee aka OpenEJB
2014-10-2316
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS
JAX-RPC
JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDISAAJ
Enterprise - CXF
2014-10-2317
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS
JAX-RPC
JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDISAAJ
Enterprise - ActiveMQ
2014-10-2318
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS
JAX-RPC
JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDISAAJ
Enterprise - Cellar
2014-10-2319
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS
JAX-RPC
JAX-RS
JAXR
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDISAAJ
Enterprise - Karaf with features
2014-10-2320
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
Bean Validation
JAX-WS
JAX-RPC
JAX-RS
JAXR
SAAJ
JAXB
JMS
JAAS
JASPIC
JACC
JSR-88
JCA
JavaMail
JSR-77
RMI
JNDI
Specialties
JPA - Karaf
2014-10-2322
org.apache.openjpa.persistence.PersistenceProviderImpl osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) de.nierbeck.apachecon.persistence.entity.Book de.nierbeck.apachecon.persistence.entity.Recipe true
JPA - Karaf
2014-10-2322
org.apache.openjpa.persistence.PersistenceProviderImpl osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/cookbook) de.nierbeck.apachecon.persistence.entity.Book de.nierbeck.apachecon.persistence.entity.Recipe true
To have this blueprint JNDI is needed
JTA - Karaf
2014-10-2323
JTA - Karaf
2014-10-2323
Client - Karaf
2014-10-2324
...
Demo
Persistence
2014-10-2326
Client
2014-10-2327
Client Shell
2014-10-2328
Client - Shell
2014-10-2329
Client Shell
2014-10-2330
Client - Shell
2014-10-2331
Http Service with
HTTP Service
2014-10-2333
Using an Activator: final HttpContext httpContext = httpService
.createDefaultHttpContext();// register the BookServlet
// first wait for the DAO-ServiceCookBookService cookBookService;ServiceReference serviceReference = bundleContext
.getServiceReference(CookBookService.class);cookBookService = bundleContext.getService(serviceReference);
//now create the servletViewBookServlet viewBookServlet = new ViewBookServlet();
//set the DAO to the ServletviewBookServlet.setCookBookService(cookBookService);
final Dictionary initParams = new Hashtable();try {
httpService.registerServlet("/book", // aliasviewBookServlet,initParams, httpContext);
Whiteboard
2014-10-2334
Using the whiteboard approach via Activatorpublic void start(BundleContext bc) throws Exception {
bundleContext = bc;
// first wait for the DAO-ServiceCookBookService cookBookService;ServiceReference serviceReference = bundleContext
.getServiceReference(CookBookService.class);cookBookService = bundleContext.getService(serviceReference);
// create new ServletViewBookServlet cookBookViewServlet = new ViewBookServlet();cookBookViewServlet.setCookBookService(cookBookService);
registerServiced = bundleContext.registerService(Servlet.class,cookBookViewServlet, null);
}
Whiteboard
2014-10-2335
Using the whiteboard approach via Blueprint
Servlet 3.0 - Just annotation
2014-10-2336
@WebServlet(urlPatterns = "/book")public class ViewBookServlet extends HttpServlet {
/** * */private static final long serialVersionUID = 1L;
@[email protected] cookBookService;
@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { ...
}}
LOST?
Registering - Servlet
2014-10-2338
Pax-Web HTTP Service
Service-Registry
Servlet
Registering - Servlet
2014-10-2338
Pax-Web HTTP Service
Service-Registry
Servlet
Registerd
Registering - Servlet
2014-10-2338
Pax-Web HTTP Service
Service-Registry
ServletRegisterd
Registerd
Registering - Whiteboard
2014-10-2339
Pax-Web WebContainer
Service-Tracker
Service-Registry
Servlet
Registering - Whiteboard
2014-10-2339
Pax-Web WebContainer
Service-Tracker
Service-Registry
Servlet
Registerd
Registering - Whiteboard
2014-10-2339
Pax-Web WebContainer
Service-Tracker
Service-Registry
Servlet
Registerd
Registerd
Registering - Whiteboard
2014-10-2339
Pax-Web WebContainer
Service-Tracker
Service-Registry
Servlet
Registerd
Registerd
Registering - WAR
2014-10-2340
Pax-Web WebContainer
Pax-Web WAR Extender
Service-Registry
WAB-Bundle
Servlet
Registering - WAR
2014-10-2340
Pax-Web WebContainer
Pax-Web WAR Extender
Service-Registry
WAB-Bundle
Servlet
Registerd
Registering - WAR
2014-10-2340
Pax-Web WebContainer
Pax-Web WAR Extender
Service-Registry
WAB-Bundle
Servlet
RegisterdRegisterd
Registering - WAR
2014-10-2340
Pax-Web WebContainer
Pax-Web WAR Extender
Service-Registry
WAB-Bundle
Servlet
RegisterdRegisterd
Servlet + JPA / Service
2014-10-2341
Blueprint Extender
Pax-Web WAR Extender
JPA-Bundle
Service-Registry
JPA - Service
WEB-Bundle
Servlet
Servlet + JPA / Service
2014-10-2341
Blueprint Extender
Pax-Web WAR Extender
JPA-Bundle
Service-Registry
JPA - Service
WEB-Bundle
Servlet
Registerd
Servlet + JPA / Service
2014-10-2341
Blueprint Extender
Pax-Web WAR Extender
JPA-Bundle
Service-Registry
JPA - Service
WEB-Bundle
Servlet
Registerd
Injected
Servlet + JPA / Service
2014-10-2341
Blueprint Extender
Pax-Web WAR Extender
JPA-Bundle
Service-Registry
JPA - Service
WEB-Bundle
Servlet
RegisterdRegisterd
Injected
Demo
View
2014-10-2343
View
2014-10-2344
Cluster provided by Apache Karaf Cellar
Cellar - Cluster Communication
2014-10-2346
Cellar - Cluster Communication
2014-10-2347
Hazelcast
Cellar - Events
2014-10-2348
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
osgi:install mvn:groupId/artifactId/version
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
DEPRECATED
Cellar - Distributing Bundles
2014-10-2349
Node A
Node B
Node C
Maven Repository
Hazelcast
DEPRECATED
cluster:install mvn:groupId/artifactId/version
Cellar - RMI
2014-10-2350
Group 1
Node A Consumes OSGi-Service
Group 2
Node B Consumes OSGi-Service
Node C Consumes OSGi-Service
Node A Provides OSGi-Service
Node B Provides OSGi-ServiceHazelcast
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cellar - Web session failover
2014-10-2351
Node A
Hazelcast
DataBase
Client
ServletFilter
Node B
ServletFilter
Cluster - Demo
Presentation Layer
2014-10-2353
web.xml - Hazelcast
2014-10-2354
Hazelcast for Session Replication
hazelcast-filtercom.hazelcast.web.WebFilter
map-namemy-sessions
sticky-sessionfalse
hazelcast-filter/*FORWARDINCLUDEREQUEST
com.hazelcast.web.SessionListener
View
2014-10-2355
View
2014-10-2356
View
2014-10-2357
SUMMARY
Enterprise - Karaf
2014-10-2359
Servlet 3
JSF 2
JSP
JPA 2
JTA
CDIEJB 3.1
JAX-WS
JAX-RPC
JAX-RS
JAXR
SAAJ
JAXB
JMS
JAAS RMIJNDI
JEE with Karaf?
Adoptions needed? YES
Minor on Persistence - JNDI lookup
Minor on transaction - Blueprint JTA
Wiring of Services:
Use Blueprint
Use Servlet 3.0 with CDI - @OsgiService
Session Replication throughout cluster, its still standard Hazelcast
2014-10-2360
Resources
@anierbeck
notitzblog.nierbeck.de
https://github.com/ANierbeck/karaf-enterprise-sample
www.codecentric.de
karaf.apache.org
https://ops4j1.jira.com/wiki/display/paxweb/Pax+Web
#karaf at irc.codehaus.org
https://www.packtpub.com/application-development/apache-karaf-cookbook
Pictures, mainly from flickr
2014-10-2361
http://notitzblog.nierbeck.dehttps://github.com/ANierbeck/karaf-enterprise-samplehttp://www.codecentric.dehttp://karaf.apache.orghttps://ops4j1.jira.com/wiki/display/paxweb/Pax+Webhttp://irc.codehaus.orghttps://www.packtpub.com/application-development/apache-karaf-cookbook
THANKS FOR LISTENING
Thanks to the Apache Community
Questions
Thanks