Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

OSGi & Java EE: A hybrid approach to Enterprise Java Application Development, Sahoo

on

  • 4,592 views

There's a considerable activity in the enterprise Java community about the use of OSGi in Java EE applications. We call such applications "hybrid applications." With hybrid applications, developers ...

There's a considerable activity in the enterprise Java community about the use of OSGi in Java EE applications. We call such applications "hybrid applications." With hybrid applications, developers can continue to build standard and familiar enterprise application components, such as Java Servlets and EJBs, and take full advantage of:

* Features such as modularity/dependency management, service dynamism, and more provided by OSGi
* Infrastructure services such as transaction management, security, persistence, and more offered by Java EE

This session will present the current state of affairs, discuss the benefits of hybrid applications, and demonstrate development and deployment of such applications.
GlassFish will be used for demonstration.

Statistics

Views

Total Views
4,592
Views on SlideShare
4,592
Embed Views
0

Actions

Likes
2
Downloads
130
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    OSGi & Java EE: A hybrid approach to Enterprise Java Application Development, Sahoo OSGi & Java EE: A hybrid approach to Enterprise Java Application Development, Sahoo Presentation Transcript

    • <Insert Picture Here> OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development Sanjeeb Sahoo Staff Engineer, Sun Microsystems India Pvt. Ltd. 1
    • Safe Harbor Statements The following 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
    • The 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. 3
    • Agenda • OSGi 101 <Insert Picture Here> • OSGi meets Java EE – Hybrid Applications • Advanced usecases • Hybrid Application Demo • Q&A 4
    • Agenda • OSGi 101 <Insert Picture Here> • OSGi meets Java EE – Hybrid Applications • Advanced usecases • Hybrid Application Demo • Q&A 5
    • OSGi Service oriented dynamic module system for Java 6
    • OSGi Layers 7
    • Module Layer • Bundle – a unit of modularity in OSGi • Encapsulation • Lifecycle independent of the JVM • Versionable • Packaged as a JAR (classes + Manifest with OSGi metadata) • Very explicit dependency specification • Well defined dependency resolution rules 8
    • OSGi Metadata Bundle-SymbolicName: com.acme.hello.startup Bundle-Name: Hello World OSGi Sample Bundle-Version: 1.0.1 Bundle-ManifestVersion: 2 Bundle-Activator: com.acme.hello.startup.MyActivator Export-Package: com.acme.hello.startup;version=1.0.0 Import-Package: org.osgi.framework;version=1.3 9
    • Classloading in OSGi Image from the OSGi R4 Core Specification 10
    • Lifecycle Layer • Provides an API to manage bundles – BundleContext.install – BundleContext.uninstall – Bundle.update • BundleActivator • BundleListener – listen to BundleEvents – Synchronous – Asynchronous 11
    • Bundle Lifecycle Image from the OSGi R4 Core Specification 12
    • Service Layer • In-VM SOA • Service Registry – Register – Unregister • Service is a POJO • Service Dynamism – Service tracking • Service Discovery – LDAP filter based queries 13
    • Interactions between OSGi Layers Image from the OSGi R4 Core Specification 14
    • OSGi benefits – a recap • Layered approach • Modularity – Enforces modularity – Ensures class-space consistency – Enables component reuse – Supports versioning and evolution • Dynamism – Bundles – Services • Ease of deployment and management – OBR • Bundle deployment order is not relevant – Faster deployment cycle 15
    • OSGi meets Java EE 16
    • Agenda • OSGi 101 <Insert Picture Here> • OSGi meets Java EE – Hybrid Applications • Advanced usecases • Hybrid Application Demo • Q&A 17
    • Java EE Platform of choice for enterprise applications • Widely used APIs (JPA, JTA, JAXB, JNDI) • Component Models (Servlet, EJB, JAX-RS) • Frameworks (JSF, CDI) • Ease of Use (Annotations, Convention over Configuration) • Platform provided infrastructure services (Transaction, Security, Persistence, Remoting) • Tools (IDE, Management, Monitoring) • Ubiquitous deployment platform for enterprise applications 18
    • Hybrid Applications Meeting of the two worlds • OSGi + Java EE = Hybrid application • Hybrid application – An OSGi bundle – And a Java EE Archive • Leverage the capabilities of both the platforms – Enterprise applications can now • be built as modular OSGi bundles • use OBR, Config Admin, service tracking, etc. – OSGi bundles can now use Java EE services like JTA, JPA, etc. 19
    • Current State • OSGi Enterprise Expert Group (EEG) – Relased OSGi Service Platform Enterprise Specification 4.2 in 2010 • Open source efforts – Project GlassFish – Project Aries – Eclipse Gemini 20
    • OSGi/Web Application (WAB) • Web Application Bundle (WAB) – WAR + OSGi metadata + Web-ContextPath header • Can use all enterprise APIs (like JPA, JTA) • Wrapped WAR support – webbundle: URL scheme 21
    • OSGi Metadata of a WAB Bundle-SymbolicName: com.acme.hellowab Bundle-Name: Hello World OSGi Web Application Bundle-Version: 1.0.0 Bundle-ManifestVersion: 2 Bundle-Activator: com.acme.hellowab.MyActivator Import-Package: javax.servlet; javax.servlet.http; version=3.0, org.osgi.framework; version=1.5 Bundle-ClassPath: WEB-INF/classes, WEB-INF/lib/foo.jar Web-ContextPath: /hello 22
    • Hybrid application bundle lifecycle 23
    • Enterprise OSGi Specifications • OSGi/Web Application • OSGi/JPA • OSGi/JDBC • OSGi/JTA • OSGi/JNDI • OSGi/HTTP Service • OSGi Blueprint Service 24
    • EE APIs in OSGi • OSGi/JDBC – JDBC driver as DataSourceFactory – Dynamic discovery of driver details – Multiple versions of same driver • OSGi/JTA – JTA artifacts available as OSGi Services • OSGi/JPA – Enhancement of JPA entities at runtime – Same packaging rules as JPA and also deploy entities as a bundle – Shared Persistence Unit and thereby shared second level cache 25
    • Tools • BND (http://www.aqute.biz/Code/Bnd) – de-facto tool for OSGi metadata generation – maven-bundle-plugin – Ant task • IDE – Eclipse – NetBeans – IntelliJ IDEA 26
    • Advanced Usecases 27
    • Agenda • OSGi 101 <Insert Picture Here> • OSGi meets Java EE – Hybrid Applications • Advanced usecases • Hybrid Application Demo • Q&A 28
    • OSGi/EJB Application • Allows you to develop managed, transactional, secure OSGi services with very little knowledge of OSGi • Make your existing EJB service available to OSGi clients with little effort • Achieved through simple manifest metadata – Export-EJB: ALL/None/<names of stateless local EJB> 29
    • OSGi Metadata of an OSGi/EJB bundle Bundle-SymbolicName: com.acme.helloEjbOsgi Bundle-Name: Hello World OSGi EJB Bundle Bundle-Version: 1.0.0 Bundle-ManifestVersion: 2 Import-Package: javax.ejb; version=3.0, Export-EJB: ALL 30
    • CDI • Brings type-safe dependency injection to EE platform – Strong typing and loose coupling • Well defined life cycle of stateful objects bound to life cycle contexts • Ability to decorate and intercept injected Beans • An event notification model • An ability to develop portable extensions that integrates with the container to extend the runtime 31
    • GlassFish CDI/OSGi Portable Extension • Use of CDI for type safe injection of OSGi services @WebServlet(urlPatterns = “/login”) public class FooServlet implements HttpServlet {     @Inject      @org.glassfish.osgicdi.OSGiService(           dynamic=”true”,            timeout = 200,            serviceCriteria=<an ldap query >)     FooService foo; } 32
    • Demo: Putting them together 33
    • Demo schematic • WAB Simple Simple Advanced OSGi WAB WAB • JPA- LAZY loading Bundle • EJB as Service • OSGi Service Injection OSGi Service • OBR • Security/Transaction Simple EJB OSGi OSGi Context propagation Service Service 34
    • Call To Action • Want to build hybrid applications? – Try our tutorial at http://tinyurl.com/osgieehol • Want to try out? – Use GlassFish 3.1 trunk builds from http://glassfish.org • Questions? – users@glassfish.dev.java.net 35
    • References • OSGi Service Platform Core and Enterprise Specification 4.2 – http://www.osgi.org • Project GlassFish – http://glassfish.org • Hybrid application samples – http://wikis.sun.com/display/GlassFish/BlogsGfOsgi 36
    • Agenda • OSGi 101 <Insert Picture Here> • OSGi meets Java EE – Hybrid Applications • Advanced usecases • Hybrid Application Demo • Q&A 37
    • <Insert Picture Here> OSGi and Java EE: A Hybrid Approach to Enterprise Java Application Development Sanjeeb Sahoo Staff Engineer, Sun Microsystems India Pvt. Ltd. 38