Home > Store > Programming > Java
Programming Open Service Gateways with Java Embedded Server™ Technology
- By Kirk Chen, Li Gong
- Published Aug 30, 2001 by Prentice Hall. Part of the Java Series series.
- Copyright 2002
- Dimensions: 7-3/8x9-1/4
- Pages: 480
- Edition: 1st
- Book
- ISBN-10: 0-201-71102-8
- ISBN-13: 978-0-201-71102-8
Register your product to gain access to bonus material or receive a coupon.
The Java Embedded Server from Sun Microsystems, Inc., is a solution for linking consumer devices with services over the Internet. It is based on the Open Services Gateway Initiative (OSGi) Service Gateway Specification 1.0. Written by authors who are intimately involved with the development and implementation of the specification, Programming Open Service Gateways with Java Embedded Server Technology reveals the concepts and inner workings of the Java Embedded Server framework and explains how to program and develop services for open gateways using the Java programming language.
With an emphasis on actual coding, this definitive guide begins by explaining the backdrop in which the residential gateway market emerged. Next, the book discusses the history and mission of the Java Embedded Server product and the OSGi consortium. Throughout the book, the Java Embedded Server technical architecture and the OSGi Service Gateway API are presented with examples and detailed implementations. The book's practical, how-to format shows you how to write code for residential gateway applications that is correct, robust, and efficient while avoiding common traps and pitfalls.
Highlights include:
- Overview of OSGi architecture, including basic concepts and features
- How to install Java Embedded Server and develop service bundles
- Design patterns and pitfalls
- How to use the OSGi standard services: log service and HTTP service
- OSGi Device Access (DA) service
- Permission-based security and administration
- The future undertakings of the OSGi consortium
- The OSGi Service Gateway Specification 1.0
Programming Open Service Gateways with Java Embedded Server Technology gives you an insider's perspective on the development process of new applications and services for the residential gateway environment.
0201711028B09102001
Sample Chapter(s)
Click below for Sample Chapter related to this title:
chench01.pdf
Index
Symbols& (AND), 76, 77
* (asterisk), 77, 78
: (colon), 106
, (comma), 252
. (dot), 84, 88
! (NOT), 76,77
/ (forward slash), 169
| (OR), 76, 77
Numbers 3Com, 25
10BaseT Ethernet, 4Aaccept method, 148, 150
AccessController class, 229
Actions, performing privileged, 238-245
Activator.java, 277-278, 283-284, 287, 296-297, 304, 309, 315-318
Activator(s). See also Bundle-Activator: header; BundleActivator interface
basic description of, 31-32
classes, 17-18, 109
common mistakes related to, 105
device access and, 201, 207-209
nullifying references and, 156-157
registering services in, 54-55
service unregistration and, 120
writing, 17
ACTIVE field, 337
ACTIVE state, 40, 262
addBundleListener method, 354
addFrameworkListener method, 355
addLogListener method, 432
addServiceListener method, 119, 355-356
Administration, permission-based. See also Administration, user
APIs for, 261-264
basic description of, 250-263
code for, 297-319
dynamic bundle resolution and, 251-252
Administration, user, 269. See also Administration, permission-based
admin.jar, 251, 253, 257
AdminPermission class, 227, 229, 237, 239, 331, 332-334
AdminPermission constructor, 333
AdminServlet.java, 305-309
ADSL (Asynchronous Digital Subscriber Line), 3
Algorithm(s)
device management and, 404-405
resolution, 258
security and, 229, 241, 258
sorting, 140
Alias(es)
mapping, 169
namespaces, 169-170
parameters, 184
registering, 171, 185
syntax, 184-185
Allied Business Intelligence, 2-3
AllPermission class, 234
American Standard Code for Information Interchange (ASCII). See also
ASCII (American Standard Code for Information Interchange)
America Online (AOL), 25
ampersand (&), 77
APIs (application program interfaces). See also Interfaces
Java Communications API, 187, 198-201, 205
JavaMail API, 86-89, 137
Java Servlet API, 170-171
permissions required by, 230-231
Apple Computer, 195
Application(s)
environment, new, 8-9
logic, 120, 146
ASCII (American Standard Code for Information Interchange), 91
Assembly language, 189
Asterisk (*), 77, 78
Asynchronous Digital Subscriber Line (ADSL). See also ADSL (Asynchronous
Digital Subscriber Line)
AT command, 213
attach method, 208, 212, 408-409
Auditing, 165
Authentication. See also Security
basic, 178-184
HTTP, 178-184
performing, 181-184
user administration and, 269
Authorization, 269. See also Authentication; SecurityBBase
drivers, 193-194, 198-200
URLs, 22
BasicPermission class, 229-231, 248
BasicSchemeHandler service, 178, 182-184
Bierce, Ambrose, 53
BlueTooth, 6, 7, 189
Browser(s)
device access and, 218-220
preferences, storing/retrieving, 268-269
registering images and, 172-176
security and, 238-245
Buffer size, 167
Bundle(s)
basic description of, 16-18, 28-32, 325-326
calling, 37, 61, 73
commands for, 20-21, 22-23
common mistakes related to, 105-106
configuring, 269
that contain native code, 96-105
context, 33, 73
cooperation among, 33-39, 107-129
developing, 51-106, 271-278
framework for, 32-33, 39-45
help for, 20-21
IDs, 19, 39, 262
installing, 19-20, 39, 363-365
JavaMail API and, 86-89
life cycles of, 29-30, 32, 47, 146
locations, 22, 44, 262
the line printer daemon print service and, 89-95
managing references among, 157-160
multithread, 148-152
permission-based administration and, 251-252
phantom, 265-267
removing, 265-267
resolution of, 34, 251-252
retrieving resources from within, 60-61
running, 19-23
service-providing, 37, 61, 66
starting/stopping, 40, 45, 326, 343-345, 351
state, 111
transitive closure of, 251
uninstalling, 45, 155, 158
updating, 42-45
writing, 51-56, 96-105
Bundle activator(s). See also Bundle-Activator: header; BundleActivator interface
basic description of, 31-32
classes, 17-18, 109
common mistakes related to, 105
device access and, 201, 207-209
nullifying references and, 156-157
registering services in, 54-55
service unregistration and, 120
writing, 17
Bundle-Activator: header, 105, 148, 326
BundleActivator interface, 17, 41
basic description of, 330, 350-351
starting/stopping bundles and, 326
bundleChanged method, 375
Bundle-ClassPath: header, 84, 85, 88, 327
Bundle-ContactAddress: header, 261, 327
BundleContext interface, 40, 55, 62-63, 70, 73-80, 145, 218, 231, 263-264
basic description of, 330, 352-358
methods, 354-358
service registry and, 143
Bundle-Description: header, 261, 327
Bundle-DocURL: header, 261, 327
BundleEvent event, 107, 128-129
BundleEvent class, 331, 369-372
BundleEvent constructor, 371
BundleException constructor, 374
BundleException interface, 373-374
BundleException exception, 331
Bundle interface, 231, 252, 261-263, 330, 335-349
BundleListener interface, 128-129, 330, 375
Bundle-Name: header, 261, 326
Bundle-NativeCode: header, 96, 97, 99, 329
bundles command, 20, 23, 56
Bundle-UpdatedLocation: header, 43, 327
Bundle-Vendor: header, 261, 326
Bundle-Version: header, 261, 326CC programming (high-level language), 10, 102, 105, 189
Cable modems. See also Modems
data rates for, 6
transforming, into residential gateways, 9
usage statistics for, 2
Cable Television Laboratories, 6
cache directory, 21
Caching, 21, 69, 158
Cahners In-Stat, 2-3
Callback, 140-143, 159, 244
Cascading service registration, 123-125
CEBus, 2, 6, 7
Certificate(s). See also Security
authorities, 226
public keys in, 226
self-signed, 243
CGI (Common Gateway Interface), 168
changeConfiguration method, 218
checkPermission method, 245, 246
Class(s). See also Classes (listed by name)
compiling, 17-18
encapsulation of, 228
granting permissions to, 228
inheritance, 228
instantiation, 229
loading issues, 64-65
names, fully qualified, 64
origin of, 226
Preface
Technology is invented and advanced by, well, technical people. However, a truly successful technology is marked by its adoption by people in their daily lives. Few ponder radio frequency modulation when they turn on the TV, or the internal combustion engine when they drive around. The technology has disappeared behind the utility.
The last decade saw two new technologies begin to blend into our lives: the computer and the Internet. We only need to launch a browser and the resources of the World Wide Web are at our fingertips, and we are hard pressed to tell the difference between a computer and a game console, a personal digital assistant (such as PalmPilot), or a cell phone. It is now entirely feasible to bring services to smart consumer devices at home and to small businesses through the Internet. Utility providers and network, computer, wireless, consumer electronics, and home appliance companies recognize the tremendous potential and have started to tap into this market. As a result, new horizons are open for application developers.
The Open Services Gateway Initiative (OSGi) was formed to explore these exciting opportunities, and its membership includes such diverse companies as Bell South, Echelon, Electricite de France, IBM, Sun, Ericsson, Nokia, Sony, Maytag, and Whirlpool, to name just a few from a roster of more than 80 organizations. With these combined resources, OSGi stands a good chance to turn this vision into reality.
The OSGi Service Gateway Specification 1.0 defines a Java™ technology-based software architecture for developing and deploying services, which is the topic of this book.
What compels us to write this book, in addition to our enthusiasm for the emerging new applications, is the unique software model involved. We stumbled through a lot of unfamiliar territory ourselves when we worked on the Java Embedded Server™ product, the predecessor to the OSGi Service Gateway Specification, only to find our fellow developers encountering and struggling with the same class of problems. It is our hope to be able to elucidate the model and capture the hard-won solutions in one place.
This book is primarily for programmers interested in writing services for residential gateways in the Java programming language. It should also be useful to anyone who wants to learn about residential gateway technology and the efforts made by the OSGi consortium.
This book may be of interest to those who are involved with component-based software construction in general. Interestingly, nothing in the underlying programming model limits the kinds of applications that can be written. It aims at residential gateway applications at the "small" end of the spectrum in terms of code size and resource consumption, but it is just as viable for developing applications for desktop and enterprise environments. Indeed, the task will be made easier and the end result will be more powerful when fewer constraints on computing resources are imposed.We assume the readers are well versed in the Java programming language and experienced in software development on the Java platform. However, no experience is needed in embedded systems at the hardware and operating system levels.
Many trade-offs on the contents of the book had to be considered, and these were not easy decisions to make. We wrote this book with the following goals in mind:
- Practical. This book is about programming service gateways and is primarily for programmers; therefore, a lot of its content is devoted to coding. The book does not dwell on the high-level vision, and it gets down to earth promptly. As a result, the material is best understood by practicing the examples near a computer. Reading it on a beach chair will almost surely ruin your vacation.
- Software Only. We are primarily concerned with the software aspect of the residential gateway, and particularly with applications for the Java platform. We don't deal with hardware design and configuration or operating system and system software of the gateway in this book.
- "Horizontal." One of the biggest challenges in developing examples for the book is to stay "horizontal" and relevant at the same time. By "horizontal" we mean you do not need to acquire highly specialized hardware and software to learn how to program a gateway. All the examples in this book can be built and run on a familiar personal computer or a workstation. We want to focus our effort on the generic mechanisms that apply to all service gateways with the OSGi architecture, rather than diverge into specifics of certain systems that are interesting to some readers but alien to others. For instance, as part of the Java Embedded Server project we have developed code to control a vending machine, a smart coffee maker, an NEC touch-panel golf score keeper, an Ericsson e-box, and an X10 lamp module. From first-hand experience we know that what we present is entirely within the realm of feasibility. However, the aforementioned applications are simply too complicated or have details that are too specialized to be good tutorials.
- Realistic. We are not going to program a refrigerator, a washing machine, a microwave, a thermostat, or a toaster in this book. It is still not possible to go to Sears and buy a freezer that watches inventory and downloads e-coupons. Our smart espresso machine, for which we programmed a Web interface to monitor its water level and temperature and to control caffeine potency, uses proprietary commands and is not generally available. Many of the similar appliances we've seen are prototypes. This, however, is more an issue of business development than technological know-how. With the application development paradigm presented here, you should be able to develop applications for these smart appliances when they do roll down the production line en masse.
- Focused Scope. The technologies applicable to residential gateway applications have mushroomed during the last few years. Each warrants a book of its own to treat the subject thoroughly. Therefore, we do not teach you BlueTooth, USB, or HomePNA here. We are confident that experts in these areas can readily plug implementations of these technologies into the OSGi framework after they have learned how it works and what benefits it brings.
Organization of the Book
You can read this book from cover to cover, or you can select the chapters that address your particular needs. For the impatient, it is possible to jump to Chapter 4 and try out the code in action, because clear step-by-step instructions are given. However, you are strongly encouraged to read Chapter 3, which puts things into context.
Chapter 1 describes the backdrop from which the residential gateway market emerged, and its propellants and challenges, then explains the history of the Java Embedded Server product and the OSGi consortium, and introduces our view of what OSGi is trying to achieve.
Chapter 2 outlines steps to develop your first bundle and familiarizes you with the Java Embedded Server execution environment.
Chapter 3 explains the OSGi architecture and basic concepts, including the interaction of various entities during interbundle class sharing, service registration and retrieval, and bundle life cycle operations.
Chapter 4 teaches you how to develop services, how to write library bundles, and how to include native code in your bundles. Two advanced examples are given in this chapter.
Chapter 5 analyzes the dynamic nature of cooperation with services, and proposes strategies to cope with the situation. Events are also discussed at the beginning of this chapter.
Chapter 6 describes design patterns and pitfalls.
Chapter 7 explains how to use the OSGi standard services: HTTP and Log services.
Chapter 8 explains the OSGi Device Access (DA) and how to develop services to communicate with devices using the DA.
Chapter 9 discusses permission-based security and administration.
Chapter 10 summarizes the issues being worked and our view of the future directions that the OSGi consortium could take.
Appendix A contains the complete source code of the examples in this book.
Appendix B is a copy of the OSGi specification. A list of references is included at the end of the book.
Online Resources
A copy of the Java Embedded Server product can be downloaded from Sun Microsystems' Web site at
http://www.sun.com/software/embeddedserverFor updated information about the book, visit the following URL:
http://java.sun.com/docs/books/jesFull details of the OSGi consortium can be found at http://www.osgi.org
0201711028P08152001
Table of Contents
Preface.
Acknowledgments.
1. Introduction.
2. Getting Started.
3. Architecture and Basic Concepts.
4. Developing Bundles.
5. Cooperation among Service Bundles.
6. Design Patterns and Pitfalls.
7. Standard Services.
8. Device Access.
9. Permission-based Security and Administration.
10. Future Directions.
Appendix A. Code Examples.
Appenidix B. OSGi Service Gateway Specification.
Bibliography.
Index. 0201711028T08142001
This book includes Instant Online Access with
and free shipping!
Instant Online Access with Safari Books Online
With your book purchase you are entitled to free, instant online access to that book on Safari Books Online for 45 days. After you've completed your purchase, you will receive instructions on how to log into Safari Books Online. If you do not want to receive online access to the book, simply uncheck the box for Instant Online Access in your cart.
- Save more by becoming a member.
- Request an Instructor or Media review copy.
- Corporate, Academic, and Employee Purchases
- International Buying Options
Online access to books, videos, and tutorials from Addison Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media and others - starting as low as $22.99. Learn more and start a free trial.



Account Sign In
View your cart