Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Java 2 Enterprise Edition 1.4 Bible
Nội dung xem thử
Mô tả chi tiết
Java™
2 Enterprise
Edition 1.4 Bible
James McGovern, Rahim Adatia, Yakov Fain,
Jason Gordon, Ethan Henry, Walter Hurst,
Ashish Jain, Mark Little, Vaidyanathan Nagarajan,
Harshad Oak, Lee Anne Phillips
a539663 FM.qxd 7/25/03 9:12 AM Page i
a539663 FM.qxd 7/25/03 9:12 AM Page i
Java™
2 Enterprise
Edition 1.4 Bible
James McGovern, Rahim Adatia, Yakov Fain,
Jason Gordon, Ethan Henry, Walter Hurst,
Ashish Jain, Mark Little, Vaidyanathan Nagarajan,
Harshad Oak, Lee Anne Phillips
a539663 FM.qxd 7/25/03 9:12 AM Page i
Java™ 2 Enterprise Edition 1.4 Bible
Published by
Wiley Publishing, Inc.
10475 Crosspoint Boulevard
Indianapolis, IN 46256
www.wiley.com
Copyright © 2003 by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
ISBN: 0-7645-3966-3
Manufactured in the United States of America
10 9 8 7 6 5 4 3 2 1
1O/RS/QY/QT/IN
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means,
electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of
the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through
payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978)
750-8400, fax (978) 646-8700. Requests to the Publisher for permission should be addressed to the Legal Department, Wiley
Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4447, E-Mail:
is a trademark of Wiley Publishing, Inc.
LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: WHILE THE PUBLISHER AND AUTHOR HAVE USED THEIR BEST
EFFORTS IN PREPARING THIS BOOK, THEY MAKE NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE
ACCURACY OR COMPLETENESS OF THE CONTENTS OF THIS BOOK AND SPECIFICALLY DISCLAIM ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CREATED
OR EXTENDED BY SALES REPRESENTATIVES OR WRITTEN SALES MATERIALS. THE ADVICE AND STRATEGIES
CONTAINED HEREIN MAY NOT BE SUITABLE FOR YOUR SITUATION. YOU SHOULD CONSULT WITH A
PROFESSIONAL WHERE APPROPRIATE. NEITHER THE PUBLISHER NOR AUTHOR SHALL BE LIABLE FOR ANY LOSS
OF PROFIT OR ANY OTHER COMMERCIAL DAMAGES, INCLUDING BUT NOT LIMITED TO SPECIAL, INCIDENTAL,
CONSEQUENTIAL, OR OTHER DAMAGES.
For general information on our other products and services or to obtain technical support, please contact our Customer
Care Department within the U.S. at (800) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in
electronic books.
Library of Congress Control Number: 2003101921
Trademarks: Wiley, the Wiley logo, and related trade dress are trademarks or registered trademarks of John Wiley & Sons,
Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. Java is a
trademark of Sun Microsystems, Inc. All other trademarks are the property of their respective owners. Wiley Publishing,
Inc., is not associated with any product or vendor mentioned in this book.
a539663 FM.qxd 7/25/03 9:12 AM Page ii
About the Authors
James McGovern is currently employed as an enterprise architect for Hartford
Financial Services. He is the coauthor of The Practical Guide to Enterprise
Architecture (Prentice Hall, 2003), Java Web Services Architecture (Morgan
Kaufmann, 2003), and Xquery — Kick Start (Sams Publishing, 2003). James has 16
years of experience in information technology. He is a member of the Java
Community Process, the IEEE, and the Worldwide Institute of Software Architects.
He holds industry certifications from Microsoft, Cisco, and Sun.
Rahim Adatia has been programming since he got his first computer — a TRS-80 —
way back in the beginning of the ’80s. Fortunately, he didn’t stagnate there and progressed on to developing large-scale enterprise architectures using C/C++, UML,
CORBA, J2EE/EJB/Java, and now C# and .NET. He has applied his more than 15
years of experience to leading implementations at Charles Schwab, Williams
Communications, Valtech, Nortel Networks, Corel Corporation, Lokah Limited, and
T-Mobile International, to name a few. Most recently, he has focused on the wireless
middleware market, where he has led product development using Web services,
J2EE, and .NET. He is also a delegate for T-Mobile International at the Open Mobile
Alliance standards body. Rahim has contributed to numerous books and articles
throughout his career, including the books Professional EJB and J#, and is actively
reviewing other titles. He can be reached at [email protected].
Yakov Fain has more than 20 years of experience in information technology and is
an experienced architect, developer, instructor, and mentor. He is the author of The
Java Tutorial for the Real World. Yakov is the principal of Smart Data Processing, Inc.
(http://www.smartdataprocessing.com), whose clients include major Wall
Street companies. He is a Sun Certified Java 2 Programmer and a Sybase Certified
Powerbuilder Developer.
Jason Gordon is a software engineer for Verizon and serves as lead for the Global
Email system team. While at Verizon he has played a variety of roles, including
systems architect for the eBusiness Technology Integration and eInfrastructure
group and key developer of the EDGE project, which helped provide a Web-based
infrastructure to facilitate the merger of Bell Atlantic and GTE into Verizon. Jason
also served as a member of Verizon’s XML-Task Force and collaborated on several
wireless and Web-services initiatives within the company. In addition to being an
active technical author, Jason also currently serves as the national technology
coordinator for the National Society of Black Engineers. He can be reached at
[email protected] or http://www.jtgordon.com.
Ethan Henry has most recently worked as the manager of training services at
Sitraka. In previous positions he was a developer, product manager, and Java evangelist. He has written numerous articles for Java Report, Dr. Dobbs Journal, Java
Developers Journal, and Web Techniques. He has been a technical reviewer of
multiple books, including Enterprise Java Beans by Valesky, Java How to Program by
Dietel and Dietel, Professional JSP by Wrox, and Java Language API Superbible from
the Waite Group all the way back in 1996.
a539663 FM.qxd 7/25/03 9:12 AM Page iii
iv About the Authors
Walter Hurst is the chief technology officer and founder of Wakesoft. He is widely
recognized as a leader in the design and implementation of large-scale distributed
enterprise applications. At Wakesoft, Walter was the product architect and author
before becoming more involved in company strategy and industry leadership. He is
a frequent speaker at conferences and often writes for technical publications.
During his career he has been involved in the design, architecture, and implementation of distributed business systems for many Fortune 1000 companies as an independent consultant and also, while at Xpedior and Andersen Consulting, Walter
received a B.S. in computer engineering from the University of Michigan. When he
needs a break from technology, Walter volunteers as a scuba diver for the Steinhart
Aquarium in San Francisco, where he cleans the shark tank.
Ashish Jain is an enterprise consultant/architect with over ten years of IT experience. He currently works for BEA Systems Professional Services. In this capacity,
Ashish assists BEA customers in designing and implementing their e-business
strategies using solutions based on J2EE. He holds several industry certifications
from SUN and BEA. He is an active member of local J2EE-user groups and a board
member of the Denver BEA-user group. He holds a degree in electronics engineering
from BITS Pilani, India.
Mark Little is Head of Transactions Technology for Arjuna Technologies Limited, a
company that spun off from Hewlett-Packard to concentrate on developing transactions technologies for J2EE and Web services. Prior to this, Mark was a distinguished engineer/architect in HP’s Arjuna Labs in England, where he led the HP
Transaction Service and HP Web Services Transaction teams. He is one of the primary authors of the OMG Activity Service Specification. He is a member of the
expert group for the work in J2EE: JSR 95 and JSR 117, and is the specification lead
for JSR 156 (Java API for XML Transactions). Mark is active on the OTS Revision
Task Force and the OASIS Business Transactions Protocol specification. He is the
coauthor of an upcoming book, Transaction and Java for Systems Professionals
(Prentice Hall). He has been published in many industry magazines, including
Doctor Dobbs, The Java Developers Journal, the Web Services Journal,
Developer.com, and Application Development Advisor. Mark holds a Ph.D. in computer science from the University of Newcastle.
Vaidyanathan Nagarajan, a.k.a Nathan, is the coauthor of a recent book, Xquery —
Kick Start (Sams Publishing). He coauthored Professional EJB for Wrox in summer of
2001. He has seven years of experience in information technology. Prior to joining
Hartford Life Insurance as an enterprise developer, he worked as a consultant to
Netscape Professional Services. He has an M.B.A. in General Management from a
leading business school in the New England area. He is a former student of the
Indian Institute of Technology, Mumbai, India. His main interests include programming in Java, robotics using Lego Mindstorms, writing, reading, and cartooning. If
he is not thinking about design patterns or Java, he will be modeling a robot in his
robotic lab. He can be reached at [email protected].
a539663 FM.qxd 7/25/03 9:12 AM Page iv
About the Authors v
Harshad Oak holds a master’s degree in computer management and is a Sun
Certified Java Programmer and a Sun Certified Web Component Developer. He has
been part of several J2EE projects at i-flex Solutions and Cognizant Technology
Solutions. He is also a regular contributor of articles to developer Web sites like
http://www.builder.com.
Lee Anne Phillips has a long history in computer networking and interface design,
having created beaucoup systems-firmware and machine-language hardware-interface routines before the appearance of Java and other sensible tools to relieve the
burdens of a suffering humanity. She attended the University of California at
Berkeley. Lee Anne is the author of many books and articles on computer-related
subjects, including Special Edition Using XML, Practical HTML 4, and about a fifth of
HTML 4.0 Unleashed Professional Reference Edition. An extended list may be seen on
her Web site: www.leeanne.com.
a539663 FM.qxd 7/25/03 9:12 AM Page v
Credits
Acquisitions Editor
Jim Minatel
Project Editors
Valerie H. Perry
Neil Romanosky
Mark Enochs
Technical Editor
Kunal Mittal
Copy Editor
S. B. Kleinman
Editorial Manager
Mary Beth Wakefield
Vice President & Executive Group
Publisher
Richard Swadley
Vice President and Executive
Publisher
Bob Ipsen
Vice President and Publisher
Joseph B. Wikert
Executive Editorial Director
Mary Bednarek
Project Coordinator
Kristie Rees
Graphics and Production Specialists
Beth Brooks
Jennifer Click
Sean Decker
Heather Pope
Quality Control Technicians
Laura Albert
John Greenough
Brian H.Walls
Media Development Specialist
Angela Denny
Proofreading and Indexing
TECHBOOKS Production Services
a539663 FM.qxd 7/25/03 9:12 AM Page vi
Foreword
Something about this book needs to be short, so I guess it’s going to have to be
the foreword. Seriously, though, this is a very good book. In fact, it’s the best
introduction to J2EE that I’ve seen. It’s well written, covering all the information you
need to succeed with J2EE. And it’s presented in an order that makes sense — the
chapters provide an end-to-end overview of J2EE. The book starts by showing you
how to build the frontend of your application, then describes your connectivity
options, then shows you how to build your business logic using Enterprise
JavaBeans (EJB), and finally explains how to connect to the backend databases. In
other words, this book is architecturally layered.
Why should you read this book? First, because the authors know what they’re talking about and can explain it in ways that you can understand. Second, because it
really does cover the fundamentals of J2EE incredibly well. The first five parts of
this book are oriented toward people learning to work with J2EE technology, and in
my opinion they do an incredibly good job of explaining exactly what you need to
know. Third, because the book goes beyond J2EE. Part VI is a great overview of
using Web services with J2EE, a critical issue most developers need to understand.
Part VII is a great overview of common J2EE patterns, and Part VIII covers such
important topics as performance and frameworks. In many ways this book is a
“one-stop shop” for J2EE information.
In the end the thing that I like most about this book is that it’s practical. Yes, it’s
pretty darn big, but as a result it provides a significant amount of real-world advice.
Isn’t that what good books are supposed to do?
Scott W. Ambler
Senior consultant, Ronin International, Inc. (http://www.ronin-intl.com)
Author, Agile Modeling, Agile Database Techniques
Coauthor, Mastering EJB 2/e
a539663 FM.qxd 7/25/03 9:12 AM Page vii
Acknowledgments
The process of writing a book is more time-consuming than anyone could ever
imagine. Luckily, the author team was composed of very talented people who
made the experience enjoyable. Some doubted that we could complete a book of
this magnitude on schedule without sacrificing quality. That you are reading it now
means that we were successful in our undertakings.
This book is the result of many people’s efforts. We would first like to thank our
acquisitions editor, Jim Minatel, for providing insight into the publishing industry in
general, and for allowing us to challenge the typical book-production process and
to focus on writing a good book instead of simply following a publishing formula.
The team would also like to thank Neil Romanosky for his efforts in making Wiley a
little more agile.
We would also like to acknowledge authors we have worked with in the past and
hope to work with in the future, including Sameer Tyagi, Martin Fowler, Sunil
Mathew, James Linn, Michael Stevens, Elias Jo, Vikas Sharan, John Crupi, Steven
Graham, Erich Gamma, Paul Reed, Tim Howes, Kent Beck, Jeff Sutherland, Marty
Biggs, Alistair Cockburn, Ed Roman, Nitin Narayan, Marty Biggs, Chris Caserio, Kurt
Cagle, Per Bothner, and Jeff Ryan.
To our peers in the industry who maintain a sense of speed, agility, and balance
a539663 FM.qxd 7/25/03 9:12 AM Page viii
Acknowledgments ix
James McGovern— First, I must thank my wife, Sherry, and my son, little James,
for putting up with me for the past several months while I’ve kidnapped and held
myself hostage in my dungeon (office) working on this book. I know they would
have liked to have me around more, but writing this book is something I really
needed to do. Thank you for your support.
I would like to acknowledge my Connecticut family: Daisy May, Pamela, Annika,
Demesha, Aunt Jesse, and the little doggie Pinto. Universal greetings to my Trinidad
family: Soogia, Kello Ricky (Kenrick), Robby (Kiley), Kelon, and Keifer, and to my
United Kingdom family: Nicholas, Ian, and Alex.
Finally, thanks to my father James Sr. and mother Mattie Lee, who gave me the
courage to start and the discipline to finish.
Rahim Adatia— I would like to thank James McGovern, Jim Minatel, and Mark
Enochs for all their hard work in developing this book. Thank you for your patience.
I would also like to thank the professors and colleagues I have worked with at the
University of Ottawa, Valtech (U.K. and U.S.A.!), BEA, and T-Mobile International.
Last but not least, I would like to thank my family and friends who have been there
to support and encourage me — I know that I can be difficult at times (did I say
that?). Thank you for your strength.
Yakov Fain— I’d like to thank my family — Natalia, Yuri, and David — for their love
and support. I’d also like to thank a wonderful teacher and a lovely lady, Dr. Alice S.
Koutkova, and close friends of our family, Dora and Felix Rubinchik.
Jason Gordon— I would like to thank GOD for giving me guidance and strength. I
would also like to acknowledge the following people: Abby, Jerry, Marvin, Charlie
Lindahl, Beth, Mitch, Kyle, Lisa, The Jamisons, and my entire family. A special
thanks to my Mother who has been there every time I needed her. I would like to
thank MaryKim for her encouraging words and advice. I would like to thank Lee
Felts who gave me the inspiration to write. I would like to thank Kyle for his support
and guidance. Last but not least . . . thanks to Mr. Starbucks and his friend Mr.
Caffeine! You guys are awesome!
Ethan Henry— I’d like to thank my family, especially my wonderful wife Margit, for
helping me work on this book, my colleagues at Sitraka (now Quest Software), the rest
of the author team, and the fine people at Wiley who helped pull everything together.
Walter Hurst— For all the effort required writing my chapter, I would first like to
thank my wife, Christine. This chapter is just one more instance where I had to
work hard on nights and weekends, and her cheerful support is what made it all
possible. I would also like to thank James McGovern for inviting me to write the
chapter; this book would not be possible without a lead author organizing the many
required writers, which is a task probably very akin to herding cats. The concepts
contained within this chapter I have learned indirectly from thought leaders in the
industry, directly from my time at Sage IT Partners, and even more definitely since
founding Wakesoft. There are too many individuals to list them, but they know who
they are. Thank you.
a539663 FM.qxd 7/25/03 9:12 AM Page ix
x Acknowledgments
Ashish Jain— I would like to thank my wife Nishma and our son Eshan for their
love and patience and support. I would also like to thank my colleagues at BEA,
Chris John and Bob Webster, for their useful and insightful comments.
Mark Little— I would like to thank my wife Paula and two sons, Daniel and Adam
(who was born during the writing of this book) for their support and love. They
have put up with my disappearances into the book-writing world many times over
the past few months, and I know it can’t have been easy. My entire family has given
all the effort over the many years meaning and ensured that I stayed sane. Lots of
love to Adam, who thinks his rattle and toys are far more important than Java
and J2EE!
Vaidyanathan Nagarajan— I would like to thank my wife Padma and my parents,
Nagarajan and Geetha, for encouraging me to put in my best effort in contributing
to this book. This book is dedicated to Padma, Geetha, Nagarajan, Vedham, all my
family members, and my best friends the Srinivasans (Arun and Sujata) who have
supported me in being what I am. A special mention goes to James McGovern for
giving me an opportunity to work with him and for introducing me to the world of
writing technical books. Thanks to those Asterix comics (by the time I completed
writing this book, I have collected all the Asterix collection except for one) and
Dilbert strips for making the creative juices run fresh in me every morning. I would
also like to take a moment to thank my friend and colleague, Thomas Nordlund, for
prototyping the source code for the session-authenticator pattern.
Harshad Oak— I wish to thank my father, Baba, without whose affection, support,
inspiration, and experiments at the art of cooking Indian food, nothing would have
been possible. I also wish to thank my dear sister Charu for always being there for
me, and Sangeeta for helping me with my writing and painstakingly reviewing my
work. Thanks to Jim and Mark for being a big help throughout this project and to
Laura and Stacey for playing an important part in my writing endeavors.
Lee Anne Phillips— My deepest thanks to Alison Eve Ulman, who provided needed
support and advice throughout the development of the chapter on JAAS, and to my
editors, whose tactful suggestions rarely failed to be either right on the mark or an
indication of a needed new direction for the phrase or discussion in question. Any
remaining errors or infelicitous explanations are entirely my own responsibility, the
creation of a book being a cooperative enterprise, especially this one that ultimately depends on the imagination and skill of the author.
a539663 FM.qxd 7/25/03 9:12 AM Page x
Contents at a Glance
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix
Part I: Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 1: Understanding Java and the J2EE Platform . . . . . . . . . . . . . . . . 3
Chapter 2: Reviewing XML Fundamentals . . . . . . . . . . . . . . . . . . . . . . . 17
Chapter 3: Introducing Application Servers . . . . . . . . . . . . . . . . . . . . . . 43
Chapter 4: Understanding Remote Method Invocation . . . . . . . . . . . . . . . 55
Part II: The Presentation Tier . . . . . . . . . . . . . . . . . . . . . . . . 75
Chapter 5: Studying Servlet Programming . . . . . . . . . . . . . . . . . . . . . . . 77
Chapter 6: Going Over JSP Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Chapter 7: Using JSP Tag Extensions . . . . . . . . . . . . . . . . . . . . . . . . . 143
Part III: The Enterprise Information System Tier . . . . . . . . . . . . 179
Chapter 8: Working with JavaMail . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Chapter 9: Understanding the Java Messaging Service . . . . . . . . . . . . . . . 231
Chapter 10: Introducing Java Transactions . . . . . . . . . . . . . . . . . . . . . 255
Chapter 11: Examining JNDI and Directory Services . . . . . . . . . . . . . . . . 303
Chapter 12: Understanding Java Authentication and Authorization Services . . . 347
Chapter 13: Exploring Java Cryptography Extensions . . . . . . . . . . . . . . . 409
Part IV: The Service Tier . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Chapter 14: Understanding EJB Architecture and Design . . . . . . . . . . . . . 429
Chapter 15: Explaining Session Beans and Business Logic . . . . . . . . . . . . 483
Chapter 16: Working with Entity Beans . . . . . . . . . . . . . . . . . . . . . . . . 511
Chapter 17: Using Message-Driven Beans . . . . . . . . . . . . . . . . . . . . . . 565
Part V: The Data Tier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Chapter 18: Reviewing Java Database Connectivity . . . . . . . . . . . . . . . . . 581
Chapter 19: Understanding the J2EE Connector Architecture . . . . . . . . . . . 607
a539663 FM.qxd 7/25/03 9:12 AM Page xi
Part VI: Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
Chapter 20: Introducing Web Services . . . . . . . . . . . . . . . . . . . . . . . . 647
Chapter 21: Digging Deeper into SOAP, WSDL, and UDDI . . . . . . . . . . . . . . 665
Chapter 22: Understanding J2EE Web Services . . . . . . . . . . . . . . . . . . . 711
Part VII: Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
Chapter 23: Reviewing Presentation-Tier Patterns . . . . . . . . . . . . . . . . . 729
Chapter 24: Working with Service-Tier Patterns . . . . . . . . . . . . . . . . . . . 763
Chapter 25: Using Data-Tier Patterns . . . . . . . . . . . . . . . . . . . . . . . . . 797
Part VIII: Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . 817
Chapter 26: Exploring Frameworks and Application Architecture . . . . . . . . 819
Chapter 27: Using ANT to Build and Deploy Applications . . . . . . . . . . . . . 857
Chapter 28: Creating High-Performance Java Applications . . . . . . . . . . . . 881
Appendix A: Airline Reservations Business Case . . . . . . . . . . . . . . . . . . 915
Appendix B: Magazine Publisher Business Case . . . . . . . . . . . . . . . . . . . 923
Appendix C: Additional Reading and References . . . . . . . . . . . . . . . . . . 927
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
a539663 FM.qxd 7/25/03 9:12 AM Page xii