Rights Contact Login For More Details
- Wiley
More About This Title Beginning Spring Framework 2
- English
English
Bruce Snyder is a veteran of enterprise software development and a recognized leader in open-source software. Bruce has experience in a wide range of technologies including Java EE, messaging, and serviceoriented architecture. In addition to his role as a principal engineer for IONA Technologies, Bruce is also a founding member of Apache Geronimo and a developer for Apache ActiveMQ, Apache ServiceMix, and Castor, among other things. Bruce serves as a member of various JCP expert groups and is the co-author of Professional Apache Geronimo from Wrox Press. Bruce is also a frequent speaker at industry conferences, including the Colorado Software Summit, TheServerSide Java Symposium, Java in Action, JavaOne, ApacheCon, JAOO, SOA Web Services Edge, No Fluff Just Stuff, and various Java users groups. Bruce lives in beautiful Boulder, Colorado with his family.
Christian Dupuis is working for one of the world’s leading consulting companies and is a member of the Technical Architecture capability group. Christian has been working as a technical architect and implementation lead to design and implement multi-channel, mission-critical financial applications that leverage Spring and other open-source frameworks across all tiers. Christian is co-lead of the Spring IDE open-source project (http://springide.org), providing tool support for the Spring Portfolio.
Sing Li (who was bitten by the microcomputer bug in the late 1970s) has grown up in the Microprocessor Age. His first personal computer was a $99 do-it-yourself Netronics COSMIC ELF computer with 256 bytes of memory, mail-ordered from the back pages of Popular Electronics magazine. A 25-year industry veteran, Sing is a system developer, open-source software contributor, and freelance writer specializing in Java technology and embedded and distributed systems architecture. He regularly writes for several popular technical journals and e-zines, and is the creator of the Internet Global Phone, one of the very first Internet phones available. He has authored and co-authored a number of books across diverse technical disciplines including Geronimo, Tomcat, JSP, servlets, XML, Jini, media streaming, device drivers, and JXTA.
Anne Horton has worked in the software industry for 24 years as a software engineer, textbook technical editor, author, and Java architect. She currently works for Lockheed Martin and spends her weekends working with Sing Li (author) and Sydney Jones (editor) in developing bleeding-edge books such as this one. You can email her at [email protected].
Naveen Balani works as an architect with IBM India Software Labs (ISL). He leads the design and development activities for the WebSphere Business Service Fabric product out of ISL. He likes to research upcoming technologies and is a regular contributor to IBM developer works covering such topics as web services, ESB, JMS, SOA, architectures, open-source frameworks, semantic web, J2ME, persuasive computing, the Spring series, AJAX, and various IBM products. You can e-mail him at [email protected].
- English
English
Acknowledgments x
Introduction xix
Chapter 1: Jump Start Spring 2 1
All About Spring 2
Focus on Simplicity 2
Applying Spring 2
Creating a Modularized Application 3
Using Spring to Configure a Modularized Application 8
Wiring Beans Automatically by Type 14
Understanding Spring’s Inversion of Control (IoC) Container 16
Adding Aspect-Oriented Programming to the Mix 20
Adding a Logging Aspect 21
Beyond Plumbing — Spring API Libraries 25
Using Spring APIs To Facilitate Application Creation 26
Summary 27
Chapter 2: Designing Spring Applications 29
Overview of the PIX Album-Management System 30
The PIX System Requirements 31
Discovering the Domain Model 33
The PixUser POJO 33
The Affiliate POJO 35
The Picture Object 36
The Album POJO 37
The Comment POJO 38
The POJO Relationships 39
The Importance of Unit Testing 45
POJO-Based Design and Containerless Unit Testing 46
Regression Testing 46
Working with a Unit-Testing Framework 47
Summary 52
Chapter 3: Spring Persistence Using JPA 53
Java Persistence 54
JDBC Architecture 54
Traditional JDBC Approach 56
DAO — Unifying Data Access 64
Spring DAO Support 64
Spring Exception Translation 73
Spring and JPA 74
Entities 74
Spring as a JPA Container 81
About JPA APIs 81
JPA the Easy Way — Using Annotations 81
SPRING JPA Exception Translation 82
SPRING JPA DAOs 83
Spring JPA Configuration 84
Persistence and the PIX Domain Model 87
Persisting The PixUser POJO 87
Implementing PixUser Repository DAO 89
Implementing the Album Repository DAO 90
Testing the Persistence Layer 91
Spring Test Support 92
Executing the Persistence Test Suite 92
Testing the PIX Repositories 92
Summary 93
Chapter 4: Using Spring MVC to Build Web Pages 95
The MVC Architectural Pattern 95
The Sample Application’s Architecture 96
Spring MVC Development 99
Processing Web Requests with Controllers 99
Presenting the Model with a View 105
Getting Data from the User with Forms 109
A Basic Form-Submission Workflow 109
Using the Form View 112
When Things Go Wrong 123
Summary 124
Chapter 5: Advanced Spring MVC 125
Submitting a Form Across Multiple Pages 126
Adding Pictures to an Album 126
Developing Wizard Form Pages 127
Implementing Wizard Form Actions 131
Validating Data Submitted Through a Wizard 132
Uploading Files 133
Getting More Stuff Done with the Same Controller 134
Creating a Different View 137
Your First View 138
Saving an Album to PDF 139
Generating an RSS Feed 142
Personalization 146
Retrieving Text Labels from a Message Source 146
Displaying Application Labels in a Different Language 148
Changing the Application’s Language Settings 150
Allowing the User to Personalize the Application 151
Summary 154
Chapter 6: Spring Web Flow 155
Examining a Sample Work Flow for Loan Applications 156
Introducing Spring Web Flow 157
How SWF Works with Spring MVC 158
Launching Flows 159
Implementing SWF in the PixWeb Application 161
The Login Flow 161
The Album Creation Flow 176
Implementing Actions 178
Implementing Views 181
Testing Flows 183
Architectural Overview 185
Advanced Topics 186
REST-Style URLs 187
Flow Execution Repositories 188
Flow Execution Repository Implementations 189
Subflows and Attribute Mappers 189
Flow Execution Listeners 189
Exception Handlers 190
Summary 190
Chapter 7: Ajax and Spring: Direct Web Remoting Integration 191
Web 2.0: The World of Ajax 192
Ajax Basics 192
Client-Side Ajax Development with JavaScript 194
The XMLHttpRequest Object 194
Introducing Direct Web Remoting 2 199
Downloading DWR 2 201
Working with DWR 2 202
Integrating Spring and DWR 2 210
Summary 229
Chapter 8: Spring and JMS — Message-Driven POJOs 231
JMS Concepts 232
JMS Messaging Domains 232
Point-To-Point Messaging 232
Publish/Subscribe Messaging 233
Persistence versus Durability 234
The JMS Message 234
Message Header 234
Message Properties 235
Message Selectors 235
Message Body 235
Producing JMS Messages 236
Consuming JMS Messages 236
Synchronous Message Consumption 236
Asynchronous Message Consumption 237
The Spring JMS Framework 238
The Spring JMS Packages 238
The JmsTemplate Class 239
Message Listener Containers 240
Destinations 241
Transactions 241
Configuring Message-Driven POJOS 241
Realizing the JMS Use Case 242
Modeling Message-Driven POJOs 242
The PIX Web POJOS 242
Changing the PIX Web POJOs Into Message-Driven POJOs 245
A JMS Provider — Apache ActiveMQ 247
The JMS Template in the PIX Web Application 253
Summary 256
Chapter 9: Spring Web Services and Remoting 259
Web Service Benefits 260
Introducing Web Services 260
Web Services Architecture 261
The Network Layer 261
XML 261
SOAP 262
WSDL 262
UDDI 264
Web Services Interactions 265
Web Services Interoperability 266
Java Web Service Technologies 266
Java Web Application Web Services 266
Spring Remoting 268
SOAP Frameworks 268
Java-to-XML Bindings 269
XFire 269
Spring Web Services with XFire 270
Realizing the PIX AffiliateManagement Use Case 270
Invoking Web Services 277
SOAP Handlers 278
Testing SOAP Handlers with XFire 278
Summary 284
Chapter 10: Web Service Consumer and Interoperation with .NET 285
Creating Web Service Consumers — Overview 286
Describing Web Services with WSDL 286
Creating a Web Service Consumer with XFire 287
The XFire Maven Plugin 287
Invoking Web Service Methods via XFire-Generated Stubs 287
Understanding the E-Mail-Validation Web Service Consumer in PIX 288
Examining a WSDL Document 290
WSDL Description of a Web Service Endpoint 291
Generating Web Service Stubs from WSDL Using XFire 292
The XFire WsGen Tool 294
Generated Interface for Invocation of Web Service 295
Creating a Web Service Consumer with XFire-Generated Stubs 295
Add a Web Service Consumer to PIX 300
Web Service Interoperability 304
WS-I and Web Service Interoperability 304
Expose PIX Service for .NET Web Service Consumers 304
Summary 313
Chapter 11: Rapid Spring Development with Spring IDE 315
Brief Feature Overview 316
Installing and Setting Up Your Eclipse Environment 317
Installing Spring IDE 317
Preparing an Eclipse Project 319
Support for Spring Beans Configuration Files 325
Viewing Spring Bean Definitions 325
Validating Spring Bean Definition Files 328
XML Editing 332
Searching for and Navigating to Bean Definitions 335
Visual Support for Spring AOP Configurations 337
Enabling AOP Support for Spring Projects 338
Working with Spring IDE’s AOP Support 339
Integration with the AspectJ Development Tools 343
Web Flow Development with Spring IDE 344
Setting Up Your Spring Web Flow Project 344
Validating Spring Web Flow Definition Files 348
Editing Spring Web Flow Definition Files 350
Graphical Editor for Web Flow Definitions 351
Summary 353
Chapter 12: Spring AOP and AspectJ 355
Comparing Aspect-Oriented Programming to Object-Oriented Programming 355
What Is AOP? 357
Crosscutting Concerns 357
AOP in Spring 361
XML Schema-Based Support 362
The AOP Namespace Explored 362
Advice Parameters 367
AspectJ Support 368
@AspectJ Explored 368
@AspectJ-Style Advice 372
Performance Monitoring with AOP and JETM 376
Summary 379
References 380
Chapter 13: More AOP: Transactions 381
Understanding Transactions 382
Understanding Spring Transaction Management 383
Spring Transaction Abstraction 384
Applying AOP to Transactions 387
Adding Spring Transaction Support to PIX 38
Selecting the Transaction Manager 389
Coding Spring Transactions 397
Global Transactions 405
Summary 406
Appendix A: Maven 2 Basics 407
Appendix B: Spring and Java EE 439
Appendix C: Getting Ready for the Code Examples 451
Index 453