This 4-day workshop will provide delegates with an excellent baseline grasp of OSGi technology, from the fundamentals through to advanced and enterprise topics and is delivered by renowned OSGi developer, consultant and trainer Neil Bartlett.
On day one, you will be introduced to OSGi and learn how it meets the challenge of building modular, scalable application architectures for the Java Platform. We will review the three principal open source implementations and then dive into the construction of modules, learning how to define dependencies between them and manage versions of APIs.
Next you'll move onto OSGi Services, the lynchpin of OSGi's programming model and the key to creating flexible, reusable components. You will use the Declarative Services (DS) specification to build components that react to their environment, configure themselves dynamically and interact with other components. Then you will look at one of the most important patterns used in constructing real applications using services, namely the "Whiteboard Pattern".
On day two, we will return to practical topics such as how to build and test modules using industry-standard tools such as ANT, Maven, JUnit and Hudson/Jenkins. Also we will cover how to define and manage a runtime application using combinations of modules and configurations, and how to correctly evolve APIs and implementations over time.
Day two concludes with a review of alternative component models including Blueprint, Spring Dynamic Modules, Guice/Peaberry and Apache Felix iPOJO.
On day three you will learn about the full module lifecycle, how to safely update modules at runtime, and how the lifecycle affects services. We will discuss another common and useful OSGi pattern known as the "Extender Pattern", examine examples of existing extenders such as the Eclipse extension registry, and build our own extender.
The second half of day three comprises a review of the Compendium of useful services offered by the OSGi specification, and also some useful third-party modules and tools. These will include:
- Event Admin for asynchronous event delivery;
- Configuration Admin for configuring components and managing configuration data;
- Metatype Service for defining tool-accessible metadata about services;
- HTTP Service for building lightweight web servers;
- Coordinator Service for coordinating tasks across decoupled components.
Day four focuses on enterprise topics. We cover distributed programming with Remote Services (sometimes known as Distributed OSGi or D-OSGi), including how to manage discovery and topology in a network containing a large number of nodes. Next we will build a RESTful web service based on standard JAX-RS technology with an OSGi twist, and look at all the options for deploying web applications in OSGi, including embedding an OSGi framework inside a Java EE application server or web container (e.g. Tomcat).
Day four finishes with the topic of OSGi interoperability with Java EE specifications including JNDI, JTA, JPA, JDBC and JMX.