SlideShare a Scribd company logo
1 of 56
Download to read offline
<Insert Picture Here>




OSGi-enabled Java EE Applications in GlassFish
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.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
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


                                         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.


                                    9
OSGi Alliance provides ...

• Specifications
• Reference Implementation
• Test Suites
• Certifications




                               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

                                                          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



                                                 12
OSGi Layers

                Service



               Life Cycle



                Module



         Execution Environment


                                 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


                                                  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()




                                      15
Java Classes, Static Files, ...    Service

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

                            Java Classes, Static Files, ...

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


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

                start / stop
                                   Life Cycle
  Bundle




                                        install
                                        uninstall
                classload
                                    Module


                execute
                                      EE


                                                    17
Bundle State Diagram

    update
    refresh                     install


                         INSTALLED
                                                  STARTING
               update                        rt
                             resolv       sta
               refresh       e

                         RESOLVED                  ACTIVE

                  uninstal                            stop
                  l
                                                  STOPPING



Each bundle installation is new

                                                             18
OSGi Containers




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


                                                                                     19
OSGi in GlassFish
• GlassFish runs on top of OSGi
• Felix is default, also runs on Equinox &
  Knopflerfish
    • Runs in an existing shell
    • 260+ bundles in 3.1
• All GlassFish modules are OSGi bundles
• No OSGi APIs are used in GlassFish
    • HK2 provides abstraction layer

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



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


   Web
   Web                              Connection
                                    Connection             Java
                                                            Java                              Web Services
                                                                                              Web Services
                       JSF
                       JSF                                                EJB Container
                                                                          EJB Container
                       Application Container
 Container
 Container                         Pooling (JCA)
                                   Pooling (JCA)        Persistence
                                                        Persistence                             Interop
                                                                                                 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
                                             OSGi
                                             Java SE
                                             Java SE

                                                                                                            21
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




                                                     22
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


                                                      23
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.oracle.com/arungupta/entry/totd_36_deploy_osgi_bundles



                                                                         24
Create an OSGi bundle – NetBeans




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


                                                                    25
Create an OSGi bundle – NetBeans




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


                                                                    26
Create an OSGi bundle – Eclipse




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


                                                                    27
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.oracle.com/arungupta/entry/totd_118_managing_osgi_bundles



                                                                         28
29
Dynamic Discovery of OSGi service

                                                                           OSGi
   Export-Package         API                                             Service
                                                                          Registry

    Import-Package
                         Impl
   Bundle-Activator



    Import-Package
                                                                cker
                        Client                       Service Tra
   Bundle-Activator

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


                                                                                     30
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


                                                       31
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 ...



                                                        32
33
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


                                               34
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/find/bind service model
• Enterprise-class life cycle and configuration
  management
• Integration of established Java EE technology into
  OSGi
                                                         35
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.”
                                     36
Why Hybrid Apps ?




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




                                 37
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




                                                      38
OSGi Compendium Specs in GlassFish

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




 http://wikis.sun.com/display/GlassFish/3.1OSGi



                                                  39
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


                                                                  40
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



                                                    41
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.oracle.com/arungupta/entry/totd_124_osgi_declarative_services


                                                                                                                                42
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.oracle.com/arungupta/entry/totd_124_osgi_declarative_services



                                                                                       43
JAX-WS & OSGi




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




                                            44
JAX-WS & OSGi

                     Artifacts                                     WSDL
                                                                          JAX-WS
    JAX-WS                                                                Endpoint
     Client                                                                   Business
                                                                              Delegate
                                                                               Method
                                              Query
                                              Registr
                                              y

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


                                                                                         45
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


                                                                                               46
OSGi + EJB

• Export EJB as OSGi services

  Export-EJB: ALL/None/<names>
• Pure OSGi components can discover/invoke
• Advantages
  • Declarative security, transaction, CDI, … are available
   to non-EE components
• Tx context from pure OSGi bundle propagates
  to invoked EJB
  • Ditto for security and persistence context



                                                              47
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


                                                                                       48
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.oracle.com/dochez/entry/glassfish_v3_extensions_part_4


                                                                                   49
