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