SlideShare a Scribd company logo
<Insert Picture Here>




OSGi & Java EE in GlassFish
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta
The following/preceding is intended to outline our
general product direction. It is intended for
information purposes only, and may not be
incorporated into any contract. It is not a
commitment to deliver any material, code, or
functionality, and should not be relied upon in
making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.



                                                     2
3
4
5
Generally complex ...
• 13 assembly missions
• 16 pressurized modules
• 35k cubic feet
• 400 metric tons ~ 400K kg ~ 882K lbs
• 173 – 286 miles above Earth
• Average speed: 17,227 mph
• 15.7 orbits/day
• Estimated cost: $157 billion


                                         6
7
The OSGi Alliance is a worldwide
consortium of technology innovators
that advances a proven and mature
process to assure interoperability of
applications and services based on
its component integration platform.


                                    8
OSGi Alliance provides ...

• Specifications
• Reference Implementation
• Test Suites
• Certifications




                               9
What is OSGi Specification ?

• Delivered by OSGi Alliance
  • Originally for embedded devices, set top boxes, network
• Architecture for modular application development
 in Java
  • Breaks applications into “modules” or “bundles”
• Can install, uninstall, start, and stop each bundle
 dynamically without restarting container
  • Multiple versions are supported
• Dependencies explicitly defined with clear
 boundaries

                                                         10
“JAR Hell”

• JAR is a build-time and deploy-time
 concept, not run-time
  • Based on the ZIP file format
• No metadata to indicate dependencies
• Multiple versions of JARs cannot be
  loaded
• All “public” classes are public
  • Access modifiers are for packages, not JAR



                                                 11
OSGi Layers

                Service



               Life Cycle



                Module



         Execution Environment


                                 12
OSGi Bundle – Just a JAR File!
                                 Export-Package
                                 Import-Package
 Java Classes, Static Files, …   Bundle-ClassPath
           (bundle private)            ...


  META-INF/MANIFEST.MF
                                  Persistent
           OSGI-OPT
      (docs, source code, ...)

                                    Atomic


                                                  13
Bundle is identified by ...

• Bundle Identifier
  • Unique for the lifetime
  • getBundleId()
• Bundle Location
  • Unique location of the bundle
  • getLocation()
• Bundle Symbolic Name and Version
  • Globally unique identifier
  • getSymbolicName(), getVersion()




                                      14
Java Classes, Static Files, ...    Service

 META-INF/MANIFEST.MF
              ...
        Export-Package
              ...
                                                     Client

                            Java Classes, Static Files, ...

                             META-INF/MANIFEST.MF
                                          ...
                                    Import-Package
                                          ...


                                                              15
Interaction between layers
          register / unregister
               get / unget         Service
                                       manage

               start / stop
                                  Life Cycle
 Bundle
 Bundle




                                       install
                                       uninstall
               classload
                                   Module


               execute
                                     EE


                                                   16
Bundle State Diagram

    update
    refresh                   install


                         INSTALLED
                                                STARTING
               update                      rt
                           resolve      sta
               refresh

                         RESOLVED                ACTIVE

                  uninstall                         stop

                                                STOPPING



Each bundle installation is
new
                                                           17
OSGi Containers




    http://stackoverflow.com/questions/560794/what-osgi-container-do-you-recommend


                                                                                     18
What is GlassFish ?
• GlassFish is an open source community
• Delivers Java EE Reference Implementation
 • GlassFish Server Open Source Edition - glassfish.org
 • Oracle GlassFish Server - oracle.com/goto/glassfish
• Tooling: NetBeans, Eclipse, IntelliJ
• GlassFish 3.1 – currently developed
 • Modular, Embeddable, Extensible
 • High Availability, Clustering, Centralized Administration




                                                               19
GlassFish Distributions
Distribution                  License      Features

GlassFish Open Source         CDDL &       • Java EE 6 Compatibility
Edition 3.0                   GPLv2        • No Clustering
                                           • Clustering planned in 3.1
                                           • mod_jk for load balancing

GlassFish Open Source         CDDL &       • Java EE 5 Compatibility
Edition 2.1.1                 GPLv2        • In memory replication
                                           • mod_loadbalancer
Oracle GlassFish Server 3.0   Commercial   • GlassFish Open Source Edition 3.0
                                           • GlassFish Server Control            Clustering
                                           • Clustering planned in 3.1            Coming
                                                                                   Soon!
Oracle GlassFish Server       Commercial   • GlassFish Open Source Edition
2.1.1                                        2.1.1
                                           • Enterprise Manager
                                           • HADB




                                                                                         20
GlassFish Roadmap Detail




  21
©2010 Oracle Corporation
OSGi in GlassFish
• GlassFish runs on top of OSGi
• Felix is default, also runs on Equinox &
  Knopflerfish
   • Runs in an existing shell
   • 200+ bundles in v3
