contents
preface
acknowledgments
about this book
about the authors
about the cover illustration
Part 1 Programming beyond Hello World
- 1 OSGi and the enterprise—why now?
- 1.1 Java’s missing modularity
- 1.2 OSGi to the rescue
- 1.3 Programming with enterprise OSGi
- 1.4 Summary
- 2 Developing a simple OSGi-based web application
- 2.1 The development sandbox
- 2.2 Writing an OSGi web application
- 2.3 Decoupling with dependency injection
- 2.4 Bridging JNDI and OSGi
- 2.5 Summary
- 3 Persistence pays off
- 3.1 Java and persistence
- 3.2 Building a persistent application
- 3.3 Transactions—the secret ingredient
- 3.4 Summary
- 4.Packaging your enterprise OSGi applications
- 4.1 The need for more than modules
- 4.2 Enterprise OSGi subsystems
- 4.3 The Enterprise Bundle Archive (EBA)
- 4.4 Alternative approaches
- 4.5 Developing an enterprise OSGi application
- 4.6 Summary
Part 2 Building better enterprise OSGi applications
- 5 Best practices for enterprise applications
- 5.1 The benefits of sharing—and how to achieve them in your bundles
- 5.2 Structuring for flexibility
- 5.3 A better enterprise application architecture
- 5.4 Summary
- 6 Building dynamic applications with OSGi services
- 6.1 OSGi dynamism
- 6.2 Using OSGi services
- 6.3 Getting the most out of Blueprint
- 6.4 Blueprint and service dynamism
- 6.5 Summary
- 7 Provisioning and resolution
- 7.1 Describing OSGi bundles
- 7.2 Provisioning bundles
- 7.3 Provisioning technologies
- 7.4 Bundle repositories
- 7.5 Summary
- 8 Tools for building and testing
- 8.1 Manifest-first or code-first?
- 8.2 Building OSGi applications
- 8.3 Testing OSGi applications
- 8.4 Collecting coverage data
- 8.5 Summary
- 9 IDE development tools
- 9.1 Eclipse-based OSGi development
- 9.2 OSGi support in other IDEs
- 9.3 Tools for the enterprise OSGi extensions
- 9.4 Testing OSGi applications inside IDEs
- 9.5 Summary
Part 3 Integrating enterprise OSGi with everything else
- 10 Hooking up remote systems with distributed OSGi
- 10.1 The principles of remoting
- 10.2 The Remote Services Specification
- 10.3 Writing a remotable service
- 10.4 Adding in your remote service using Apache CXF
- 10.5 Using your remote application
- 10.6 Using SCA for remoting
- 10.7 Summary
- 11 Migration and integration
- 11.1 Managing heterogeneous applications
- 11.2 Migrating from Java EE
- 11.3 Summary
- 12 Coping with the non-OSGi world
- 12.1 Turning normal JARs into OSGi bundles
- 12.2 Common problems for OSGi-unaware libraries
- 12.3 An example library conversion—logging frameworks in OSGi
- 12.4 Summary
- 13 Choosing a stack
- 13.1 What’s in what server?
- 13.2 Apache Karaf
- 13.3 Apache Geronimo
- 13.4 WebSphere Application Server
- 13.5 Eclipse Virgo and Gemini
- 13.6 GlassFish
- 13.7 JBoss
- 13.8 Paremus Nimble and Paremus Service Fabric
- 13.9 Summary
 
appendix A OSGi—the basics
appendix B The OSGi ecosystem
index