+ All Categories
Home > Documents > Enterprise Development With Apache Karaf Provides OSGi-Service. Cellar - Web session failover...

Enterprise Development With Apache Karaf Provides OSGi-Service. Cellar - Web session failover...

Date post: 22-Jun-2018
Category:
Author: trannguyet
View: 214 times
Download: 0 times
Share this document with a friend
Embed Size (px)
of 100 /100
Enterprise Development with …
Transcript
  • 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


Recommended