• All GlassFish modules are OSGi bundles
• No OSGi APIs are used in GlassFish
   • HK2 provides abstraction layer

http://blogs.sun.com/arungupta/entry/totd_103_glassfish_v3_with
http://blogs.sun.com/arungupta/entry/totd_127_embedding_glassfish_in


                                                                       22
GlassFish: Modular Platform
   REST                                OpenMQ          WebSpace Server
                   Scripting                                                 OpenESB             OpenSSO
Web Services                            JMS                Portal


   Web                               Connection             Java                               Web Services
                       JSF                                                 EJB Container

                       Application Container
 Container                          Pooling (JCA)        Persistence                             Interop



         Management Console                   Update Center                     Management CLI



      Naming                               Grizzly Framework                                Monitoring/
                        Injection
      Service Config          Deploy
                        Manager
                                            Security           Monitor Configuration
                                                                              Cluster      Serviceability/
                                                                                             Logging

                                          GlassFish V3 Core
    Transaction          Security         (Module Subsystem)
      Service            Service                                        Deployment           Clustering




                                                OSGi
                                                Java SE

                                                                                                             23
GlassFish v3 Runtime with OSGi


 GlassFish V3 modules
                                Random OSGi Bundle
(OSGi + extra metadata)


                          Service        OSGi
   HK2 Service layer
                          Mapper     Service Layer




              OSGi Bundle Management




                                                     24
Benefits of OSGi for GlassFish
• Demands and enforces stronger modularity
• Enables custom tailored App server
• Lazy loading based on usage patterns
• Open for all JVM based technologies
  • Native deployment of JRuby-on-Rails application
• Successfully maintained quick startup
• Available to GlassFish developers and
 users


                                                      25
Create an OSGi Bundle – Maven

• Create a Maven project
• Implement “BundleActivator”
• Update “pom.xml”
   • Change packaging to “bundle”
   • Add dependencies on OSGI APIs
   • Use “maven-bundle-plugin” to package
• Build the bundle


http://blogs.sun.com/arungupta/entry/totd_36_deploy_osgi_bundles

                                                                   26
Create an OSGi bundle – NetBeans




http://blogs.sun.com/arungupta/entry/totd_125_creating_an_osgi

                                                                 27
Create an OSGi bundle – NetBeans




http://blogs.sun.com/arungupta/entry/totd_125_creating_an_osgi

                                                                 28
Create an OSGi bundle – Eclipse




http://blogs.sun.com/arungupta/entry/totd_126_creating_an_osgi

                                                                 29
OSGi Bundles in GlassFish
• asadmin deploy –type osgi
• “cp”/“rm”
    glassfish/domains/domain1/autodeploy/bundles
•   telnet localhost 6666
•   Apache Felix Web Console
•   REST Console bundle
•   Perl-based shell (Osgish)
•   VisualVM OSGi Plugin
•   Supports OBR
    • Discover and deploy dependencies together
http://blogs.sun.com/arungupta/entry/totd_118_managing_osgi_bundles



                                                                      30
31
Dynamic Discovery of OSGi service

                                                                          OSGi
  Export-Package        API                                              Service
                                                                         Registry

  Import-Package
                        Impl
  Bundle-Activator

                                                   Service
  Import-Package                                   Trackerasdsadasdsd
                                                              cker
                       Client                      Service Tra
  Bundle-Activator

                                                               Filters
http://blogs.sun.com/arungupta/entry/totd_131_dynamic_osgi_services


                                                                                    32
Why OSGi in Enterprise Apps ?

• Improved modularity
  •   Reusable bundles
  •   Dependencies are more visible
  •   Better isolation / Cleaner class loading model
  •   Better version control
  •   Faster deployment cycle
• Better tools for deployment
• Observable bundle life cycle
• Service Tracking
• Criteria-based service selection


                                                       33
Why Java EE in Enterprise Apps ?

• Better API (JPA, JTA, JAXB, JNDI)
• Better component model (Servlet, EJB, JAX-RS)
• Better frameworks (JSF, CDI)
• Ease-of-use (Annotations, Convention-over-
  configuration)
• Platform provided integrated infrastructure
  services
  • Transaction, Security, Persistence, Remoting, ...
• Many more reasons ...



                                                        34
35
OSGi Enterprise Expert Group

 The OSGi Enterprise Expert Group
   (EEG) is chartered to define the
      technical requirements and
specifications to tailor and extend the
 OSGi Service Platform to address
   information technology software
  infrastructure use cases found in
    enterprise business scenarios.
            http://www.osgi.org/EEG/HomePage


                                               36
Current Status

• Released OSGi Service Platform Enterprise
  Specification 4.2 in 2010
• Open Source Efforts
 • GlassFish
 • Project Aries
 • Eclipse Gemini




                                          37
