Slashdot Mirror


How Tomcat Works

Petri Aerikkala writes "Don't judge a book by its cover, but by what it covers. How Tomcat Works has a very ordinary cover, but I cannot overemphasize how useful its contents are. This book does what the title says, plus much more. It is useful for not only those using Tomcat or those working with servlets/JSP/J2EE, but also for all Java developers in general." Read on for the rest of Aerikkala's review. How Tomcat Works author Budi Kurniawan and Paul Deck pages 458 publisher BrainySoftware rating 8 reviewer Petri ISBN 097521280X summary Explains how Tomcat works and how to build a servlet container of your own

First of all, this is the only book I know of that explains how the complete system works. You can find good documentation on how to use this most popular servlet container on the Tomcat project's Web site, but little is said about how it works. If you want to join this open source project, good luck. You should consider yourself lucky (or very brilliant) if you can understand how the system works in less than 3 months by browsing through its millions of lines of code.

However, why I find this book appealing is because of the approach the authors take in analyzing it: build Tomcat from scratch, line of code by line of code, module by module. Miraculously, in doing so they never fail to make sure their readers can follow the technical discussions. In their hands, Tomcat looks easy that even beginners of Java can understand. There are many complex technologies used in Tomcat, and they are all explained well.

The book starts off by building a dummy Web server that can do no more than sending a static HTML page. The web server is simple and consists of only three classes. The backbone of this application is the java.net.Socket class, and the authors take their time explaining this class at the beginning of the chapter. Basically, this is how the application in this chapter works: for each HTTP request, open a socket connection to the client, read the content of the static file, and send the file to the browser. As simple as that.

Chapter 2 builds on the application in Chapter 1. In this chapter, the web server gets some intelligence. It is now able to invoke a basic servlet by calling the servlet's service method. However, more complex servlets are beyond this simple servlet container, mainly because the container passes a null ServletRequest and a null ServletResponse objects to the service method. Before the authors start coding, they explain the javax.servlet package in general so that those new to servlet programming can understand this chapter.

Chapter 3 explains how to create ServletRequest and ServletResponse objects so that the servlet container in Chapter 2 can do more. The excitement comes in Chapter 4 when the authors explain how to pool ServletRequest and ServletResponse objects to beef up performance. This topic is not only relevant to Tomcat, but also Java programming in general. Object instantiation is expensive, and one way to avoid it is by reusing objects. However, you must be careful when your application will be used by many clients, as you must then think about thread safety. Chapter 4 elegantly explains how Tomcat developers solve this problem, as well as teach you a general solution for object pooling. Interestingly, a servlet is always represented by a single instance, and the same instance services all incoming requests.

The authors are also patient in explaining everything step by step, until the last chapters where they tackle more difficult problems such as Digester, JMX, class loaders and session management.

Not only will you be good at configuring Tomcat after you are finished reading this, you will also be able to tell straight away what's going on whenever your Tomcat installation throws up some error message. In addition, if you are really serious about Tomcat, you can start thinking of writing your own modules or extending the existing ones. For example, as the authors have demonstrated, you can extend Tomcat's application loader to automatically reload a Struts application when the struts-config.xml is modified, making the application development process quicker.

This book is also great in answering many questions that seasoned servlet/JSP programmers might have long been pondering. For example, this book discusses the difference between an OutputStream and a PrintWriter, and why you can only use one of them rather than both. It also tells you why you cannot write to the request parameters or headers.

Now, as much as I liked it, this book is not perfect. The first noticeable flaw is that there are quite a number of disturbing spelling mistakes. Also, the index could have been better, not to mention a cover that is plain and uninspiring. However, I have to admit I am very happy with this book and will recommend it to any Java programmer.

You can purchase How Tomcat Works from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

