Synopses & Reviews
Nothing is as constant as change, and this is as true in enterprise computing as anywhere else. With the recent release of Java 2 Enterprise Edition 1.4, developers are being called on to add even greater, more complex levels of interconnectivity to their applications.
To do this, Java developers today need a clear understanding of how to apply the new APIs, use the latest open source Java tools, and learn the capabilities and pitfalls in Java 2 Enterprise Edition 1.4 -- so they can plan a technology and implementation strategy for new enterprise projects.
Fortunately, this is exactly what they get with the new Java Enterprise in a Nutshell, 3rd Edition. Because most integrated development environments (IDE) today include API lookup, we took out the main API sections from our previous edition to make room for new chapters, among others, on Ant, Cactus, Hibernate, Jakarta Struts, JUnit, security, XDoclet, and XML/JAXP.
Revised and updated for the new 1.4 version of Sun Microsystems Java Enterprise Edition software, Java Enterprise in a Nutshell, 3rd Edition is a practical guide for enterprise Java developers.
With the recent release of Java 2 Enterprise Edition 1.4, developers are being called on to add even greater, more complex levels of interconnectivity to their applications. To do this, Java developers need a clear understanding of how to apply the new APIs, and the capabilities and pitfalls in the program--which they can discover in this edition.
About the Author
Jim Farley is a technology strategist, architect, manager and author. His current focus is his role as the technology solutions architect for the Harvard Business School, working to assemble enterprise systems for both the instructional and back-office operations at the school. Jim also consults for various organizations in strategic technology and development, lectures in the computer science department at Harvard's Division of Continuing Education, and publishes articles in a number of forums. Jim's history with computing, enterprise and otherwise, has spanned numerous domains, including manufacturing, artificial intelligence, multimedia, collaboration tools, and content management.
William Crawford has developed web-based enterprise applications since 1995, including one of the first web-based electronic medical record systems, and some of the first enterprise-level uses of Java. He's also consulted for Boston Children's Hospital, Harvard Medical Center, and several Fortune 500 companies. He was Chief Technology Officer at Invantage, Inc., and Principal Software Architect at Perceptive, Informatics, Inc. He is also the co-author O'Reilly's of "J2EE Design Patterns" and "Java Servlet Programming." Will has taken a temporary leave from Enterprise Java development to pursue MBA and MS degrees at MIT.
Prakash Malani has extensive experience in architecting, designing, and developing software in many application domains, such as entertainment, finance, retail, medicine, communications, and interactive television. He practices and mentors leading technologies such as J2EE, the Unified Modeling Language (UML), and XML. Prakash also teaches (and preaches) best practices and design patterns at institutions such as California State Polytechnic University, Pomona. He has published various articles in industry leading publications such as JavaWorld and WebLogic Developers Journal.
John G. Norman has been developing web-based products and services for more than 10 years, and has been working with technology since he was introduced in the mid 70s to an IBM 1130 running FORTRAN and APL. Since 1999 he's worked on social networking products, business analytics, and e-commerce at companies such as Cambridge Incubator, Veritas Medicine, Elytics, and, currently, H3.com, where he is the Chief Software Architect. John has taught literature at Ohio State, new media at the New School, and engineering at Harvard University's Extension Division. He holds a PhD in English Literature from Harvard.
Justin Gehtland, a professional programmer, instructor, speaker and pundit since 1992, has developed real-world applications using VB, COM, .NET, Java, Perl and a slew of obscure technologies since relegated to the trash heap of history. His focus on "connected" applications led him to COM+, ASP/ASP.NET and JSP. Justin is the co-author of "Effective Visual Basic" and "Windows Forms Programming in Visual Basic .NET" (both Addison Wesley). He is currently the Agility columnist on The Server Side .NET, works as a consultant through his company Relevance, LLC, and teaches for DevelopMentor.
Table of Contents
Preface; What's New in This Edition; Contents of This Book; Java Programming Resources; Examples Online; Conventions Used in This Book; Using Code Examples; Safari® Enabled; Comments and Questions; Acknowledgments; The Java Enterprise APIs; Chapter 1: Introduction; 1.1 Enterprise Computing Defined; 1.2 Enterprise Computing Demystified; 1.3 Standard Java Enterprise APIs; 1.4 De Facto Standard Enterprise Development Tools; 1.5 An Enterprise Computing Scenario; 1.6 Other Enterprise APIs; Chapter 2: Application Assembly and Deployment; 2.1 J2EE Application Assembly Model; 2.2 Component Modules; 2.3 Application Assemblies; 2.4 Deploying J2EE Applications; Chapter 3: Java Servlets; 3.1 Getting a Servlet Environment; 3.2 Servlet Basics; 3.3 Web Applications; 3.4 Servlet Requests; 3.5 Servlet Responses; 3.6 Custom Servlet Initialization; 3.7 Security; 3.8 Servlet Filters; 3.9 Thread Safety; 3.10 Cookies; 3.11 Session Tracking; 3.12 Databases and Non-HTML Content; Chapter 4: JavaServer Pages; 4.1 JSP Basics; 4.2 JSP Actions; 4.3 The JSP Expression Language; 4.4 JSP Standard Tag Library; 4.5 Custom Tags; 4.6 Wrapping Up; Chapter 5: JavaServer Faces; 5.1 The Sample Application; 5.2 Structure of a JSF Application; 5.3 Managed Beans; 5.4 The JSF Expression Language; 5.5 JSF Actions and Views; 5.6 Building Tables; 5.7 Validation; 5.8 Moving on with JSF; Chapter 6: Enterprise JavaBeans; 6.1 What Version Is Covered Here?; 6.2 EJB Component Model Overview; 6.3 EJB Tutorial; 6.4 Deploying EJBs; 6.5 Using Enterprise JavaBeans; 6.6 Session Bean Specifics; 6.7 Entity Beans; 6.8 Message-Driven Beans; 6.9 Transaction Management; 6.10 EJB 3.0; Chapter 7: Java and XML; 7.1 Using XML Documents; 7.2 Java API for XML Processing; 7.3 SAX; 7.4 DOM; 7.5 XSLT; Chapter 8: JDBC; 8.1 JDBC Architecture; 8.2 Connecting to the Database; 8.3 Statements; 8.4 Results; 8.5 Handling Errors; 8.6 Prepared Statements; 8.7 BLOBs and CLOBs; 8.8 Metadata; 8.9 Transactions; 8.10 Stored Procedures; 8.11 Escape Sequences; 8.12 RowSets; Chapter 9: JNDI; 9.1 JNDI Architecture; 9.2 A Simple Example; 9.3 Introducing the Context; 9.4 Looking Up Objects in a Context; 9.5 The NamingShell Application; 9.6 Listing the Children of a Context; 9.7 Creating and Destroying Contexts; 9.8 Binding Objects; 9.9 Accessing Directory Services; 9.10 Modifying Directory Entries; 9.11 Creating Directory Entries; 9.12 Searching a Directory; 9.13 Event Notification; Chapter 10: J2EE Security; 10.1 Basic Security Concepts; 10.2 A Look at Java and J2EE Security Standards; 10.3 Declarative Security Versus Programmatic Security; 10.4 Web Component Security; 10.5 EJB Component Security; 10.6 Other J2EE Security Topics; 10.7 Limitations of J2EE Security; Chapter 11: Java Message Service; 11.1 JMS in the J2EE Environment; 11.2 Elements of Messaging with JMS; 11.3 The Anatomy of Messages; 11.4 Point-to-Point Messaging; 11.5 Publish-Subscribe Messaging; 11.6 Unified Messaging; 11.7 Transactional Messaging; Chapter 12: Web Services with JAX-RPC and SAAJ; 12.1 What's Covered Here?; 12.2 Brief Introduction to Web Services; 12.3 Java Web Services; 12.4 Writing Web Service Clients; 12.5 Writing Web Services; 12.6 Deploying Web Services; Chapter 13: Remote Method Invocation; 13.1 What's Covered Here?; 13.2 Introduction to RMI; 13.3 Defining Remote Objects; 13.4 Creating the Stubs and Skeletons; 13.5 Accessing Remote Objects as a Client; 13.6 Dynamic Classloading; 13.7 Remote Object Activation; 13.8 RMI and Native Method Calls; 13.9 RMI Over IIOP; Chapter 14: Java IDL (CORBA); 14.1 A Note on Evolving Standards; 14.2 The CORBA Architecture; 14.3 Creating CORBA Objects; 14.4 Putting It in the Public Eye; 14.5 Finding and Using Remote Objects; 14.6 What If I Don't Have the Interface?; Chapter 15: JavaMail; 15.1 Email and JavaMail; 15.2 Creating and Sending Messages; 15.3 Retrieving Messages; 15.4 Multipart Messages; Chapter 16: Transactions; 16.1 Transaction Overview; 16.2 Programmatic Transactions Versus Declarative Transactions; 16.3 Optimistic Concurrency; 16.4 EJB Transaction Management; 16.5 Some Common Programming Scenarios; 16.6 Transaction Best Practices; Open Source Enterprise Tools; Chapter 17: Ant; 17.1 What Version Is Covered Here?; 17.2 Ant Overview; 17.3 Ant Fundamentals; 17.4 Core Tasks; 17.5 Enterprise Tasks; 17.6 Creating Portable Build Processes; Chapter 18: JUnit and Cactus; 18.1 What's Covered Here?; 18.2 Unit Testing Concepts; 18.3 JUnit Overview; 18.4 Using JUnit with Ant; 18.5 Testing Enterprise Components with Cactus; Chapter 19: Struts; 19.1 The Scope of Struts; 19.2 The Sample Application; 19.3 The Development Process with Struts; 19.4 The Struts Controller; 19.5 The Action Class; 19.6 Views in Struts; 19.7 Struts Tags; 19.8 Struts Plug-ins; 19.9 DynaActionForms and the Struts Validator; Chapter 20: Hibernate; 20.1 The Sample Application; 20.2 Principles of Hibernate; 20.3 Configuration and Mapping; 20.4 The Hibernate API; 20.5 HQL (Hibernate Query Language); 20.6 Hibernate Services; 20.7 Conclusion; Chapter 21: Annotations with XDoclet and J2SE Metadata; 21.1 What's Covered Here?; 21.2 What Are Code Annotations?; 21.3 Annotation Tools; 21.4 XDoclet Tutorial; 21.5 J2SE Annotations Tutorial; Appendixes; J2EE Deployment Descriptor Reference; Web Components (web.xml); Enterprise JavaBeans (ejb-jar.xml); Application Archives (application .xml); Web Services (webservices.xml); Web Service Java/WSDL Mappings; JavaServer Faces Tag Libraries; JSF Core Tags; JSF HTML Tags; Enterprise JavaBeans Query Language Syntax; Basic Structure of EJB QL Queries; FROM Clause; SELECT Clause; WHERE Clause; ORDER BY Clause; SQL Reference; Relational Databases; Data Types; Schema Manipulation Commands; Data Manipulation Commands; Functions; Return Codes; JMS Message Selector Syntax; Structure of a Selector; Identifiers; Literals; Operators; Expressions; FRMI Tools; IDL Reference; IDL Keywords; Identifiers; Comments; Basic Data Types; Constants and Literals; Naming Scopes; User-Defined Data Types; Exceptions; Module Declarations; Interface Declarations; Value Type Declarations; HJava IDL Tools; About the Authors; Colophon;