Hybrid Applications

 “A hybrid application is an OSGi
   bundle as well as a Java EE
  archive and hence has both an
OSGi bundle context and Java EE
    context at runtime and can
 leverage capabilities of both the
            platforms.”

                                     38
Role of GlassFish

• Provides a runtime for Hybrid Applications
• Implements Java EE related OSGi services
  and standards
• Don't have to assemble the bits
• OSGi is no longer under the cover
 • Raises visibility from GlassFish developers to users




                                                      39
OSGi EEG Focus
• Scaling, including multi-container and multi-process
  environments
• Distributed and/or federated service model for
  • Multiple Service Platforms
  • External, heterogeneous systems
• Requirements for extensions to the OSGi
  publish/f nd/bind service model
          i
• Enterprise-class life cycle and conf guration
                                     i
  management
• Integration of established Java EE technology into
  OSGi


                                                         40
Why Hybrid Apps ?




       Best of both worlds!!!
Why do you want to learn new APIs ?




                                 41
Role of GlassFish

• Provides a runtime for Hybrid Applications
• Implements Java EE related OSGi services
  and standards
• Don't have to assemble the bits
• OSGi is no longer under the cover
 • Raises visibility from GlassFish developers to users




                                                      42
OSGi Compendium Specs in GlassFish

• OSGi/Web Application (rfc #66)
• OSGi/JPA (rfc #143)
• OSGi/JDBC (rfc #122)
• OSGi/JTA (rfc #98)
• OSGi/JNDI (rfc #142)
• OSGi/HTTP Service




                                      43
OSGi/Web Application (rfc #66)

• Web Application Bundle (WAB)
  • WAR + OSGi + Web-ContextPath Header
  • Can use all enterprise APIs include JPA with lazy loading
  • Sample manifest:
    Manifest-Version: 1.0
    Import-Package: javax.servlet.http; javax.persistence
    Bundle-ClassPath: WEB-INF/classes/,WEB-INF/lib/entities.jar
    Bundle-Version: 1.0
    Bundle-ManifestVersion: 2
    Web-ContextPath: /hello
    Bundle-SymbolicName: test.hellowab

• Wrapped WAR Support
  • webbundle: URL scheme


                                                                  44
OSGi Declarative Services

• Complications of Publish/Find/Bind
  • Long startup time
  • Memory footprint
  • Complex service programming model
• OSGi services in Java EE
    @Resource(mappedName=”osgiName”)
    SomeOSGiService osgiService;
  • JNDI Lookup
  • Portable, no OSGi dependencies in application
• Exported APIs visible to Java EE apps



                                                    45
OSGi Declarative Service
                                     <scr:component enabled="true" name="hello-service">
                                        <implementation class="org.glassfish.samples.osgi.helloservice.impl.HelloImpl"/>
                                        <service servicefactory="false">
              OSGI-INF/                  <provide interface="org.glassfish.samples.osgi.helloservice.api.HelloService"/>
                                        </service>
       serviceComponents.xml            <property name="service.pid" value="hello-service"/>
                                     </scr:component>



Export-Package   API                                                                    Servlet Client
                                       ...
                                       import   org.glassfish.samples.osgi.helloservice.api.HelloService;


           HelloImpl                   @WebServlet(urlPatterns={"/HelloClient"})
                                       public class HelloClient extends HttpServlet {

                                        @Resource(mappedName="hello-service")
                                        HelloService helloService;

                                        @Resource(mappedName="howdy-service")
         HowdyImpl                      HelloService howdyService;

                                       ...




   http://blogs.sun.com/arungupta/entry/totd_124_osgi_declarative_services


                                                                                                                           46
OSGi Declarative Services


 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Service;
 import org.glassfish.samples.osgi.helloservice.api.HelloService;         maven-
                                                                          bundle-
 @Component(name="hello-service")                                          plugin
 @Service
 public class HelloImpl implements HelloService {                         maven-
   public String sayHello(String name) {                                   scr-
     return "Hello " + name;                                              plugin
   }
 }




http://blogs.sun.com/arungupta/entry/totd_124_osgi_declarative_services


                                                                                    47
JAX-WS & OSGi




          Artifacts   WSDL
                             JAX-WS
JAX-WS                       Endpoint
 Client                          Business
                                  Method




                                            48
JAX-WS & OSGi

                    Artifacts                                   WSDL
                                                                       JAX-WS
   JAX-WS                                                              Endpoint
    Client                                                                 Business
                                                                           Delegate
                                                                            Method
                                            Query
                                            Registry


                            OSGi                                        OSGi
                                                  Register
                           Service
                                                  Service
                                                                       Bundle
                           Registry
                                                                           Business
                                                                            Method
http://blogs.sun.com/arungupta/entry/totd_130_invoking_a_osgi


                                                                                      49
OSGi & EJB

• Export EJB as OSGi services
• Pure OSGi component can discover/invoke
  the service
• Advantages
  • Declarative security, Transaction, Context dependency,
    Injection, … are available to non-EE components
• TX context from pure OSGi bundle
 propagates to invoked EJB
  • Ditto for security and persistence context




                                                             50
OSGi & EJB

                 Client                                            OSGi Service Registry


                               login
Export-Package
                  API         register




  Export-EJB     Impl
                                         Container-managed
                                                JPA

               LoadData


   http://weblogs.java.net/blog/ss141213/archive/2010/03/30/ejb-osgi-service-demo-eclipsecon


                                                                                               51
JavaOne 2010 Hands-on Lab (S313522)



      OSGi Client                          OSGi Service




         WAB                                    EJB


http://blogs.sun.com/arungupta/entry/screencast_32_osgi_enabled_java

                                                                       52
OSGi & JMS


Export-EJB: None   Consumer


                                               Destination
                                            ConnectionFactory
                                               Messages#


 BundleActivator   Producer

                                                                    OSGi Config Admin
  http://www.java.net/blog/ss141213/archive/2010/04/21/osgijmsmdb-example


                                                                                        53
Extending GlassFish v3
    Using Spring dm Container


                                                            • Simple Spring bean
                                                              implementing the
                                                              service
                                                            • Invoke the service
                                                              from a servlet using
                                                              standard @Resource
                                                              injection
                                                            • Single runtime for
                                                              both Spring and full
                                                              Java EE
http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4


                                                                                   54
Upcoming
  OSGi & Java EE Integration in 3.1

• With JPA
  • Entities + persistence.xml bundled as OSGi bundle
• EE resources like JDBC, JavaMail, or JMS resource
  available in OSGi service registry
• With CDI& JAX-RS




                                                        55
Upcoming
     OSGi & Java EE Integration in 3.1

  • GlassFish can be embedded in OSGi and non-OSGi
    runtime
  • OSGi Administration
     • Apache Gogo Shell – Scripting environment (RFC #147)
        • Scripting, Piping, Variables, ...
        • Closures, Dynamic method invocations, ...
     • OSGi Web Console – Web-front end
  • OBR Integration – Deployment can resolve
    dependencies via OBR



http://wiki.glassfish.java.net/attach/V3FunctionalSpecs/GFv3.1-OSGi-onepager-v0.2.txt


                                                                                        56
References


• glassfish.org
• blogs.sun.com/theaquarium
• oracle.com/goto/glassfish
• glassfish.org/roadmap
• Follow @glassfish
• OSGi/GlassFish Dashboard:
 wikis.sun.com/display/GlassFish/OSGI



                                        57
<Insert Picture Here>




OSGi & Java EE in GlassFish
Arun Gupta, Java EE & GlassFish Guy
blogs.sun.com/arungupta, @arungupta

More Related Content

PDF
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
PDF
GlassFish 3.1 at JCertif 2011
PDF
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
PDF
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
PDF
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
PDF
GlassFish & Java EE Business Update @ CEJUG
PDF
Running your Java EE applications in the Cloud
PDF
The State of Java under Oracle at JCertif 2011
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
GlassFish 3.1 at JCertif 2011
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
GlassFish & Java EE Business Update @ CEJUG
Running your Java EE applications in the Cloud
The State of Java under Oracle at JCertif 2011

What's hot (20)

PDF
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
PDF
Running your Java EE 6 applications in the Cloud
PDF
GlassFish REST Administration Backend
PDF
GlassFish Community Update @ JavaOne 2011
PDF
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
PDF
Java Summit Chennai: Java EE 7
PDF
Java Summit Chennai: JAX-RS 2.0
PDF
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
PDF
GlassFish OSGi Server
PDF
TDC 2011: OSGi-enabled Java EE Application
PDF
OSGi and Java EE in GlassFish - Tech Days 2010 India
PDF
Java EE 6 and GlassFish portfolio
PDF
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
PDF
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
PDF
Java EE 6 workshop at Dallas Tech Fest 2011
PDF
The Java EE 7 Platform: Developing for the Cloud
PDF
Java EE 6 Component Model Explained
PDF
Boston 2011 OTN Developer Days - GlassFish
PDF
GlassFish Server 3.1: Deploying your Java EE 6 Applications
PDF
Java EE 6 Clustering with Glassfish 3.1
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
Running your Java EE 6 applications in the Cloud
GlassFish REST Administration Backend
GlassFish Community Update @ JavaOne 2011
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
Java Summit Chennai: Java EE 7
Java Summit Chennai: JAX-RS 2.0
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
GlassFish OSGi Server
TDC 2011: OSGi-enabled Java EE Application
OSGi and Java EE in GlassFish - Tech Days 2010 India
Java EE 6 and GlassFish portfolio
GlassFish 3.1 – Simplifying your Java EE 6 Development and Deployment @ JAX L...
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
Java EE 6 workshop at Dallas Tech Fest 2011
The Java EE 7 Platform: Developing for the Cloud
Java EE 6 Component Model Explained
Boston 2011 OTN Developer Days - GlassFish
GlassFish Server 3.1: Deploying your Java EE 6 Applications
Java EE 6 Clustering with Glassfish 3.1
Ad

Similar to OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010 (20)

PDF
OSGi & Java EE in GlassFish - Best of both worlds
PDF
OSGi-enabled Java EE applications in GlassFish
PDF
OSGi-enabled Java EE Applications using GlassFish
PDF
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
PDF
GlassFish v3 Prelude Aquarium Paris
PDF
Andrei Niculae - glassfish - 24mai2011
PDF
OSGi tech session
PDF
Glassfish Overview 29 Oktober 2009
PDF
GlassFish v3, OSGi Equinox Felix
PDF
Glassfish An Introduction
PDF
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
PDF
Enterprise OSGi at eBay
PDF
GlassFish v3 : En Route Java EE 6
PDF
Whats Cool in Java E 6
PPTX
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
ODP
Liferay Module Framework
PDF
Introduction To OSGi
PDF
Glassfish V2.1 Harpreet Singh
PDF
JavaOne 2010: OSGI Migrat
PDF
Glass Fishv3 March2010
OSGi & Java EE in GlassFish - Best of both worlds
OSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE Applications using GlassFish
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
GlassFish v3 Prelude Aquarium Paris
Andrei Niculae - glassfish - 24mai2011
OSGi tech session
Glassfish Overview 29 Oktober 2009
GlassFish v3, OSGi Equinox Felix
Glassfish An Introduction
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development
Enterprise OSGi at eBay
GlassFish v3 : En Route Java EE 6
Whats Cool in Java E 6
EclipseCON2012 - Enterprise OSGi for Earthlings: Meet Eclipse Libra
Liferay Module Framework
Introduction To OSGi
Glassfish V2.1 Harpreet Singh
JavaOne 2010: OSGI Migrat
Glass Fishv3 March2010
Ad

More from Arun Gupta (20)

PDF
5 Skills To Force Multiply Technical Talents.pdf
PPTX
Machine Learning using Kubernetes - AI Conclave 2019
PDF
Machine Learning using Kubeflow and Kubernetes
PPTX
Secure and Fast microVM for Serverless Computing using Firecracker
PPTX
Building Java in the Open - j.Day at OSCON 2019
PPTX
Why Amazon Cares about Open Source
PDF
Machine learning using Kubernetes
PDF
Building Cloud Native Applications
PDF
Chaos Engineering with Kubernetes
PDF
How to be a mentor to bring more girls to STEAM
PDF
Java in a World of Containers - DockerCon 2018
PPTX
The Serverless Tidal Wave - SwampUP 2018 Keynote
PDF
Introduction to Amazon EKS - KubeCon 2018
PDF
Mastering Kubernetes on AWS - Tel Aviv Summit
PDF
Top 10 Technology Trends Changing Developer's Landscape
PDF
Container Landscape in 2017
PDF
Java EE and NoSQL using JBoss EAP 7 and OpenShift
PDF
Docker, Kubernetes, and Mesos recipes for Java developers
PDF
Thanks Managers!
PDF
Migrate your traditional VM-based Clusters to Containers
5 Skills To Force Multiply Technical Talents.pdf
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubeflow and Kubernetes
Secure and Fast microVM for Serverless Computing using Firecracker
Building Java in the Open - j.Day at OSCON 2019
Why Amazon Cares about Open Source
Machine learning using Kubernetes
Building Cloud Native Applications
Chaos Engineering with Kubernetes
How to be a mentor to bring more girls to STEAM
Java in a World of Containers - DockerCon 2018
The Serverless Tidal Wave - SwampUP 2018 Keynote
Introduction to Amazon EKS - KubeCon 2018
Mastering Kubernetes on AWS - Tel Aviv Summit
Top 10 Technology Trends Changing Developer's Landscape
Container Landscape in 2017
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Docker, Kubernetes, and Mesos recipes for Java developers
Thanks Managers!
Migrate your traditional VM-based Clusters to Containers

Recently uploaded (20)

PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Empathic Computing: Creating Shared Understanding
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Electronic commerce courselecture one. Pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Advanced methodologies resolving dimensionality complications for autism neur...
Spectral efficient network and resource selection model in 5G networks
NewMind AI Monthly Chronicles - July 2025
Chapter 3 Spatial Domain Image Processing.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Diabetes mellitus diagnosis method based random forest with bat algorithm
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Empathic Computing: Creating Shared Understanding

OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010

  • 1. <Insert Picture Here> OSGi & Java EE in GlassFish Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta
  • 2. The following/preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 2
  • 3. 3
  • 4. 4
  • 5. 5
  • 6. Generally complex ... • 13 assembly missions • 16 pressurized modules • 35k cubic feet • 400 metric tons ~ 400K kg ~ 882K lbs • 173 – 286 miles above Earth • Average speed: 17,227 mph • 15.7 orbits/day • Estimated cost: $157 billion 6
  • 7. 7
  • 8. The OSGi Alliance is a worldwide consortium of technology innovators that advances a proven and mature process to assure interoperability of applications and services based on its component integration platform. 8
  • 9. OSGi Alliance provides ... • Specifications • Reference Implementation • Test Suites • Certifications 9
  • 10. What is OSGi Specification ? • Delivered by OSGi Alliance • Originally for embedded devices, set top boxes, network • Architecture for modular application development in Java • Breaks applications into “modules” or “bundles” • Can install, uninstall, start, and stop each bundle dynamically without restarting container • Multiple versions are supported • Dependencies explicitly defined with clear boundaries 10
  • 11. “JAR Hell” • JAR is a build-time and deploy-time concept, not run-time • Based on the ZIP file format • No metadata to indicate dependencies • Multiple versions of JARs cannot be loaded • All “public” classes are public • Access modifiers are for packages, not JAR 11
  • 12. OSGi Layers Service Life Cycle Module Execution Environment 12
  • 13. OSGi Bundle – Just a JAR File! Export-Package Import-Package Java Classes, Static Files, … Bundle-ClassPath (bundle private) ... META-INF/MANIFEST.MF Persistent OSGI-OPT (docs, source code, ...) Atomic 13
  • 14. Bundle is identified by ... • Bundle Identifier • Unique for the lifetime • getBundleId() • Bundle Location • Unique location of the bundle • getLocation() • Bundle Symbolic Name and Version • Globally unique identifier • getSymbolicName(), getVersion() 14
  • 15. Java Classes, Static Files, ... Service META-INF/MANIFEST.MF ... Export-Package ... Client Java Classes, Static Files, ... META-INF/MANIFEST.MF ... Import-Package ... 15
  • 16. Interaction between layers register / unregister get / unget Service manage start / stop Life Cycle Bundle Bundle install uninstall classload Module execute EE 16
  • 17. Bundle State Diagram update refresh install INSTALLED STARTING update rt resolve sta refresh RESOLVED ACTIVE uninstall stop STOPPING Each bundle installation is new 17
  • 18. OSGi Containers http://stackoverflow.com/questions/560794/what-osgi-container-do-you-recommend 18
  • 19. What is GlassFish ? • GlassFish is an open source community • Delivers Java EE Reference Implementation • GlassFish Server Open Source Edition - glassfish.org • Oracle GlassFish Server - oracle.com/goto/glassfish • Tooling: NetBeans, Eclipse, IntelliJ • GlassFish 3.1 – currently developed • Modular, Embeddable, Extensible • High Availability, Clustering, Centralized Administration 19
  • 20. GlassFish Distributions Distribution License Features GlassFish Open Source CDDL & • Java EE 6 Compatibility Edition 3.0 GPLv2 • No Clustering • Clustering planned in 3.1 • mod_jk for load balancing GlassFish Open Source CDDL & • Java EE 5 Compatibility Edition 2.1.1 GPLv2 • In memory replication • mod_loadbalancer Oracle GlassFish Server 3.0 Commercial • GlassFish Open Source Edition 3.0 • GlassFish Server Control Clustering • Clustering planned in 3.1 Coming Soon! Oracle GlassFish Server Commercial • GlassFish Open Source Edition 2.1.1 2.1.1 • Enterprise Manager • HADB 20
  • 21. GlassFish Roadmap Detail 21 ©2010 Oracle Corporation
  • 22. OSGi in GlassFish • GlassFish runs on top of OSGi • Felix is default, also runs on Equinox & Knopflerfish • Runs in an existing shell • 200+ bundles in v3 • All GlassFish modules are OSGi bundles • No OSGi APIs are used in GlassFish • HK2 provides abstraction layer http://blogs.sun.com/arungupta/entry/totd_103_glassfish_v3_with http://blogs.sun.com/arungupta/entry/totd_127_embedding_glassfish_in 22
  • 23. GlassFish: Modular Platform REST OpenMQ WebSpace Server Scripting OpenESB OpenSSO Web Services JMS Portal Web Connection Java Web Services JSF EJB Container Application Container Container Pooling (JCA) Persistence Interop Management Console Update Center Management CLI Naming Grizzly Framework Monitoring/ Injection Service Config Deploy Manager Security Monitor Configuration Cluster Serviceability/ Logging GlassFish V3 Core Transaction Security (Module Subsystem) Service Service Deployment Clustering OSGi Java SE 23
  • 24. GlassFish v3 Runtime with OSGi GlassFish V3 modules Random OSGi Bundle (OSGi + extra metadata) Service OSGi HK2 Service layer Mapper Service Layer OSGi Bundle Management 24
  • 25. Benefits of OSGi for GlassFish • Demands and enforces stronger modularity • Enables custom tailored App server • Lazy loading based on usage patterns • Open for all JVM based technologies • Native deployment of JRuby-on-Rails application • Successfully maintained quick startup • Available to GlassFish developers and users 25
  • 26. Create an OSGi Bundle – Maven • Create a Maven project • Implement “BundleActivator” • Update “pom.xml” • Change packaging to “bundle” • Add dependencies on OSGI APIs • Use “maven-bundle-plugin” to package • Build the bundle http://blogs.sun.com/arungupta/entry/totd_36_deploy_osgi_bundles 26
  • 27. Create an OSGi bundle – NetBeans http://blogs.sun.com/arungupta/entry/totd_125_creating_an_osgi 27
  • 28. Create an OSGi bundle – NetBeans http://blogs.sun.com/arungupta/entry/totd_125_creating_an_osgi 28
  • 29. Create an OSGi bundle – Eclipse http://blogs.sun.com/arungupta/entry/totd_126_creating_an_osgi 29
  • 30. OSGi Bundles in GlassFish • asadmin deploy –type osgi • “cp”/“rm” glassfish/domains/domain1/autodeploy/bundles • telnet localhost 6666 • Apache Felix Web Console • REST Console bundle • Perl-based shell (Osgish) • VisualVM OSGi Plugin • Supports OBR • Discover and deploy dependencies together http://blogs.sun.com/arungupta/entry/totd_118_managing_osgi_bundles 30
  • 31. 31
  • 32. Dynamic Discovery of OSGi service OSGi Export-Package API Service Registry Import-Package Impl Bundle-Activator Service Import-Package Trackerasdsadasdsd cker Client Service Tra Bundle-Activator Filters http://blogs.sun.com/arungupta/entry/totd_131_dynamic_osgi_services 32
  • 33. Why OSGi in Enterprise Apps ? • Improved modularity • Reusable bundles • Dependencies are more visible • Better isolation / Cleaner class loading model • Better version control • Faster deployment cycle • Better tools for deployment • Observable bundle life cycle • Service Tracking • Criteria-based service selection 33
  • 34. Why Java EE in Enterprise Apps ? • Better API (JPA, JTA, JAXB, JNDI) • Better component model (Servlet, EJB, JAX-RS) • Better frameworks (JSF, CDI) • Ease-of-use (Annotations, Convention-over- configuration) • Platform provided integrated infrastructure services • Transaction, Security, Persistence, Remoting, ... • Many more reasons ... 34
  • 35. 35
  • 36. OSGi Enterprise Expert Group The OSGi Enterprise Expert Group (EEG) is chartered to define the technical requirements and specifications to tailor and extend the OSGi Service Platform to address information technology software infrastructure use cases found in enterprise business scenarios. http://www.osgi.org/EEG/HomePage 36
  • 37. Current Status • Released OSGi Service Platform Enterprise Specification 4.2 in 2010 • Open Source Efforts • GlassFish • Project Aries • Eclipse Gemini 37
  • 38. Hybrid Applications “A hybrid application is an OSGi bundle as well as a Java EE archive and hence has both an OSGi bundle context and Java EE context at runtime and can leverage capabilities of both the platforms.” 38
  • 39. Role of GlassFish • Provides a runtime for Hybrid Applications • Implements Java EE related OSGi services and standards • Don't have to assemble the bits • OSGi is no longer under the cover • Raises visibility from GlassFish developers to users 39
  • 40. OSGi EEG Focus • Scaling, including multi-container and multi-process environments • Distributed and/or federated service model for • Multiple Service Platforms • External, heterogeneous systems • Requirements for extensions to the OSGi publish/f nd/bind service model i • Enterprise-class life cycle and conf guration i management • Integration of established Java EE technology into OSGi 40
  • 41. Why Hybrid Apps ? Best of both worlds!!! Why do you want to learn new APIs ? 41
  • 42. Role of GlassFish • Provides a runtime for Hybrid Applications • Implements Java EE related OSGi services and standards • Don't have to assemble the bits • OSGi is no longer under the cover • Raises visibility from GlassFish developers to users 42
  • 43. OSGi Compendium Specs in GlassFish • OSGi/Web Application (rfc #66) • OSGi/JPA (rfc #143) • OSGi/JDBC (rfc #122) • OSGi/JTA (rfc #98) • OSGi/JNDI (rfc #142) • OSGi/HTTP Service 43
  • 44. OSGi/Web Application (rfc #66) • Web Application Bundle (WAB) • WAR + OSGi + Web-ContextPath Header • Can use all enterprise APIs include JPA with lazy loading • Sample manifest: Manifest-Version: 1.0 Import-Package: javax.servlet.http; javax.persistence Bundle-ClassPath: WEB-INF/classes/,WEB-INF/lib/entities.jar Bundle-Version: 1.0 Bundle-ManifestVersion: 2 Web-ContextPath: /hello Bundle-SymbolicName: test.hellowab • Wrapped WAR Support • webbundle: URL scheme 44
  • 45. OSGi Declarative Services • Complications of Publish/Find/Bind • Long startup time • Memory footprint • Complex service programming model • OSGi services in Java EE @Resource(mappedName=”osgiName”) SomeOSGiService osgiService; • JNDI Lookup • Portable, no OSGi dependencies in application • Exported APIs visible to Java EE apps 45
  • 46. OSGi Declarative Service <scr:component enabled="true" name="hello-service"> <implementation class="org.glassfish.samples.osgi.helloservice.impl.HelloImpl"/> <service servicefactory="false"> OSGI-INF/ <provide interface="org.glassfish.samples.osgi.helloservice.api.HelloService"/> </service> serviceComponents.xml <property name="service.pid" value="hello-service"/> </scr:component> Export-Package API Servlet Client ... import org.glassfish.samples.osgi.helloservice.api.HelloService; HelloImpl @WebServlet(urlPatterns={"/HelloClient"}) public class HelloClient extends HttpServlet { @Resource(mappedName="hello-service") HelloService helloService; @Resource(mappedName="howdy-service") HowdyImpl HelloService howdyService; ... http://blogs.sun.com/arungupta/entry/totd_124_osgi_declarative_services 46
  • 47. OSGi Declarative Services import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; import org.glassfish.samples.osgi.helloservice.api.HelloService; maven- bundle- @Component(name="hello-service") plugin @Service public class HelloImpl implements HelloService { maven- public String sayHello(String name) { scr- return "Hello " + name; plugin } } http://blogs.sun.com/arungupta/entry/totd_124_osgi_declarative_services 47
  • 48. JAX-WS & OSGi Artifacts WSDL JAX-WS JAX-WS Endpoint Client Business Method 48
  • 49. JAX-WS & OSGi Artifacts WSDL JAX-WS JAX-WS Endpoint Client Business Delegate Method Query Registry OSGi OSGi Register Service Service Bundle Registry Business Method http://blogs.sun.com/arungupta/entry/totd_130_invoking_a_osgi 49
  • 50. OSGi & EJB • Export EJB as OSGi services • Pure OSGi component can discover/invoke the service • Advantages • Declarative security, Transaction, Context dependency, Injection, … are available to non-EE components • TX context from pure OSGi bundle propagates to invoked EJB • Ditto for security and persistence context 50
  • 51. OSGi & EJB Client OSGi Service Registry login Export-Package API register Export-EJB Impl Container-managed JPA LoadData http://weblogs.java.net/blog/ss141213/archive/2010/03/30/ejb-osgi-service-demo-eclipsecon 51
  • 52. JavaOne 2010 Hands-on Lab (S313522) OSGi Client OSGi Service WAB EJB http://blogs.sun.com/arungupta/entry/screencast_32_osgi_enabled_java 52
  • 53. OSGi & JMS Export-EJB: None Consumer Destination ConnectionFactory Messages# BundleActivator Producer OSGi Config Admin http://www.java.net/blog/ss141213/archive/2010/04/21/osgijmsmdb-example 53
  • 54. Extending GlassFish v3 Using Spring dm Container • Simple Spring bean implementing the service • Invoke the service from a servlet using standard @Resource injection • Single runtime for both Spring and full Java EE http://blogs.sun.com/dochez/entry/glassfish_v3_extensions_part_4 54
  • 55. Upcoming OSGi & Java EE Integration in 3.1 • With JPA • Entities + persistence.xml bundled as OSGi bundle • EE resources like JDBC, JavaMail, or JMS resource available in OSGi service registry • With CDI& JAX-RS 55
  • 56. Upcoming OSGi & Java EE Integration in 3.1 • GlassFish can be embedded in OSGi and non-OSGi runtime • OSGi Administration • Apache Gogo Shell – Scripting environment (RFC #147) • Scripting, Piping, Variables, ... • Closures, Dynamic method invocations, ... • OSGi Web Console – Web-front end • OBR Integration – Deployment can resolve dependencies via OBR http://wiki.glassfish.java.net/attach/V3FunctionalSpecs/GFv3.1-OSGi-onepager-v0.2.txt 56
  • 57. References • glassfish.org • blogs.sun.com/theaquarium • oracle.com/goto/glassfish • glassfish.org/roadmap • Follow @glassfish • OSGi/GlassFish Dashboard: wikis.sun.com/display/GlassFish/OSGI 57
  • 58. <Insert Picture Here> OSGi & Java EE in GlassFish Arun Gupta, Java EE & GlassFish Guy blogs.sun.com/arungupta, @arungupta