Home Page Icon
Home Page
Table of Contents for
Cover
Close
Cover
by Walid Joseph Gédéon
OSGi and Apache Felix 3.0
OSGi and Apache Felix 3.0
OSGi and Apache Felix 3.0
Credits
About the Author
About the Reviewers
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Errata
Piracy
Questions
1. Quick Intro to Felix and OSGi
What is OSGi?
The framework layout
The functional layers
The bundle lifecycle states
Bundle wiring
The shared service registry
Working with bundles
Anatomy of a bundle
The OSGi headers
Mandatory headers
Functional headers
Information headers
Start levels
The Start Level Service
The active start level
Using start levels
Apache Felix and sub-projects
Pop Quiz
Summary
2. Setting Up the Environment
Setting up the Felix framework
Checking that a JDK is installed
Download and unpack the Felix distribution
Time for action - downloading and installing Felix
What's in the box?
Time for action - starting Felix
What just happened?
Maven2 and Felix
Installing Maven2
Life-cycles and phases
Maven plugins
The POM
The Felix Maven Plugins
Pop quiz
Summary
3. Felix Gogo
The Tiny Shell Language
Chained execution
Variable assignment and referencing
Value types
Object properties and operations
Execution quotes
Commands and scopes
felix scope commands
Listing installed bundles: lb
help
install
update
resolve
stop and start
uninstall
refresh
headers and inspect
which
log
cd and ls
frameworklevel and bundlelevel
gogo scope commands
echo
grep
cat
tac
set
Pop Quiz
Summary
4. Let's Get Started: The Bookshelf Project
A simple Bookshelf project
The data inventory tier
What's CRUD?
The business logic tier
The user interaction tier
OSGi, Felix, and...
Taking it step-by-step
Some conventions
Summary
5. The Book Inventory Bundle
Set up the Book Inventory API Bundle project
Time for action - setting up the project skeleton
Time for action - creating the project POM
The Bundle identity
More on bundle versions
Dependencies
Customizing the build
Defining the distribution parameters
The Book bean interface
The Book bean attributes
Time for action - creating the Book bean interface
Have a go hero personalize the Book Bean API
The Book Inventory interface
Time for action - writing the BookInventory interface
Build and deploy the bundle
Time for action - building and deploying the bundle
What just happened?
Let's implement those interfaces
Time for action - creating the POM
Time for action - implementing a mutable book
Time for action - implementing the mock (memory-stored) Book Inventory
The factory method
Implementing a mock getGoups()
Storing a book
Removing a stored book
Loading a stored book
Implementing the book search
Writing the Bundle Activator
Time for action - add a dependency to the OSGi Core library
Time for action - creating the Activator
More on Bundle Contexts
Time for action - declaring Bundle-Activator
Build and deploy the bundle
Pop quiz
Summary
6. Using the OSGi Bundle Repository
OBR, the OSGi Bundle Repository
The repository XML Descriptor
Updating the OBR repository
Using the OBR scope commands
obr:repos
obr:list
obr:info
obr:deploy
obr:source and obr:javadoc
Updating bundles in the repository
Installing the Book Inventory bundles to Felix
Time for action - install the book inventory bundles
What just happened?
On dependency management
Pop Quiz
Summary
7. The Bookshelf: First Stab
The Bookshelf Service bundle
Have a go hero preparing the bookshelf-service project
Define the main Bookshelf Service interfaces
Time for action - writing the APIs
The Authentication interface
The BookshelfService interface
Have a go hero tailor the bundle to your liking
Implementing the service
Time for action - writing BookshelfServiceImpl
Have a go hero -complete service implementation
Time for action - implementing the service activator
Framework service lookup
Trying the BookshelfService
Time for action - building the bundle
Time for action - installing and testing the service
What just happened?
Time for action - fulfilling the missing dependency
What Just Happened?
On class visibility
Pop quiz
Summary
8. Adding a Command-Line Interface
The Apache Felix Gogo Shell Service
Time for action - creating the Bookshelf Service TUI bundle
Implementing a Gogo Shell Service command
Implementing the book:search command
Time for action - adding the required dependencies
Time for action - writing the BookshelfServiceProxy
On Converters
Time for action - implementing a bundle activator
Time for action - packaging and installing
Time for action - trying out the book:search command
Time for action - cleaning up the bookshelf-service activator
Implementing the book:add command
Time for action - implementing the book-add command
Go ahead hero- building and deploying the changes
Updating an installed bundle
What just happened?
Trying the commands
Go ahead hero- implementing the other commands
Sourcing scripts
Time for action - creating a book population script
Summary
9. Improve the Bookshelf Service with iPOJO
What is Inversion of Control?
The Service Locator pattern
The Dependency Injection pattern
The Whiteboard pattern
The Extender Pattern
The iPOJO Felix sub-project
Components and instances
iPOJO Maven plugin
The metadata file
Components
Instances
Using the plugin
Injecting iPOJOs
Install the iPOJO service bundle
Let iPOJO register the inventory implementation
Time for action - creating the iPOJO metadata
Update the POM
Configure bundle for iPOJO
Build and test it
What just happened?
The Felix iPOJO Gogo Command bundle
ipojo scope commands usage
Migrate the bookshelf service
Time for action - removing lookups in the service implementation
Time for action - writing the bookshelf service iPOJO configuration
Update the POM
Deploy and check
iPOJO using annotations
Overview
Beginner's annotations
@Component
@Provides
@Requires
@ServiceProperty
@Property
@Instantiate
Instantiating annotated components
Update the text UI bundle
Time for action - updating the BookshelfServiceProxyImpl
Time for action - writing the iPOJO meta.xml
Time for action - updating the POM
Have a go hero- updating the bundles to use annotations
Have a go hero- implementing a file-based bookshelf-inventory
Summary
10. Improving the Logging
On logging
Logging levels
Who's listening?
The OSGi Log Service
The Service end
Usage of the Log Service
The service provider end
Apache Felix Log Service
The log command
Creating the log helper bundles
Time for action - creating the bookshelf-log-api bundle
Time for action creating the log helper implementation
Implementing the BookshelfLogHelper service
Add logging to the bookshelf-service
Time for action updating the bundle POM
Time for action - updating the bookshelf service logging calls
Time for action - logging to BookshelfLogHelper
Update bookshelf-service-tui dependency
Have a go hero- adding the remaining logs
Trying it out
Using other Log Service implementations
Summary
11. How About a Graphical Interface?
The OSGi HTTP Service
Component structure
Registration of servlets
iPOJO and the Whiteboard Extender
Http Service implementations
The Apache Felix Http Service
Time for action - installing the Apache Felix Http Service
A simple bookshelf web application
Time for action - implementing the servlet
The iPOJO configuration
Implementing the operations
Time for action - declaring the parameter constants
Time for action - implementing the operations
Have a go hero- implementing the remaining operations
Trying it out
What just happened?
Pop Quiz
Summary
12. The Web Management Console
Getting started
Installing the Web Console
Time for action - installing commons-fileupload and commons-io
Time for action - installing json
Time for action - installing and starting the Web Console
A quick overview
Bundles
Log Service
OSGi Repository
Services
Shell
System Information
Apache Felix iPOJO WebConsole Plugin
Summary
13. Improving the Graphics
OSGi Web Containers
Pax Web
Time for action - installing the Pax Web bundles
Uninstall previous http support
Install PAX Web bundles
Double-check the http service implementation
What just happened?
Our bookshelf-webapp
Time for action - creating the bookshelf-webapp bundle
Web application registration
Time for action - setting up the web application bundle
What just happened?
Time for action - specifying dependencies
Getting a service reference in JSP
Time for action - writing the session bean
What just happened?
Complete the authentication pages
Time for action - using the service
A first smoke test
Implement the remaining pages
Time for action - implementing the list books by category page
A note on JSP imports
Time for action - explicit package imports
Have a go hero implementing the remaining pages
Search with authors
Add book
Have a go hero- extending the application
Pop Quiz
Summary
14. Pitfalls and Troubleshooting
Common pitfalls
I start my bundle but nothing happens
Have you declared your bundle activator in the manifest?
Do you have the correct logging level set?
I update my bundle, but I can't see any change
Are you updating the right bundle?
Are you updating the right bundle location?
Have you refreshed the bundle dependencies?
I refresh my OBR but the bundles don't get updated
Is the remote OBR being updated?
The artifact JAR I need doesn't have OSGi entries in its manifest
Creating the bundle manually
Using the BND tool
I get a "No impl service available" error with any shell command
Re-initialize the environment
I get a "No LogReaderService available" error with the log command
Do you have a Log Service installed?
I can't add/connect to an OBR
Is that URL valid?
Does the OBR have the right format?
Do you need a proxy to access the Internet?
I'm getting a "Jsp support is not enabled" error message
Did you install JSP support?
My JSP can't find a class that it needs
Is that class on an exported package?
Does the web application bundle import the required class package?
Troubleshooting tips
How to get debug logs from the Felix Log Service
How can remote debugging help
Where to get answers online
Summary
A. Eclipse, Maven, and Felix
Productivity tools
An Integrated Development Environment
A build management system
Setting up Eclipse and plugins
Maven integration plugin
OSGi framework container plugin
Choosing the workspace
Installing the Eclipse plugins
Installing Pax Runner
Installing m2clipse
Setting up a new Maven project in Eclipse
Creating the Maven project
What just happened?
Customizing the build process
Time for action - completing the project
Importing a Maven project into Eclipse
Debugging with Eclipse
Remote debugging configuration
Setting up the remote application
Time for action - editing the Felix run script
Configuring the IDE for remote debugging
Configuring the IDE for remote debugging
Connecting to Felix remotely
Set a breakpoint
Start the remote debugger
Running embedded Felix
Configuring embedded Felix
Taking it for a ride
Adding OBR repositories
Starting a test bundle
Debugging embedded
Summary
B. Where to Go from Here?
On declarative services
On persistent storage
On web services
On Java Management Extensions (JMX)
Additional topics
Summary
C. Pop Quiz Answers
Chapter 1: Quick intro to Felix and OSGi
Chapter 2: Setting up the Environment
Chapter 3: Felix Gogo
Chapter 5: The Book Inventory Bundle
Chapter 6: Using the OSGi Bundle Repository
Chapter 7: The Bookshelf: First Stab
Chapter 11: How About a Graphical Interface?
Chapter 13: Improving the Graphics
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Next
Next Chapter
OSGi and Apache Felix 3.0
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset