Java Enterprise in a Nutshell, 2nd Edition by William Crawford, Jim Farley, David Flanagan The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification This page was updated May 23, 2005. UNCONFIRMED errors and comments from readers: [x] table of contents, also p462, after p722, throughout ch45; Entire chapter describing package javax.servlet.jsp.tagext is missing. As well, references to that packages classes, methods and fields are omitted from Chapter 45. This is a very serious omission. (36) 3rd paragraph (listing); The line Clob clob = blobResultSet.getBlob ("CLOBFIELD"); shoukd read Clob clob = clobResultSet.getClob ("CLOBFIELD"); (40) top of page, example code; The page number is from the first edition, but judging from the sample chapter it exists in the new version as well. stmt.addBatch("INSERT INFO CUSTOMERS VALUES (1, "J SMITH", "617 555-1323"); This should be: stmt.addBatch("INSERT INFO CUSTOMERS VALUES (1, 'J SMITH', '617 555-1323')"); It applies for the other addBatch() lines as well. [52] Example 3-2; The AccountImpl class example does not have a constructor. [52] 2nd paragraph; The error is within a sample piece of code: The comment in the code begins // Create a new account with the given name } However no implementation of the account creation is provided. (64) last line; The line Account jimsAccount = (Acount) ... should read Account jimsAccount = (Account) ... (180) both xml samples (web.xml and .tld file); samples not indented [197] first paragraph; The reader is encouraged to download the sample code. (There is also reference to a download location in the Preface (#Examples Online). There is not any code to download. *note* The samples code will be online soon. {197} 2nd paragraph (in code: main() function); The line: shell.readInput(); should read: NamingShell.readInput(); NOTE FROM ANOTHER READER: I note that the downloadable examples have the following main() method, which adds the line creating a new NamingShell object & works correctly: public static void main(String[] args) { NamingShell shell = new NamingShell(args); shell.readInput(); System.out.println("Exiting"); } {213} Sample code at bottom of page; The statement newAttr.add("telephonenumber", "520 765 4321"); will not compile, because the BasicAttribute class has no add method that takes two Strings. The code should be BasicAttribute newAttr = new BasicAttribute( "telephonenumber" ); newAttr.add( "520 765 4321" ); or, alternatively, BasicAttribute newAttr = new BasicAttribute( "telephonenumber", "520 765 4321" ); (350) 1st paragraph; "Any JMS header field name can be used as an identifier, except for JMSDestination ..., which can be used as identifiers in a message selector." In order for this sentence to make sense, the last part must read: "... which CAN'T be used as identifiers in a message selector." (367) 2nd paragraph; The last sentence of the paragraph starts as follows: Once a message has been expunged, the message numbers within the folder (returned by the getMessageNumber() method of Message). Then, it simply stops, but we never learn what actually happens to the line numbers ... [378] CREATE TABLE Syntax; In the CREATE statement, shouldn't the syntax for column_size be shown as [ ( column_size ) ] ? Doesn't the size need to be specified in parens? (969) Line 13, first column; In the Index, under "transactions", there is a subsection titled "EBJ", which should be "EJB".