Table Of ContentPro Apache Beehive
KUNAL MITTAL AND SRINIVAS KANCHANAVALLY
Pro Apache Beehive
Copyright © 2005 by Kunal Mittal and Srinivas Kanchanavally
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.
ISBN (pbk): 1-59059-515-7
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence
of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark
owner, with no intention of infringement of the trademark.
Lead Editor: Steve Anglin
Technical Reviewer: Dilip Thomas
Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore,
Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser
Associate Publisher: Grace Wong
Project Manager: Kylie Johnston
Copy Edit Manager: Nicole LeClerc
Copy Editor: Kim Wimpsett
Assistant Production Director: Kari Brooks-Copony
Production Editor: Linda Marousek
Compositor: Susan Glinert Stevens
Proofreader: Sue Boshers
Indexer: Carol A. Burbo
Artist: Wordstop Technologies (P) Ltd, Chennai, India
Interior Designer: Van Winkle Design Group
Cover Designer: Kurt Krames
Manufacturing Manager: Tom Debolski
Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor,
New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-ny@springer-sbm.com, or
visit http://www.springeronline.com.
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA
94710. Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit http://www.apress.com.
The information in this book is distributed on an "as is" basis, without warranty. Although every precaution
has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to
any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly
by the information contained in this work.
The source code for this book is available to readers at http://www.apress.com in the Downloads section.
I would like to dedicate this book to my wife, Neeta, and to my dogs, Dusty and Snowie.
They have been extremely patient during the authoring process and all the missed
weekend activities that I had to put on the back burner as I was writing this book. Neeta
has been extremely patient and has helped me by sharing my other responsibilities so
that I could focus on the book.
I would also like to thank my coauthor, Srini, who has worked several long hours coming up
with all the examples you see in this book. Every single line of code was written by him.
—Kunal Mittal
I dedicate this book to my wife, Harini, for all her love, support, encouragement,
and sacrifice.
To my parents, family, and friends: thank you all, you make life wonderful.
—Srinivas Kanchanavally
Contents at a Glance
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi
■CHAPTER 1 What’s Apache Beehive? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
■CHAPTER 2 Introducing Web Services and SOA Fundamentals . . . . . . . . . . . . . 15
■CHAPTER 3 Introducing Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
■CHAPTER 4 Dissecting Java Page Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
■CHAPTER 5 Using NetUI and Page Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
■CHAPTER 6 Using Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
■CHAPTER 7 Working with Beehive Web Services and JSR 181 . . . . . . . . . . . . 135
■CHAPTER 8 Using XMLBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
■APPENDIX A Setting Up Your Development Environment . . . . . . . . . . . . . . . . . . . 173
■APPENDIX B Working with Eclipse and Pollinate . . . . . . . . . . . . . . . . . . . . . . . . . . 179
■APPENDIX C Contributing to Beehive and XMLBeans . . . . . . . . . . . . . . . . . . . . . . 191
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
v
CCoonntteennttss
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi
■CHAPTER 1 What’s Apache Beehive? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Enterprise Application Development: The Challenges . . . . . . . . . . . . . . . . 1
Delivering to the Customer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Getting the Best Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Securing Your Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Integrating Your Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Having Freedom of Choice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
How Java Fits Into All of This . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
The Growth of Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
The Role of J2EE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Introducing Service-Oriented Architecture (SOA) . . . . . . . . . . . . . . . . . . . . 7
Introducing BEA WebLogic Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
BEA WebLogic Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
BEA WebLogic Workshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
BEA WebLogic Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
BEA WebLogic Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
BEA WebLogic JRockit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
What Does BEA WebLogic Platform Provide? . . . . . . . . . . . . . . . . . . . . . . . 9
Exploring the History of BEA WebLogic Workshop . . . . . . . . . . . . . . . . . . 10
Introducing Apache Beehive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Introducing XMLBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
vii
viii ■CONTENTS
■CHAPTER 2 Introducing Web Services and SOA Fundamentals . . . . . . 15
Introducing Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Web Service Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Basic Web Service Technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Enterprise-Class Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Introducing SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
What’s a Service?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Defining SOA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Defining Service-Oriented Programming. . . . . . . . . . . . . . . . . . . . . . 22
Exploring the Role of XML in SOA. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
How Does Apache Beehive Enable SOA? . . . . . . . . . . . . . . . . . . . . . . . . . . 23
How Do Controls Relate to SOA?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
How Do Apache Beehive Web Services Relate to SOA?. . . . . . . . . . 24
How Do XMLBeans Relate to SOA? . . . . . . . . . . . . . . . . . . . . . . . . . . 24
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
■CHAPTER 3 Introducing Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
What’s an Annotation? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Basic Java 1.5 Annotations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
JSR 175. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
JSR 181. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Using Annotations in WebLogic Workshop . . . . . . . . . . . . . . . . . . . . . . . . . 32
Java Page Flows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Introducing Apache Beehive Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Page Flows/NetUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
■CHAPTER 4 Dissecting Java Page Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Introducing Java Page Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Page Flows in WebLogic Workshop . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Page Flows in Apache Beehive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
■CONTENTS ix
Introducing Page Flow Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Page Flow Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
NetUI Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Reviewing Page Flow Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . 62
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
■CHAPTER 5 Using NetUI and Page Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Creating the Sample Bookstore Application . . . . . . . . . . . . . . . . . . . . . . . 65
Setting Up the Bookstore Application. . . . . . . . . . . . . . . . . . . . . . . . . 65
Running the Sample Bookstore Application. . . . . . . . . . . . . . . . . . . . 66
Looking at the Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Dissecting NetUI Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Examining the NetUI Tag Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Examining the NetUI-data Tag Library. . . . . . . . . . . . . . . . . . . . . . . . 93
Examining the NetUI-template Tag Library . . . . . . . . . . . . . . . . . . . . 97
Introducing Shared Flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Accessing Methods of the Shared Flow from Your Page Flow . . . . 99
Accessing Methods of the Shared Flow from Your JSP. . . . . . . . . 100
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
■CHAPTER 6 Using Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Introducing Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Understanding the Control Architecture. . . . . . . . . . . . . . . . . . . . . . 102
Looking at the Control Authoring Model. . . . . . . . . . . . . . . . . . . . . . 105
Using a Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Dissecting Common Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Using the Database Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Using the EJB Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Using the Web Service Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
■CHAPTER 7 Working with Beehive Web Services and JSR 181 . . . . . . 135
Introducing JSR 181 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
The JSR 181 Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
The JSR 181 Architecture Overview. . . . . . . . . . . . . . . . . . . . . . . . . 138
x ■CONTENTS
Writing Your First Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Writing the Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Deploying the Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Testing the Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Exposing a Web Service from the Bookstore Application . . . . . . . . . . . . 141
Writing the Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Setting Up to Run the Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . 144
Deploying the Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Looking at the WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Running the Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
■CHAPTER 8 Using XMLBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
What’s XML-Java Binding? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
XMLBeans As an XML-Java Binding Technology . . . . . . . . . . . . . . 155
XMLBeans Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Data Types in XMLBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Working with XMLBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Working with an XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Generating Java Code from the XML Schema. . . . . . . . . . . . . . . . . 162
Walking Through the Generated XMLBeans Classes . . . . . . . . . . . 163
How to Put Data into the XMLBeans. . . . . . . . . . . . . . . . . . . . . . . . . 164
How to Use Get Data from the XMLBeans. . . . . . . . . . . . . . . . . . . . 165
Using XML Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Working with Cursors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Working with XML Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Using XMLBeans and Web Services Together . . . . . . . . . . . . . . . . . . . . . 168
Looking at the XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Creating the XML Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
■APPENDIX A Setting Up Your Development Environment . . . . . . . . . . . . . 173
Downloading and Installing the Required Software . . . . . . . . . . . . . . . . . 173
Installing J2SE 5 (JDK). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Installing Ant 1.6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Installing Tomcat 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Downloading and Installing Apache Beehive and XMLBeans . . . . . . . . 174
Installing the Beehive 1.0.3 Binary Distribution . . . . . . . . . . . . . . . 174
Installing the XMLBeans Alpha Binary Distribution. . . . . . . . . . . . . 175
■CONTENTS xi
Working with Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Starting Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Running the Petstore Sample on Tomcat 5. . . . . . . . . . . . . . . . . . . 176
Deploying the Petstore Sample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
■APPENDIX B Working with Eclipse and Pollinate . . . . . . . . . . . . . . . . . . . . . 179
What’s Eclipse? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Eclipse Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Eclipse Tools Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Eclipse Technology Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Eclipse SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Downloading and Installing Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Using the Eclipse Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Importing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Processing in the Background. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Setting Up a CVS Repository with Eclipse . . . . . . . . . . . . . . . . . . . . . . . . 183
Creating a New Repository Location in Eclipse. . . . . . . . . . . . . . . . 183
Using the CVS Checkout Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Taking Advantage of the Ant Support. . . . . . . . . . . . . . . . . . . . . . . . 185
Downloading and Installing Pollinate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Installing Pollinate from the Update Site . . . . . . . . . . . . . . . . . . . . . 187
Installing Pollinate from a ZIP File. . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Creating a New Beehive Project in Eclipse . . . . . . . . . . . . . . . . . . . . . . . 188
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
■APPENDIX C Contributing to Beehive and XMLBeans . . . . . . . . . . . . . . . . . 191
Subscribing to Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Beehive Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
XMLBeans Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Contributing Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Contributing to Beehive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Contributing to XMLBeans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Grab Bag of Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
So, What’s Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Description:The primary audiences for this book are developers and software architects who are looking to get exposure to the Apache Beehive project, and other related projects. This book covers the Apache Beehive project and projects closely related to this – such as XMLBeans, Pollinate etc. We will cover Pa