35 of 171 comments (clear)

  1. Re:I feel stupid but... by mordors9 · · Score: 5, Funny

    Well you see, it is a male cat. And when the female cat (pussy) comes into season.... oh wait different type of tomcat. Sorry.

  2. Judge by MikeMacK · · Score: 5, Funny
    Also, the index could have been better, not to mention a cover that is plain and uninspiring.

    But I thought we weren't supposed to judge the book by it's cover?

    1. Re:Judge by borud · · Score: 2, Insightful
      the cover of the reviewed book is good and the fact that the reviewer thinks otherwise makes me unsure how to interpret his review.

      Is this a person who spends a lot of time reading technical books?

      recently a friend of mine published a book. a pretty serious technical book and by my estimation one of the better books I have seen on the topic.
      the problem is that if I saw this book in the store, I would probably just give it a cursory glance and never even bother to take it off the shelf to leaf through it. seriously.

      I read a lot of books and I would hate to waste time on a book that isn't worth my time, so of course, I have to be selective. the cover is the first criterion by which I screen books, and I doubt that I am unique in starting there.

      it scares me that I DO judge a book by its cover, but I do. all of us do. there is no way you can read through the TOC of hundreds of books when you visit a well-assorted book shop in order to make a more thorough judgement on a book.

      O'Reilly seem to have understood this. their books usually have a sober, tasteful look about them, and it is somehow an irony that the average quality of an O'Reilly book has dropped in proportion to the degree of overall variation in cover design (I am not saying that the quality of an ORA-book is inversely proportional to its deviation from the "formula", but that it holds for ORA's annual output as a whole).

      still, the no-bullshit, calm, and sober look of O'Reilly books make them a natural focus point in any computer book section. (that and the fact that their predominantly white covers stand out. how come the cover-designers of other publishers seem so ignorant about the use of colors?)

      yes, the cover matters, and despite what the reviewer thinks: the cover on the reviewed book does it no disservice.

      what IS questionable about the book is the fact that it has many spelling mistakes. this suggests that the editor has not done his or her job putting the book through even the most basic quality assurance, which in turn means that there could be factual errors in the book, which for this kind of book is really, really bad.

      this would make me reluctant to shell out $50 for this book.

  3. Re:Is it just me by Rosco+P.+Coltrane · · Score: 5, Insightful

    or do java apps take up a huge amount of system resources? Everytime I launch one, my system crawls.

    Look, I used to hate Java, and quite frankly I can't say I love it much yet. But to be honest, it's come a long way since the days it was unbearable. So please come off the Java bashing, it's passé. Either that or upgrade your system for crying out loud...

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  4. A Microsoft Defender Speaks Out by INetEngineer · · Score: 4, Interesting

    I have been paid to build MS apps for years now, but I have "watched" Java from a distance and have to say that if I started a business of my own, all applications would be written in Java/JSP. I was one of the first to attempt to build Tomcat on a Windows system and after many disasters came to love it. The inner workings of Tomcat often baffled me and now I am gonna have a book! Sadly nothing I learn will translate to my current job, but it'll be damn fun.

    --
    --I smoked my sig.
    1. Re:A Microsoft Defender Speaks Out by AstroDrabb · · Score: 4, Interesting
      What a stupid troll. I use HUGE enterprise apps written in Java for a fortune 500. They load fast. We use different JVM options that actually cause the apps to load _slower_ but give better runtime performance. You see, we don't _ever_ have to restart our enterprise Java apps running on Linux/Solaris. Our biggest Java app running on about 15 servers is up and ready in 30 seconds. I can't honestly tell you the last time we needed to restart our Java apps on Solaris or Linux. Now our .Net apps running under Win2k3 is a different story. No I am not bashing .Net. I program in both .Net and Java and think both are very nice. I just give the nod to Java because it does not lock me into MS only servers. At the fortune 500 where I am a senior programmer we have plenty of MS Windows servers and pretty much every desktop is MS Win2k or WinXP. However, all of our _critical_ servers and apps are not MS Windows. They are running on Solaris and Linux.

      I happen to agree with the GP. If I started my own company, I would use Java/JSP. It would give MY company the most choice on what platform(s) to run. If I wanted to run all MS Windows. Fine. Java runs great under MS Windows servers. If I wanted Linux or Solaris, it is great as well since Java run great there too.

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    2. Re:A Microsoft Defender Speaks Out by AstroDrabb · · Score: 2, Insightful
      you are the 1st person to tell me their Java app runs quickly
      Umm, maybe because you have no experience with real Java? I can run .Net apps that are very bad and very slow. Does that mean I should think .Net sucks?
      Most people I know (perhaps because I work with MS people) think it is slow as well
      I think you have your answer there. .Net is not any more faster or more efficient than Java. I work for a fortune 500 with 140,000 employees. I have met plenty of people like you that don't really understand Enterprise developemnt. The main experience is "MS-Only", mostly VB 6 type people. I dont' call that Enterprise. If any of your MS friends claims that MS stuff is faster, they are not in touch with reality.

      We payed hundreds of thusands to have MS and third parties try out their best stuff on our intranet. At the end of the day, MS didn't have anything that could compete with PeopleSoft HR and PeopleSoft Portal. The MS solution just didn't fit our needs, it cost more and was less flexible. The PeopleSoft arch we have is Java based and runs like a champ for 140,000 employees at our corp, not to mention hundredes of thousands of others that PeopleSoft have sold to.

      Most people I know (perhaps because I work with MS people)
      I am sure you can take your MS-Only "deveolpers" and build a "great" corp. A bunch of "VB-Only" type "developers" whos knowledge in development is limited to a paper bag, that would be such a great foundation to build on. Please name any _major_ MS innovation that MS has come up with themselves that had no influence from some prior art?

      All of the biggest corps in the USA (including the one I work for) have non-MS servesr running because MS doesn't have software that can even compete with the competition.

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
  5. Re:I feel stupid but... by brittm · · Score: 5, Informative

    Tomcat is a Java servlet container--that is--basically a web server that serves up Java servlets, JavaServer Pages, etc.

    It can run standalone and also serve static files such as HTML pages/graphics, etc., or it can be configured to stand behind a web server such as Apache and only handle the servlet and JSP requests that are passed to it.

    Tomcat is itself written in Java and is, of course ;) open source. See more at http://jakarta.apache.org/tomcat/index.html.

  6. How does it compare to OReillys book? by Anonymous Coward · · Score: 5, Informative

    Anyone know how this books compares to the O'Reilly book, " Tomcat: The Definitive Guide"? Also, it might be helpfull for people to know what a Servlet and JSP is before spouting out terms.

    About the only thing common between an Applet and a Servlet is that both are writen in Java. Anyone out in /.land using Tomcat for their production site? Also, any care to give any recomendations for an eclipse plug-in?

    1. Re:How does it compare to OReillys book? by michaelggreer · · Score: 2, Informative

      I have used Tomcat in production many times, and for the most part it is excellent. The only trouble has been with commons.logging (grr..), the default connection pool (use c3p0 instead), and context reloading with Hibernate (only a dev problem). Resin gives it quite a run for performance, but its not free. As for plugins, Sysdeo has a great one that lets you run it in the debugger, with hot-code replace and everything

    2. Re:How does it compare to OReillys book? by Enygma42 · · Score: 3, Interesting

      I've deployed a few sites on Tomcat for my current employer. We have two setups, a Windows 2000 server and a Suse 8 server both shared. The Linux server seems to be able to stand up to the pressure of the busier sites a bit better but that's probably because our admin guy as it set up better.

      Some of the sites on the windows box go down once a day or more, but again that's probably a configuration thing. I've never had any problems developing on either.

      IMHO Tomcat has come a long way in the last few years. Version 5 is a huge improvement over version 3.2 (I never got around to deploying a live site on 4.x, those apache guys are way too fast for me!)

      From the point of view of someone who's been developing with Tomcat over that last few years the book sounds fairly interesting but not meaty enough. It sounds like a great starting point for someone interested in understanding Tomcat but not much more. I'd like to see a follow up book that goes into more detail then I'd probably buy the two, as it is it would probably whet my appetite and leave me unsatisfied.

      --
      "hehe, website" - Homer Simpson
    3. Re:How does it compare to OReillys book? by boodaman · · Score: 2, Interesting

      My servers all run Tomcat. A good chunk of them are still running Tomcat 3.1 for legacy reasons.

      The sites are high-traffic (many hundreds of user sessions per day). "Hundreds" probably doesn't sound like much, but the apps are pretty intense...not just simple SQL query/display stuff. High-end graphics manipulation, workflow management, and more, with sessions lasting 10-20 minutes each.

      The base OS on every server is Red Hat. Rarely do we experience problems, and in 99% of the cases, the problems are user-related (as in "problem exists between chair and keyboard"), not code related. Very very stable all around, both the Tomcat 3.1 installations and the Tomcat 4.1.x installations. I wouldn't use any other servlet container. Aside from the "plus" of the Apache license, I see no reason to "fix" something that isn't broken by trying other servlet containers, no matter what their claims.

      Because of our positive experiences with Tomcat, we started rewriting a major internal application about 8 months ago. It was originally written in ASP with COM+ objects. We initially thought we would need to get into some sort of J2EE scenario in order to "mimic" the COM/COM+ architecture, but after some proofing was done, we quickly realized that we were fine with servlets and JSP using a tweaked MVC architecture. No problems with load, and we can scale as we need to.

      As a comparison, and no, this isn't a troll, the ASP stuff we have crashes frequently. None of the applications running in production with Tomcat crash.

      I highly recommend Tomcat, and the people on the project, the dev and user lists, etc. are generally good people and very helpful.

    4. Re:How does it compare to OReillys book? by michaelggreer · · Score: 2, Informative

      Well, since you asked: SessionFactory is not well serialized so when you reload the context, Hibernate creates a new one. This is because (I believe) you can't put it in JNDI in Tomcat. Thus, each time you reload you get an extra (and big) SessionFactory, and eventually run out of memory. However, if you use the Eclipse plugin (hot-code replace instead of context reloading for class changes), you will not need this so often. And certainly you shouldn't be reloading contexts in production: restart Tomcat instead.

  7. Would have been nice by suso · · Score: 4, Informative

    To have known how Tomcat works this past weekend when I was setting it up for a client. WHat a nightmare. Reminds me TOO MUCH of setting up Chilisoft ASP for Apache. Sure its a good idea, but I think its implemented poorly and from an administrators point of view, I found it hard to know where to start. The documentation for setting up Tomcat needs to assume that the administrator doesn't have any knowledge (or little) of Java.

    1. Re:Would have been nice by Timesprout · · Score: 5, Insightful

      Well since you are doing it for a client do you not have a duty to at least do some research before attempting to install it?

      You say its poorly implemented but yet say you dont know how its works or much about Java. How can you possibly judge the quality of implementation?

      Tomcat is a mature and established technology. There are a plethora of 'getting started with tomcat', 'setting up tomcat' and 'integrating tomcat with your favourite ide' articles available on the web, before even consulting Amazon.

      It is a doddle to install, setting up a site on it takes a bit more time. As with almost all software the documentation could be better but its not like there is not other info available.

      --
      Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
      What truth?
      There is no dupe
  8. struts? by iriles · · Score: 3, Insightful

    nice. But, I want "How Struts Works." Debuging struts applications is one of the closest things to hell that I've experienced in some time.

    Ishmael

  9. lazy students by Doc+Ruby · · Score: 4, Funny

    Click on the "Tomcat project's Web site" link in the second sentence of the "rest of the review". We can't click for you. But be advised, if you have to ask these lazy questions, you probably can't program a Tomcat app, no matter what it does.

    --

    --
    make install -not war

  10. Re:A new copy is not available from Barnes & N by meshko · · Score: 3, Informative

    Oh yeah?
    And maybe someone just wants to make money on their amazon referral?
    It is available from BN for $10 less.

    --
    I passed the Turing test.
  11. Re:Is it just me by tanguyr · · Score: 2, Funny

    Whoa there... Java Apps (by which I presume you actually meant "Java applets", or you were trolling) have nothing to do with Tomcat, unless Tomcat itself were serving said applets.

    Well, Tomcat itself is an application... written in Java... often abbreviated as a "Java App". Deploy a couple of webapps in tomcat and then check out the memory footprint of Java.exe and you'll see what he means. I've never used tomcat for production use although i do have 5.0.28 running on my workstation to test stuff, and i've found the solution to any perceived performance problems (esp. in single user mode as i do) to be RAM, RAM, and more RAM. At today's prices, why quibble: throw a gig at the problem - even if your problem isn't memory bound you'll *still* have a gig of ram! You can cackle like a maniac every time you think about it!

    --
    #!/usr/bin/english
  12. Re:Could the editors... by brittm · · Score: 3, Informative

    Actually, Tomcat isn't an Apache plugin. Tomcat is a stand-alone server that can also be configured to support Apache for serving up Java web applications (which Apache cannot do on its own).

  13. Re:And those are? by rutledjw · · Score: 2, Informative
    Not wanting to be rude - but do your own research.

    If you're a student, particularly in a technical field, you should be able to google something and learn what it is. As you progress in your technical career, you'll spend a lot of time looking up technology and solutions. It's the nature of a fluid field.

    My EE profs had no patience with students who wouldn't do their own research and I've been the beneficiary of that attitude.

    Learning a topic is something that should be obvious. If you are to be competitive and desirable in a tough industry - you should be used to it

    --

    Computer Science is Applied Philosophy
  14. Re:Is it just me by temojen · · Score: 5, Informative
    what does Tomcat offer me that PHP does not, other than needless bloat and heavy system requirements?

    1. Persistant in-process objects,
    2. The ability to respond to a HEAD or PUT request, not just POST and GET,
    3. A strongly typed language (which is alledgedly more secure),
    4. and background threads not dependant on any particular request.
  15. Object instantiation is cheap! by Bubblehead · · Score: 5, Informative
    Contrary to popular believe, object instantiation is quite cheap these days (see Hotspot Garbage Collection FAQ for great information on this topic). Over the years, garbage collection algorithms have changed quite a bit. As most objects are short-lived in a well-designed OO system, GCs are tuned to exploit that. In fact, if the object is disposed in less then 4-6 GC cycles, the cost is almost nothing, and it gets more expensive, the longer the object is kept around. This is the case because young generation objects are never copied within the heap, while old generation object may be copied multiple times.

    From this follows that object pools are counterproductive for performance (unless, of course, if resources are associated with them, like Database connections, open sockets, etc.).

    I heard that quite a few app servers (including JBoss) started to refactor to get rid of object pools, but I don't have a link to back this up.

    --
    Under capitalism man exploits man. Under communism it's the other way around.
    1. Re:Object instantiation is cheap! by FerretFrottage · · Score: 2, Informative

      Very true...object pools in multi threaded systems with proper synchronization can often be counterproductive (in terms of time saved) to just creating a new Object. If you are truly pooling objects to save some state information, then a prototype pattern may be a better way to go. Obviously it all depends on the design and what the developer intends to do with the objects, but in general, keeping the objects in the "eden"/young memory space is most desirable (in terms of gc) Not sure how this plays with Java 5 yet as I have not profiled on that version.

      --
      "Look Lois, the two symbols of the Republican Party: an elephant, and a fat white guy who is threatened by change."
    2. Re:Object instantiation is cheap! by blamanj · · Score: 2, Informative

      Indeed. There are relatively few things that are expensive to instantiate, such as threads and databases connections. This isn't new, either, generational collection has been around since 1.3.

      Another case of premature optimization hurting (in added complexity and potential bugs) more than it helps?

  16. Re:Is it just me by Billly+Gates · · Score: 4, Interesting

    Add to that security.

    I keep getting flamed by the moderators but do a search on the CIA's website for insecure langauges and software.

    Php is the least secure langauge in existance and has more holes than even ASP.

    I do not mean to sound trollish but its the truth and the next big wave of worms will probably be targetting at websites running php.

  17. maybe it's just bloated? by geg81 · · Score: 2, Funny

    You should consider yourself lucky (or very brilliant) if you can understand how the system works in less than 3 months by browsing through its millions of lines of code.

    If that's true, it sounds like it is bloated and not very well designed.

    1. Re:maybe it's just bloated? by argoff · · Score: 2, Interesting

      Maybe I'm just out of it, but the thing that kills me here - is I have yet to see how this is going to provide some functionality in the real world that couldn't be done easier and simpler 1000 other ways.

      Oh, and also - all this reminds of when I herd ESR say in a talk that the markets cry for java was really a cry for FOSS. While I've never been a great fan of ESR - I think maybe he was right. The whole idea of java was to move the development center of gravity away from the proprietary desktop. Heck firefox and PHP have alone have done 10 times what java has to accomplish that. And php isn't even client side for chrissake.

      ANd, also I think it was a mistake to force the java solution to be a high level language. What they should have done is made some standadrized client side byte codes that did simple functionality like IO, and things like AND, OR, NOT, +, -, GOTO, etc and put it in a simple sceure "box", and then leave to the higher lever implementations to "compile" the byte codes and add layers on it. - Then the market could have sorted out the best high level solution. As it is, all the 'simplicity' and 'uniformity' we were supposed to get from java has simply been thrown out the window because of all the layers of high level crap you half to go thru to get things done.

      IMHO, the whole direction had completely thrown KISS out the window - either me or them are going insane.

    2. Re:maybe it's just bloated? by geg81 · · Score: 2, Insightful

      Oh, and also - all this reminds of when I herd ESR say in a talk that the markets cry for java was really a cry for FOSS.

      It's ironic, though, that Java is anything but FOSS...

      ANd, also I think it was a mistake to force the java solution to be a high level language.

      I don't think that was necessarily bad. What was bad that they completely forgot about their original mission: lightweight clients. A decade later, we have another bloated server-side platform we don't need (Java), and we still don't have a decent, sandboxed client-side language (only Flash).

      IMHO, the whole direction had completely thrown KISS out the window - either me or them are going insane.

      The problem is with Sun and Sun's direction: they couldn't make thin clients work within a couple of years, so they changed course. If Microsoft had been in Sun's place, they would have pushed harder and longer, and they would have made it work.

  18. Re:I feel stupid but... by bolind · · Score: 2, Insightful
    ...or it can be configured to stand behind a web server such as Apache and only handle the servlet and JSP requests that are passed to it.

    Ehrm, technically, yes. But I'll be damned if I could get the thing to be stable when I tried to set it up.

    See, at my (brand spanking new) dorm, we needed a homepage. So this dude volunteers to make one, and is sent off with the words "It must work on a standard Linux/*BSD platform. No proprietary crap, please." A week later, he shows us this impressive thing running on his laptop. Only problem is, it runs under Tomcat. So I try my very best to get this thing running on our FreeBSD box, before abandoning it, and just have someone build it with PHP instead. Lessons learned working with Tomcat:
    • Documentation and support is near non-existant.
    • The thing is slow as molasses.
    • It crashes for no reason, even while not under load.
    It might very well be that I am completely incompetent, but for the most parts, I have succeeded in getting stuff up and running once I set my mind to it. But this piece of software does not exactly have my warmest recommendations.

    Just one mans experience. You mileage probably varies quite a bit.

  19. Re:Is it just me by lpangelrob2 · · Score: 2, Insightful
    What you are asking has more to do with the web application specification itself, more than why Tomcat over PHP.

    I think of it this way... PHP for web applications is inevitably like building your own house from scratch... mixing the concrete, cutting down the trees, etc. All by yourself. As I've developed some web applications in PHP, this is acceptable if you're building a yurt or something.

    Java servlets are what you want to use if you want to ensure some level of expandability, or at least standardized web development practices (in theory). Companies generally don't have one mega web application they run, they have anywhere from several to dozens. You don't really want to start from scratch there. Authentication? Yeah, servlets can do that. Flow control? Yeah, that's covered too. In general, if it's something you're probably going to need, the specification covers it and you can implement it based off the specification, as opposed to winging it. Or, to get back to the house thing, buying precut steel instead of making it yourself. Or, having ready-made shingles instead of copying a design that was made earlier that may be kinda shoddy even though you don't know it.

    This doesn't necessarily knock down existing frameworks like Ruby on Rails, which looks pretty sweet, or anything with frameworks. Servlet containers just happen to be (more) secure, time tested foundation from which to build web applications. Tomcat is a good servlet container. We also use BEA WebLogic.

  20. Sample Chapters by kyoko21 · · Score: 3, Informative

    You can read some sample chapters here. Just use your favorite archiving application and acrobat reader(neither included).

  21. Strongly Disagree with Review: Not a Good Book! by SarahAnnAlien · · Score: 5, Informative

    My boss came into my office a few minutes ago, saw this book on my desk, and asked if I had seen the review on Slashdot. I laughed a bit and said I had. I read this book many months ago, and told my boss about it.

    "How Tomcat Works" is a potentially good idea, done badly.

    The writing is awful. Not just inelegant, but frequently so bad that it gets in the way of the ideas being presented. Spelling, typos, grammar problems, convoluted sentences, miswordings that invert the meaning of a sentence entirely: this book has all that, and more. A fourth grade teacher with a red pen would have made this a much better book.

    A book on "Tomcat Internals" is a wonderful idea; Tomcat's a somewhat complicated beast. But the approach that this book takes... it just didn't work for me. It's possible that I simply couldn't get past the bad writing. Or it may simply be that it doesn't meet my needs. I'm familiar enough with Tomcat that I don't need it explained in tiny little baby steps. What I do need, when I'm up to my ankles in Tomcat internals and trying to solve a particular problem and get on with my life, is a clean, well organized book that will quickly get me oriented, refresh my memory on the relevant bits of Tomcat's architecture, and point me to the solution to my problem. This book fails to do that.

    The production values in this book leave a lot to be desired. There aren't enough diagrams, and, at least in my edition, the few that do appear are printed at very low resolution. The index is a joke. (Hint for the authors: a quick indexing script doesn't always make a useful index, okay? Second hint: hyphens denoting sequential pages are cool.)

    I've learned a lot about Tomcat since reading this book... mostly by wading through the source code. After a quick initial read-through, "How Tomcat Works" has stayed on my bookshelf, untouched, for at least five or six months. This book will join "Apache Server Commentary" in the pile of books that seemed like a really good idea, but in the end, were much less helpful than I had hoped.

    If you just need a book on installing or using Tomcat, or writing Java servlets in general, there are many better books. If you need a book on Tomcat internals, you probably need a better book than this one.

  22. Re:I don't want to start a holy war by MaxwellStreet · · Score: 2, Informative

    Remember that JSP's are simple shorthand for objects that eventually get compiled into full-fledged servlets upon their use (or earlier, if you precompile them when deploying your app). The difference between JSP's & servlets is a development-time issue only.

    And there is no reason at all to mix business logic & content - in fact, application frameworks like Struts make it *hard* to do so.

    The rest - slowness, memory use, etc. - could apply to any commonly used platform. I've seen studies that put certain types of java code as faster than the "managed" code of the .NET framework. Unless you're coding your web pages in C, this "slowness" or "memory use" will be an issue, as anything else (.NET, perl, php, etc.) is all interpreted.

    Or perhaps IHBT. HAND.

  23. Tomcat is NOT a J2EE server by danwiz · · Score: 5, Informative

    It is useful for not only those using Tomcat or those working with servlets/JSP/J2EE ...

    As a J2EE programmer, I find the reviewer's statement to be a bit misleading.

    Tomcat is not a J2EE server. The J2EE specification deals with Web Components (Servlets, JSPs) and EJBs (various EJB types and related services). Tomcat only satisfies part of the the full J2EE specification by serving Servlets and JSPs. Therefore, Tomcat is only a Web Container.

    JBoss is an example of a J2EE compliant app server.