OSGi + CDI

                                                                           OSGi
  Export-Package         API                                              Service
                                                                          Registry

   Import-Package
                        Impl
  Bundle-Activator



   Import-Package
                                                              cker
                                                                ice
                       Client                       Ser SGiServ
                                                    @OviceTra
  Bundle-Activator

                                                                Filters
http://blogs.oracle.com/arungupta/entry/totd_154_dynamic_osgi_services


                                                                                     50
OSGi + CDI

ServiceTracker tracker = new ServiceTracker(context,
Hello.class.getName(), null);
tracker.open();
Hello hello = (Hello) tracker.getService();
System.out.println(hello.sayHello("Duke"));

@Inject @OSGiService(dynamic=true) Hello hello;
System.out.println(hello.sayHello("Duke"));

• Injected reference is never null because
  of CDI proxies

                                                       51
OSGi + JPA

• Enhancement of JPA entities at runtime
• Entities + persistence.xml bundled as OSGi
  bundle
• EntityManagerFactory available as

  @Inject @OSGiService
• Shared persistence unit and there by shared second
  level cache




                                                       52
OSGi + EE Resources

• Define a DataSource, JavaMail, or JMS resource
  available in Admin Console
• Corresponding OSGi service is already available
• Resource/Services are dynamic




                                                    53
JavaOne 2010 / EclipseCon 2011
    Hands-on Lab




NetBeans - http://blogs.oracle.com/arungupta/entry/s313522_instructions_for_osgi_enabled
Eclipse - http://blogs.oracle.com/arungupta/entry/screencast_38_developing_osgi_enabled


                                                                                       54
References
• oracle.com/javaee
• glassfish.org
• oracle.com/goto/glassfish
• blogs.oracle.com/theaquarium
• youtube.com/GlassFishVideos
• Follow @glassfish
• http://wikis.sun.com/display/GlassFish/OSGi
• http://wikis.sun.com/download/attachments/20
 9655166/GF-OSGi-Features-1.0.pdf

                                            55
<Insert Picture Here>




OSGi-enabled Java EE Applications in GlassFish
Arun Gupta, Java EE & GlassFish Guy
blogs.oracle.com/arungupta, @arungupta

More Related Content

What's hot

Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationArun Gupta
 
GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011Arun Gupta
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Arun Gupta
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)Arun Gupta
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012Arun Gupta
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011Arun Gupta
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010Arun Gupta
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Arun Gupta
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0Arun Gupta
 
GIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationGIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationArun Gupta
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012Arun Gupta
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Arun Gupta
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGArun Gupta
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Arun Gupta
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book IIChuong Nguyen
 

What's hot (20)

Jfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE ApplicationJfokus 2012: PaaSing a Java EE Application
Jfokus 2012: PaaSing a Java EE Application
 
GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011GlassFish Community Update @ JavaOne 2011
GlassFish Community Update @ JavaOne 2011
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
Creating Quick and Powerful Web applications with Oracle, GlassFish and NetBe...
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012
 
GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011GlassFish 3.1 at JCertif 2011
GlassFish 3.1 at JCertif 2011
 
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
OSGi & Java EE in GlassFish @ Silicon Valley Code Camp 2010
 
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
Running your Java EE 6 applications in the Cloud @ Silicon Valley Code Camp 2010
 
GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0GIDS 2012: Java Message Service 2.0
GIDS 2012: Java Message Service 2.0
 
GIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE ApplicationGIDS 2012: PaaSing a Java EE Application
GIDS 2012: PaaSing a Java EE Application
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
 
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...
 
GlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUGGlassFish & Java EE Business Update @ CEJUG
GlassFish & Java EE Business Update @ CEJUG
 
Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0Java Summit Chennai: JAX-RS 2.0
Java Summit Chennai: JAX-RS 2.0
 
01.egovFrame Training Book II
01.egovFrame Training Book II01.egovFrame Training Book II
01.egovFrame Training Book II
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 

Similar to TDC 2011: OSGi-enabled Java EE Application

OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011Arun Gupta
 
OSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishOSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishArun Gupta
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishArun Gupta
 
OSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsOSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsArun Gupta
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaArun Gupta
 
