The document discusses using OSGi and Java EE together for enterprise application development. It provides an overview of OSGi including modules, services, and lifecycle. OSGi allows Java EE applications to be built as bundles that can leverage Java EE services. Specifications integrate technologies like JPA, JTA, and web applications. A demo shows lazy loading with JPA, EJB as a service, and security/transaction context propagation. More advanced topics include CDI injection of OSGi services and demos. The hybrid approach provides modularity, dynamism, and ease of deployment benefits for enterprise applications.
2. <Insert Picture Here>
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application
Development
Sanjeeb Sahoo and Sivakumar Thyagarajan
Staff Engineers, Sun Microsystems India Pvt. Ltd.
9. 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
9
14. Service Layer
• In-VM SOA
• Service Registry
– Register
– Unregister
• Service is a POJO
• Service Dynamism
– Service tracking
• Service Discovery
– LDAP filter based queries
14
20. 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
20
21. 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 OSGi bundles
– OSGi bundles can now use Java EE services
21
22. 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
22
25. 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
25
26. 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>
26
27. 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
27
32. 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
32
33. 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;
}
33
35. Call To Action
• Want to build hybrid applications? Come to our HOL
– ID#: S313522, tomorrow at 12:00 in Plaza A of Hilton San
Francisco
• Want to try out?
– Use GlassFish 3.1 trunk builds from http://glassfish.org
• Questions?
– users@glassfish.dev.java.net
35
38. 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.
38
39. 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.
39
40. <Insert Picture Here>
OSGi and Java EE: A Hybrid Approach to Enterprise Java Application
Development
{sahoo, sivakumart}@sun.com
Staff Engineers, Sun Microsystems India Pvt. Ltd.