Head First Design Patterns, much rather than the book from Gamma et al, though this is a personal preference
I also think that often, performance-related requirements are difficult to deal with. (Basically, how do you know if your architecture is going to perform well enough? How many server do you put into your application server cluster? And so on.) The problem here is that the answer you will find is that you make some reasonable assumptions and then you test a prototype. This doesn't work for this assignment of course. It's not going to give you the silver bullet, but I thought that Performance Analysis for Java Web-Sites by Joines was helpful.
Those were the main ones. I spent a lot of time reading before doing the assignment (about a year, but it depends how much time you read every week of course). I'm not sure it was necessary, but I learned a lot, and for me, that was one of the main objectives.
Finally, if you're only going to get one book from this list, get Cade & Sheil. The problem with that book is, it tells you what the topics are you need to know about, but it doesn't explain very much. It's only about 150 pages. But it gives you a pretty good idea what you need to study, that is, which other books you will need. And it's essential when doing the assignment, in my opinion.