Polyglot OSGi
Polyglot OSGiPolyglot OSGi
Polyglot OSGiMatt Stine
 
Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Charles Moulliard
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopArun Gupta
 
Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010Stephan Janssen
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overviewsbobde
 
Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBayTony Ng
 
Liferay Module Framework
Liferay Module FrameworkLiferay Module Framework
Liferay Module FrameworkMiguel Pastor
 
Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid ApplicationsAndreas Enbohm
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouJohn Pape
 
An introduction to OSGi
An introduction to OSGi An introduction to OSGi
An introduction to OSGi Andrea Chiodoni
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and VirgoHristo Iliev
 
OSGi Best Practices - Tim Ward
OSGi Best Practices - Tim WardOSGi Best Practices - Tim Ward
OSGi Best Practices - Tim Wardmfrancis
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Arun Gupta
 
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache AriesOSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Ariesmfrancis
 
JavaEE6
JavaEE6JavaEE6
JavaEE6Roger Xia
 

Similar to TDC 2011: OSGi-enabled Java EE Application (20)

OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
 
OSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFishOSGi-enabled Java EE applications in GlassFish
OSGi-enabled Java EE applications in GlassFish
 
OSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFishOSGi-enabled Java EE Applications using GlassFish
OSGi-enabled Java EE Applications using GlassFish
 
OSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worldsOSGi & Java EE in GlassFish - Best of both worlds
OSGi & Java EE in GlassFish - Best of both worlds
 
OSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 IndiaOSGi and Java EE in GlassFish - Tech Days 2010 India
OSGi and Java EE in GlassFish - Tech Days 2010 India
 
Polyglot OSGi
Polyglot OSGiPolyglot OSGi
Polyglot OSGi
 
Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012
 
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 WorkshopSpark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
 
Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overview
 
Enterprise OSGi at eBay
Enterprise OSGi at eBayEnterprise OSGi at eBay
Enterprise OSGi at eBay
 
Liferay Module Framework
Liferay Module FrameworkLiferay Module Framework
Liferay Module Framework
 
Hybrid Applications
Hybrid ApplicationsHybrid Applications
Hybrid Applications
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
An introduction to OSGi
An introduction to OSGi An introduction to OSGi
An introduction to OSGi
 
Gemini WEB and Virgo
Gemini WEB and VirgoGemini WEB and Virgo
Gemini WEB and Virgo
 
OSGi Best Practices - Tim Ward
OSGi Best Practices - Tim WardOSGi Best Practices - Tim Ward
OSGi Best Practices - Tim Ward
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010
 
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache AriesOSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
OSGi Community Event 2010 - Enterprise OSGi in WebSphere and Apache Aries
 
JavaEE6
JavaEE6JavaEE6
JavaEE6
 

More from Arun Gupta

5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdf5 Skills To Force Multiply Technical Talents.pdf
5 Skills To Force Multiply Technical Talents.pdfArun Gupta
 
Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Machine Learning using Kubernetes - AI Conclave 2019
Machine Learning using Kubernetes - AI Conclave 2019Arun Gupta
 
Machine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesMachine Learning using Kubeflow and Kubernetes
Machine Learning using Kubeflow and KubernetesArun Gupta
 
Secure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerSecure and Fast microVM for Serverless Computing using Firecracker
Secure and Fast microVM for Serverless Computing using FirecrackerArun Gupta
 
Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Building Java in the Open - j.Day at OSCON 2019
Building Java in the Open - j.Day at OSCON 2019Arun Gupta
 
Why Amazon Cares about Open Source
Why Amazon Cares about Open SourceWhy Amazon Cares about Open Source
Why Amazon Cares about Open SourceArun Gupta
 
Machine learning using Kubernetes
Machine learning using KubernetesMachine learning using Kubernetes
Machine learning using KubernetesArun Gupta
 
Building Cloud Native Applications
Building Cloud Native ApplicationsBuilding Cloud Native Applications
Building Cloud Native ApplicationsArun Gupta
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with KubernetesArun Gupta
 
How to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMHow to be a mentor to bring more girls to STEAM
How to be a mentor to bring more girls to STEAMArun Gupta
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
The Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteThe Serverless Tidal Wave - SwampUP 2018 Keynote
The Serverless Tidal Wave - SwampUP 2018 KeynoteArun Gupta
 
Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Introduction to Amazon EKS - KubeCon 2018
Introduction to Amazon EKS - KubeCon 2018Arun Gupta
 
Mastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitMastering Kubernetes on AWS - Tel Aviv Summit
Mastering Kubernetes on AWS - Tel Aviv SummitArun Gupta
 
Top 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeTop 10 Technology Trends Changing Developer's Landscape
Top 10 Technology Trends Changing Developer's LandscapeArun Gupta
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017Arun Gupta
 
Java EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftJava EE and NoSQL using JBoss EAP 7 and OpenShift
Java EE and NoSQL using JBoss EAP 7 and OpenShiftArun Gupta
 
Docker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersDocker, Kubernetes, and Mesos recipes for Java developers
Docker, Kubernetes, and Mesos recipes for Java developersArun Gupta
 
Thanks Managers!
Thanks Managers!Thanks Managers!
Thanks Managers!Arun Gupta
 
Migrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersMigrate your traditional VM-based Clusters to Containers
Migrate your traditional VM-based Clusters to ContainersArun Gupta
 

More from Arun Gupta (20)

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

Recently uploaded

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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 MenDelhi Call girls
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 Nanonetsnaman860154
 

Recently uploaded (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 âś“Call Girls In Kalyan ( Mumbai ) secure service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 

TDC 2011: OSGi-enabled Java EE Application

  • 1. <Insert Picture Here> OSGi-enabled Java EE Applications in GlassFish Arun Gupta, Java EE & GlassFish Guy blogs.oracle.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. 6
  • 7. 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 7
  • 8. 8
  • 9. 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. 9
  • 10. OSGi Alliance provides ... • Specifications • Reference Implementation • Test Suites • Certifications 10
  • 11. 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 11
  • 12. “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 12
  • 13. OSGi Layers Service Life Cycle Module Execution Environment 13
  • 14. 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 14
  • 15. 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() 15
  • 16. Java Classes, Static Files, ... Service META-INF/MANIFEST.MF ... Export-Package ... Client Java Classes, Static Files, ... META-INF/MANIFEST.MF ... Import-Package ... 16
  • 17. Interaction between layers register / unregister get / unget Service manage start / stop Life Cycle Bundle install uninstall classload Module execute EE 17
  • 18. Bundle State Diagram update refresh install INSTALLED STARTING update rt resolv sta refresh e RESOLVED ACTIVE uninstal stop l STOPPING Each bundle installation is new 18
  • 19. OSGi Containers http://stackoverflow.com/questions/560794/what-osgi-container-do-you-recommend 19
  • 20. OSGi in GlassFish • GlassFish runs on top of OSGi • Felix is default, also runs on Equinox & Knopflerfish • Runs in an existing shell • 260+ bundles in 3.1 • All GlassFish modules are OSGi bundles • No OSGi APIs are used in GlassFish • HK2 provides abstraction layer http://blogs.oracle.com/arungupta/entry/totd_103_glassfish_v3_with http://blogs.oracle.com/arungupta/entry/totd_127_embedding_glassfish_in 20
  • 21. GlassFish: Modular Platform REST REST OpenMQ OpenMQ WebSpace Server WebSpace Server Scripting Scripting OpenESB OpenESB OpenSSO OpenSSO Web Services Web Services JMS JMS Portal Portal Web Web Connection Connection Java Java Web Services Web Services JSF JSF EJB Container EJB Container Application Container Container Container Pooling (JCA) Pooling (JCA) Persistence Persistence Interop 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 OSGi Java SE Java SE 21
  • 22. 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 22
  • 23. 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 23
  • 24. 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.oracle.com/arungupta/entry/totd_36_deploy_osgi_bundles 24
  • 25. Create an OSGi bundle – NetBeans http://blogs.oracle.com/arungupta/entry/totd_125_creating_an_osgi 25
  • 26. Create an OSGi bundle – NetBeans http://blogs.oracle.com/arungupta/entry/totd_125_creating_an_osgi 26
  • 27. Create an OSGi bundle – Eclipse http://blogs.oracle.com/arungupta/entry/totd_126_creating_an_osgi 27
  • 28. 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.oracle.com/arungupta/entry/totd_118_managing_osgi_bundles 28
  • 29. 29
  • 30. Dynamic Discovery of OSGi service OSGi Export-Package API Service Registry Import-Package Impl Bundle-Activator Import-Package cker Client Service Tra Bundle-Activator Filters http://blogs.oracle.com/arungupta/entry/totd_131_dynamic_osgi_services 30
  • 31. 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 31
  • 32. 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 ... 32
  • 33. 33
  • 34. 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 34
  • 35. 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/find/bind service model • Enterprise-class life cycle and configuration management • Integration of established Java EE technology into OSGi 35
  • 36. 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.” 36
  • 37. Why Hybrid Apps ? Best of both worlds!!! Why do you want to learn new APIs ? 37
  • 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 38
  • 39. OSGi Compendium Specs in GlassFish • OSGi/HTTP Service • OSGi/Web Application (rfc #66) • OSGi/JTA (rfc #98) • OSGi/JDBC (rfc #122) • OSGi/JPA (rfc #143) • OSGi/JNDI (rfc #142, coming post 3.1) http://wikis.sun.com/display/GlassFish/3.1OSGi 39
  • 40. 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 40
  • 41. 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 41
  • 42. 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.oracle.com/arungupta/entry/totd_124_osgi_declarative_services 42
  • 43. 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.oracle.com/arungupta/entry/totd_124_osgi_declarative_services 43
  • 44. JAX-WS & OSGi Artifacts WSDL JAX-WS JAX-WS Endpoint Client Business Method 44
  • 45. JAX-WS & OSGi Artifacts WSDL JAX-WS JAX-WS Endpoint Client Business Delegate Method Query Registr y OSGi OSGi Register Service Service Bundle Registry Business Method http://blogs.oracle.com/arungupta/entry/totd_130_invoking_a_osgi 45
  • 46. 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 46
  • 47. OSGi + EJB • Export EJB as OSGi services Export-EJB: ALL/None/<names> • Pure OSGi components can discover/invoke • Advantages • Declarative security, transaction, CDI, … are available to non-EE components • Tx context from pure OSGi bundle propagates to invoked EJB • Ditto for security and persistence context 47
  • 48. 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 48
  • 49. 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.oracle.com/dochez/entry/glassfish_v3_extensions_part_4 49
  • 50. OSGi + CDI OSGi Export-Package API Service Registry Import-Package Impl Bundle-Activator Import-Package cker ice Client Ser SGiServ @OviceTra Bundle-Activator Filters http://blogs.oracle.com/arungupta/entry/totd_154_dynamic_osgi_services 50
  • 51. OSGi + CDI ServiceTracker tracker = new ServiceTracker(context, Hello.class.getName(), null); tracker.open(); Hello hello = (Hello) tracker.getService(); System.out.println(hello.sayHello("Duke")); @Inject @OSGiService(dynamic=true) Hello hello; System.out.println(hello.sayHello("Duke")); • Injected reference is never null because of CDI proxies 51
  • 52. OSGi + JPA • Enhancement of JPA entities at runtime • Entities + persistence.xml bundled as OSGi bundle • EntityManagerFactory available as @Inject @OSGiService • Shared persistence unit and there by shared second level cache 52
  • 53. OSGi + EE Resources • Define a DataSource, JavaMail, or JMS resource available in Admin Console • Corresponding OSGi service is already available • Resource/Services are dynamic 53
  • 54. JavaOne 2010 / EclipseCon 2011 Hands-on Lab NetBeans - http://blogs.oracle.com/arungupta/entry/s313522_instructions_for_osgi_enabled Eclipse - http://blogs.oracle.com/arungupta/entry/screencast_38_developing_osgi_enabled 54
  • 55. References • oracle.com/javaee • glassfish.org • oracle.com/goto/glassfish • blogs.oracle.com/theaquarium • youtube.com/GlassFishVideos • Follow @glassfish • http://wikis.sun.com/display/GlassFish/OSGi • http://wikis.sun.com/download/attachments/20 9655166/GF-OSGi-Features-1.0.pdf 55
  • 56. <Insert Picture Here> OSGi-enabled Java EE Applications in GlassFish Arun Gupta, Java EE & GlassFish Guy blogs.oracle.com/arungupta, @arungupta