The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".
The following errata were submitted by our customers and approved as valid errors by the author or editor.
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
Printed |
Page 6
Last line of comments on the page |
The word applicatation (vs. application) is misspelled in the last line beginning with "Once the..."
Note from the Author or Editor: Last line on page 6:
The word "applicatation" should be "application"
|
Frank Hellwig |
Oct 14, 2009 |
|
Printed |
Page 12
2nd bullet |
MIME = Multipurpose Internet Mail Extensions
Note from the Author or Editor: Page 12, 2nd bullet: the definition of MIME in the bullet is wrong. The
current text is
...with a MIME (Multiple Internet Mail Extension)...
It should be changed to
...with a MIME (Multipurpose Internet Mail Extensions)...
|
C.P. Byrman |
May 25, 2009 |
Sep 01, 2009 |
Printed |
Page 14
1st paragraph |
The class QName belongs to java[b]x[/b].xml.namespace, not java.xml.namespace.
Note from the Author or Editor: On p. 14, 1st paragraph, the fully qualified name should be
javax.xml.namespace.QName
instead of
java.xml.namespace.QName
|
Ralf Wahner |
Aug 28, 2010 |
|
Printed |
Page 14
2nd paragraph in the statement of code. In code and paragraph. |
Appearing twice.
1st, in the line of code:
TimeServer port = service.getPort(TimeServer.class);
is referred to in the preceding line as the statement of interest. However; the example to which this line is referring is Example 1-9 from the previous page which uses 'eif' for the variable name instead of 'port'.
The line of code should read:
TimeServer eif = service.getPort(TimeServer.class);
2nd, in the 4th sentence.
"The port object reference..."
should read:
"The eif object reference..."
with 'eif' in bold.
Note from the Author or Editor: On page 14, two changes:
The indented code line in roughly the middle of the page is
TimeServer port = service.getPort(TimeServer.class);
It should be
TimeServer eif = service.getPort(TimeServer.class);
So "TimeServer port = ..." should be "TimeServer eif = ...".
The 2nd change is in the immediately following paragraph, last word in 3rd line:
...operations. The port
should be
...operations. The eif
The "eif", like the "port" it replaces, should be in bold typeface.
|
Brent Reusing |
Apr 30, 2009 |
Sep 01, 2009 |
Printed |
Page 30
1st paragraph |
You refer to "ThreadPoolWorker" but there is no other reference to this and I have not been able to find this term on the Internet.
By some chance should this term have been "ThreadPoolExecutor".
Note from the Author or Editor: p. 30, 1st paragraph after the indented code:
"Once the ThreadPoolWorker has..." should be
"Once the ThreadPoolExecutor has..."
So "ThreadPoolWorker" should be "ThreadPoolExecutor"
The typeface should stay the same.
|
Enrique Caliz |
Apr 24, 2009 |
Sep 01, 2009 |
Printed |
Page 34
last line |
The referenced wsimport-generated class, "client.TempServerImplService", should have been "client.TimeServerImplService ".
Note from the Author or Editor: Page 34, last line:
client.TempServerImplService
should be
client.TimeServerImplService
So "Temp" should be "Time" and all else remains the same.
|
Dale Jones |
Sep 15, 2009 |
|
Printed |
Page 39
From "The TimeServer service can be changed to a document-style service ..." |
The paragraphs on page 39, beginning at "The TimeServer service
can be changed to a document-style service ..." to the beginning
of the next subsection "Key Features of Document-Style Services"
seem to contain six related typos.
Given, that "chapter2/ch02/tsd" (note the trailing "d") in the
source code distribution contains the code for subsection "A
Closer Look at WSDL Bindings", then, the content of "chapter2/ch02/tsd" needs a few rectifications.
--- Rectifications in "chapter2/ch02/tsd":
The current file "ch02.tsd.TimeServer.java" is not the SEI but
the SIB, since it contains a class and not an interface.
The SEI is missing. Solution:
1. Rename "ch02.tsd.TimeServer.java" to "ch02.tsd.TimeServer-
Impl.java" (SIB) and change "class TimeServer" to "class
TimeServerImpl" in the new file.
2. Copy "ch01.ts.TimeServer.java" from "chapter1" to "ch02.tsd-
.TimeServer.java" (SEI) and change "package ch01.ts" to
"package ch02.tsd" in the new file.
3. In the Endpoint-Publisher "ch02.tsd.TimeServerPublisher.java"
change "new TimeServer()" to "new TimeServerImpl()".
The wsgen utility know works and generates four source and four
compiled files in the "jaxws" subdirectory.
--- Six related typos (change package infix "ts" to "tsd"):
+ "... in the SEI source, ch02.tsd[not "ts"].TimeServer.java,
before recompiling."
+ "The package has been changed from ch01.ts to
ch02.tsd [not "ts"] to reflect that this is Chapter 2."
+ "% wsgen -keep -cp . ch02.tsd[not "ts"].TimeServerImpl"
+ "The wsgen utility then ... in the subdirectory
ch02/tsd[not "ts"]/jaxws."
+ "... at the published URL
http://localhost:9876/tsd[not "ts"]?wsdl."
+ "...: the package name changes from ch01.ts to
ch02.tsd[not "ts"], ..."
Note from the Author or Editor: On page 39, the package name
ch02.ts
should be
ch02.tsd
|
Ralf Wahner |
Oct 27, 2010 |
|
Printed |
Page 44
Example 2-8 & 2-9 |
The closing tag of the num2 parameter in boch the wrapped and unwrapped sample should be </num2> instead of </num1>.
Note from the Author or Editor: In Example 2-8 on p. 44, the 8th line
...>94</num1>
should instead be
...>94</num2>
On the same page in Example 2-9, the 8th line
<num2>94</num1>
should instead be
<num2>94</num2>
|
Dominik Gruntz |
Mar 27, 2009 |
Sep 01, 2009 |
Printed |
Page 46
Entire section on the Amazon web services |
After the book's publication, Amazon changed the API. I've noted the problem in the current errata but have added a ZIP with a fix for all of the Amazon clients. The code is available at:
http://condor.depaul.edu/mkalin
|
Martin Kalin |
Aug 27, 2012 |
|
Printed |
Page 47
in code, just below the middle of page |
The given code, that is supposed to connect to Amazon AWS does not work as described. It gives an error - BAD REQUEST. This is because the target system (Amazon AWS) has changed. A small update needs to be made to the code to fix the issue that readers will definitely face. You can find more details of the fix at this location:
http://www.coderanch.com/t/466397/Web-Services/java/Up-Running-not-so-much
Thanks.
Note from the Author or Editor: Amazon has changed the rules about accessing the E-Commerce service. A full report can be found at
http://www.coderanch.com/t/466397/Web-Services/java/Up-Running-not-so-much
The short version for the AmazonClientW code on p. 47 is to add
...
final String secret_key = args[1];
// Construct a service object to get the port object.
AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver(secret_key));
...
Amazon now requires both the "access key" and the "secret key" even for their free Web services.
|
Gopal Sharma |
Jan 31, 2010 |
|
|
47
|
Hi, I have found the solution for the current WSDL's problem. the url fed to wsimport and custom.xml should be changed to
//http://ecs.amazonaws.com/AWSECommerceService/2009-11-01/AWSECommerceService.wsdl. Because the current wsdl without the time-stamp in the link won't work as expected. Thanks for your invaluable book again.
Ozgur Aydogan
Note from the Author or Editor: The URL for Amazon's E-Commerce service, given in the wsimport command, should be changed to
http://ecs.amazonaws.com/AWSECommerceService/2009-11-01/AWSECommerceService.wsdl
That's all on the same line, of course. Amazon regularly changes the WSDL; hence, this version should work.
|
comptrol |
May 26, 2010 |
|
Printed |
Page 47
Code Example |
The AWSClientW.java example requires a HandlerResolver on the service to handle the secret key which is required to authenticate to the service. Otherwise you will receive a 400 Bad Request Error message.
A feature complete example HandlerResolver can be found on the forum under http://developer.amazonwebservices.com/connect/thread.jspa?threadID=35999
The resolver is called AwsHandlerResolver and requires the commons-codec-1.3.jar to work.
Note from the Author or Editor: Since the book's publication, Amazon has changed the rules for accessing the so-called E-Commerce service. A full clarification is available at
http://developer.amazonwebservices.com/connect/thread.jspa?threadID=35999
I've a ZIP file with the required changes in the code available at:
http://condor.depaul.edu/mkalin
|
John Yeary |
Sep 28, 2010 |
|
Printed |
Page 49
1st paragraph |
"XSD's message section" should be "WSDL's message section".
Note from the Author or Editor: 1st full paragraph, 2nd sentence should read:
Here is a segment from the WSDL's message section...
Right now it has "XSD's" instead of "WSDL's"
|
C.P. Byrman |
Mar 31, 2009 |
Sep 01, 2009 |
Printed |
Page 52
3rd paragraph, last sentence |
In the sentence "Here is the call to invokeSearch in the simplified client", invokeSearch should be itemSearch.
Note from the Author or Editor: In the sentence "Here is the call to invokeSearch in the simplified client", the term "invokeSearch" should be "itemSearch".
|
Jakob Eriksen |
Mar 20, 2012 |
|
Printed |
Page 54
Top of page |
First sentence describes custom.xml as having a
Note from the Author or Editor: Page 54, end of 1st sentence. The last word in the sentence is "true" but should be "false" --- and the typeface should remain monospace.
This is immediately above Example 2-15.
|
Dan Kleber |
Jul 14, 2009 |
Sep 01, 2009 |
Printed |
Page 58
source code example |
In the main() method the main thread is sent to sleep for 400 milliseconds by following code:
MyHandler myHandler= new MyHandler();
port.itemSearchAsync(search, myHandler);
try{
Thread.sleep(400);
}catch.....
This is a wrong coding approach as the main thread will return to running state after 400+ milliseconds and will end without waiting for the the asynchronous result from the itemSearchAsync() method.
Solution: we should keep the main thread waiting on the myHandler object using following code:
MyHandler myHandler= new MyHandler();
port.itemSearchAsync(search, myHandler);
try{
synchronized (myHandler) {
myHandler.wait();
}
}catch...
A similar notify() needs to be called on the myHandler object from handleResponse() method in static inter class MyHandler, something like this:
synchronized (this) {
this.notify();
}
Note from the Author or Editor: P. 58, code comment
// In this case, just sleep to give the search process time.
// In a production application, other useful tasks could be
// performed and the application could run indefinitely.
should be changed to
// Thread.sleep(400) sleeps the main thread but does not synchronize
// with the handleResponse callback: the point here is to illustrate
// the general structure of an asynchronous client.
|
Vivek Malhotra |
Mar 22, 2011 |
|
Printed |
Page 66
run_example() code segment |
wsgen generated GetTimeAsElapsedResponse has functions getReturn and setReturn, not get_return and set_return.
In order to get this example to run, I needed to change :
tr.set_return(new java.util.Date().getTime()
to:
tr.setReturn(new java.util.Date().getTime()
Note from the Author or Editor: Example 2-20, the run_example() method:
tr.set_return(...);
should be
tr.setReturn(...);
|
richgt02 |
Mar 26, 2010 |
|
Printed |
Page 67
2nd paragraph, excluding code at the top |
"The maximam value of the Java..." should be "The maximum value of the Java..."
Note from the Author or Editor: Page 67, 2nd full paragraph, last sentence:
"The maximam value..." should be "The maximum value..."
In short, "maximum" is misspelled as "maximam."
|
Nils F Karlsson |
Jan 24, 2010 |
|
Printed |
Page 67
1st paragraph excluding code at top |
In the 4th line: ?? important namespace URI is the same in both: http://ts.ch01.? ? missing slash at the end. It should be ?? in both: http://ts.ch01/.?
Note from the Author or Editor: P. 67, 1st full paragraph, 4th line:
...is the same in both: http://ts.ch01. In the SOAP...
should be
...is the same in both: http://ts.ch01/. In the SOAP...
|
Daniel Kre?ner |
Apr 11, 2010 |
|
Printed |
Page 74
4th paragraph |
in description
Note from the Author or Editor: 4th paragraph, 4th line (next to last line):
"portTypeM" should be "portType"
|
Anonymous |
Jul 06, 2009 |
Sep 01, 2009 |
Printed |
Page 79
2nd paragraph |
There is a comma missing in "Universal Description Discovery and Integration"; it should be "Universal Description, Discovery and Integration".
Note from the Author or Editor: "Universal Description Discovery and Integration" should be
"Universal Description, Discovery, and Integration"
|
Jakob Eriksen |
Mar 21, 2012 |
|
Printed |
Page 83, 84
Multiple locations |
On several places, "uddi" is used instead of "uuid" to refer to the header block. An understandable typo in this context!
Note from the Author or Editor: "uddi" should be replaced by "uuid" on p. 83.
|
C.P. Byrman |
Mar 30, 2009 |
Sep 01, 2009 |
Printed |
Page 83
Several locations |
Instead of "uuid", "uddi" is used (3 times) to refer to the header block. An understandable typo in the context of web service!
The next page (84) also has this typo (1 time).
Note from the Author or Editor: On p. 83, the acronym UDDI (in lowercase and in uppercanse) should be
replaced by UUID (maintaining case in the replacement). The first time
is right above Example 3-1: "uddi" should be "uuid".
The second time is right after the example: "uddi" should be "uuid".
The last time is the 3rd sentence after the example: "UDDI" should be
"UUID".
On page 84, 1st sentence, "uddi" should be "uuid".
|
C.P. Byrman |
Mar 30, 2009 |
Sep 01, 2009 |
PDF |
Page 92
1st paragraph, last sentence |
"How many ways can
this person traverse, say, a 100 meters? The answer is fib(100): 3,314,859,971."
The 100th fibonacci number is 354224848179261915075. The is way over what a JAVA primary int can hold though. BigInteger can be used to calculate this bigger integer however.
Thanks,
Otoniel
Note from the Author or Editor: fib(100), the 100th Fibonacci number, is not 3,314,859,971 but, rather, 354,224,848,179,261,915,075 -- well beyond the range of a Java 32-bit signed int.
|
Otoniel Ortega |
Jan 29, 2013 |
|
Printed |
Page 93
End of Example 3-5 |
In method getHandlerChain(...) the return statement is missing. Should be return hchain;
Note from the Author or Editor: In Example 3-5, the code now ends
hchain.add(new TestHandler()); // for illustration only
}
}
It should end
hchain.add(new TestHandler()); // for illustration only
return hchain;
}
}
So the line "return hchain;" needs to be added.
If spacing becomes a problem because of the additional line, either of the two blanks lines in the code above in Example 3-5 can be removed.
|
Dominik Gruntz |
Mar 30, 2009 |
Sep 01, 2009 |
Printed |
Page 98 - 101
Testing UUIDValidator |
-------
Context:
-------
On pages 100 & 101 include snippets of code given as examples of
Note from the Author or Editor: 1. Page 100, 16 lines from the bottom:
in fibC.UUIDValidator could be commented....
should be
in fibC.UUIDHandler could be commented...
So "UUIDValidator" should be "UUIDHandler"
|
Dan Kleber |
Jul 22, 2009 |
Sep 01, 2009 |
Printed |
Page 100
middle |
The(server-side) handler-chain.xml in ch03/fib is missing in the download. The client-side handler chain (in fibC) is in the download.
Note from the Author or Editor: The server-side file handler-chain.xml is missing in the code, which needs to be fixed. The change is minor, however, in that the UUIDValidator is now the handler instead of the UUIDHandler.
|
Mike Sweeney |
Mar 06, 2010 |
|
Printed |
Page 101
Last paragraph |
SOAPMessageHandler and LogicalMessageHandler should be SOAPHandler and LogicalHandler, respectively. The next page (102) has the same typo in the first paragraph.
Note from the Author or Editor: p. 101, last paragraph:
Replace "SOAPMessageHandler" with "SOAPHandler"
Replace "LogicalMessageHandler" with "LogicalHandler"
|
C.P. Byrman |
Mar 30, 2009 |
Sep 01, 2009 |
Printed |
Page 103
1st line |
UUIDValidator (i.e. the server-side handler) should be changed into UUIDHandler (i.e. the client-side handler).
Note from the Author or Editor: p. 103, 1st line: replace "UUIDValidator" with "UUIDHandler"
|
C.P. Byrman |
Mar 30, 2009 |
Sep 01, 2009 |
Printed |
Page 103
Center |
"..., but SOAP 1.1 does not offer a way to make the expectation explicit."
This statement needs some clarification, because SOAP 1.1 also has the mustUnderstand attribute:
http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383500
Note from the Author or Editor: The error occurs in the middle of the page, with the paragraph that starts:
The mustUnderstand makes explicit....
The easiest fix to this technical mistake is to shorten the last sentence in the paragraph to:
Even in SOAP 1.1, of course, such processing may occur.
In other words, drop the ", but SOAP 1.1 does not offer a way to make the expectation explicit."
The page will be short a sentence. I hope that this doesn't force any changes.
|
C.P. Byrman |
Mar 31, 2009 |
Sep 01, 2009 |
Printed |
Page 104
1st paragraph |
LogicalMessageMessageContext should be LogicalMessageContext.
Note from the Author or Editor: 4th line from top: "LogicalMessageMessageContext" should be
"LogicalMessageContext"
|
C.P. Byrman |
Mar 31, 2009 |
Sep 01, 2009 |
Printed |
Page 108
Between 1st & 2nd sentences |
The trailing backslash in:
% java EchoClient http://localhost:9797/ echo
causes a 404 not found since EchoClient already adds a backslash with:
args[0] +
Note from the Author or Editor: p. 108, near the top, one line of code displayed is:
% java EchoClient http://localhost:9797/ echo
should be
% java EchoClient http://localhost:9797 echo
So the slash in 9797/ should be removed to give just 9797
|
Dan Kleber |
Jul 23, 2009 |
Sep 01, 2009 |
Printed |
Page 117
Using MTOM for Binary Data |
To enable MTOM, I had to take to extra steps:
1) I had to remove the @HandlerChain annotation. It appears that dumping the message in a server-side handler effectively disables MTOM. See: http://forums.java.net/jive/message.jspa?messageID=336446.
2) I also had to use the latest JAX-WS version from https://jax-ws.dev.java.net. Of course, this might depend on your environment.
Note from the Author or Editor: On p. 117, 10 lines from the top is
@HandlerChain(file = "handler-chain.xml") // for message tracking
Change this line to:
//** @HandlerChain(file = "handler-chain.xml") // disable for MTOM
|
C.P. Byrman |
Apr 15, 2009 |
Sep 01, 2009 |
Printed |
Page 140
line 16 in code example |
the PUT request can be used to update a team's name. The implementation however does copy the team under the new name, the team will still be available under the old name. Moreover, in contrast to the doPost method which checks upon creation of a new team whether there exists already a team under the given name, the doPut shoud perform the same test.
if(team_map.containsKey(new_name))
throw new HTTPException(400);
team_map.remove(name);
team_map.put(new_name, team);
If you change the code, the complete listing on pages 140-146 has to be adjusted as well.
Note from the Author or Editor: This is a minor technical mistake whose correction involves adding more lines to the code and thus changing the lines per page.
My judgment is to let it go. The code works as is but would be better with the proposed change.
|
Dominik Gruntz |
Apr 10, 2009 |
|
Printed |
Page 153
constructor of class NSResolver |
the default constructor of NSResolver creates new maps if the references are null. The null tests are not necessary as the two references prefix2uri and uri2prefix are always null.
public NSResolver(){
prefix2uri = Collections.synchronizedMap(...);
uri2prefix = Collections.synchronizedMap(...);
}
Note from the Author or Editor: On p. 153, the code segment near the top (12 lines down)
public NSResolver() {
if (prefix2uri == null) prefix2uri =
Collections.synchronizedMap(new HashMap<String, String>());
if (uri2prefix == null) uri2prefix =
Collections.synchronizedMap(new HashMap<String, String>());
}
can be simplified to
public NSResolver() {
prefix2uri =
Collections.synchronizedMap(new HashMap<String, String>());
uri2prefix =
Collections.synchronizedMap(new HashMap<String, String>());
}
This change doesn't add or subtract any lines.
|
Dominik Gruntz |
Apr 10, 2009 |
Sep 01, 2009 |
Printed |
Page 169
YahooClient.main, between "int len = resultList.getLength" and end |
The code in my copy of the book (Feb 2009 1st edition) and in the accompanying jar file (jwsur_code.jar) downloaded from oreillynet.com is different, and neither version gives me the expected result.
Using the code from the book (apologies if I've missed anything in transcription, I've double-checked) gives an exception: "javax.xml.transform.TransformerException: Extra illegal tokens: '(', '1', ')', '/', 'urn:yahoo:yn', ':', 'Title'"
Using the downloaded code produces ten identical result lines (save for the line number given by variable i) on the console.
The following amendment worked for me, though there's probably a better way (NB - had to import org.w3c.dom.Node to make this work):
int len = resultList.getLength();
for (int i = 0; i < len; i++) {
Node thisResultNode = resultList.item(i);
NodeList thisResultNodeChildren = thisResultNode.getChildNodes();
String title = thisResultNodeChildren.item(0).getFirstChild().getNodeValue();
String click = thisResultNodeChildren.item(3).getFirstChild().getNodeValue();
System.out.printf("[%d] %s\n", (i + 1), title + " - " + click);
}
Note from the Author or Editor: I've contacted the reader directly. My code runs as advertised.
The code in display at the top of p. 169 is wrong. The code in the book shows
String title =
xp.evaluate("/yn:ResultSet/yn:Result(" + i + ")/yn:Title",
dom_result.getNode());
but should show
String title =
xp.evaluate("/yn:ResultSet/yn:Result[" + i + "]/yn:Title",
dom_result.getNode());
This occurs twice in the code display. In summary, there should be square brackets [ ] rather than round brackets ( ) in the segment
...:Result[" + i + "]...
|
Roger Winchester |
Sep 19, 2009 |
|
Printed |
Page 184
2nd line from bottom |
I think, that the output should be
<string>Goodbye, cruel world!</string>
as the curl command specifies a msg parameter.
Note from the Author or Editor: On p. 184, the second to last line should be changed from
<string>Hello, world!</string>
to
<string>Goodbye, cruel world!</string>
|
Dominik Gruntz |
Apr 10, 2009 |
Sep 01, 2009 |
PDF |
Page 199
Final paragraph |
SRP is expanded as Secure Remote Protocol, but per http://srp.stanford.edu/ it is Secure Remote Password.
Note from the Author or Editor: Page 199, third line from bottom:
(Secure Remote Protocol) should be (Secure Remote Password protocol)
|
Chris Hodapp |
Aug 08, 2011 |
|
Printed |
Page 201
Last paragraph |
Last sentence reads: "In development phase, however, it may be useful to turn off validation because, for example, the truststore has does not contain the appropriate certificates".
Should perhaps be:
"In the development phase, however, it may be useful to turn off validation because, for example, the truststore does not contain the appropriate certificates".
Note from the Author or Editor: P. 201, last sentence:
In development phase,...
should be changed to
In the development phase,...
|
Bjarne Mundal |
Nov 30, 2009 |
|
Printed |
Page 204
In the publicsh method |
In the publish method, the line
HttpContext http_ctx = server.createContext(path);
is redundant, as the context is already set in the get_https_server method.
Error found by Steve Talbot.
|
Martin Kalin |
Jan 26, 2010 |
|
Printed |
Page 213
Deploying a @WebService Under Tomcat |
In order to run the example under Tomcat it seems that it is necessary to copy JAX-WS librairies (which can be downloaded from https://jax-ws.dev.java.net/) in TOMCAT_HOME/shared/lib. If not, the class com.sun.xml.ws.transport.http.servlet.WSServletContextListener cannot be found when the the web application starts.
Note from the Author or Editor: p. 213
In order to deploy JAX-WS applications under Tomcat, the Metro packages (downloadable from https://jax-ws.dev.java.net) should be copied into TOMCAT_HOME/lib. Tomcat then should be restarted.
|
Sylvain Noyon |
May 16, 2010 |
|
PDF |
Page 213
Fifth paragraph, right before the web.xml snippet |
The name of the second class that should be used from JAX-WS 2.1 is WSServletContextListener instead of WSServletContainerListener. It is actually shown correctly on the next page.
Note from the Author or Editor: On p. 213, immediately above the XML snippet at the bottom of the page, the class name WSServletContainerListener should be
WSServletContextListener
|
Gustavo Garnica |
Oct 26, 2010 |
|
Printed |
Page 244
Very last sentence |
The last line
% wsimport -keep -p clientC...
should be
% wsimport -keep -p teamsC...
So the package for the client artifacts should be teamsC rather than clientC.
|
Martin Kalin |
Feb 05, 2010 |
|
Printed |
Page 251
First code script |
The example on page 250 - 251 shows a browser based client of a web service. The jsp page that actually calls the web service (page 251) uses 3 instance variables (f2c, c2f and temp).
I think that the best choice is to use local variables instead since the web container creates just one instance of each servlet and the access to the state of a servlet is not thread-safe (as the author states on page 241: "EJBs, unlike servlets, are thread-safe....").
Thanks a lot.
Note from the Author or Editor: In Example 7-3 (pages 250-1), the JSP script would be thread-safe (hence, better) if f2c, c2f, and temp were local variables rather than instance fields.
|
Nico Tanzarella |
Sep 15, 2013 |
|
Printed |
Page 256
line 8: |
on page 256, line 8: It says "EBJ-Based" in the paragraph heading. I think it should have been "EJB-Based" instead.
Note from the Author or Editor: On p. 256, the header on line 8
The Endpoint URL for an EBJ-Based Service
should be
The Endpoint URL for an EJB-Based Service
In short, "EBJ" should be "EJB".
|
Anonymous |
Apr 26, 2010 |
|
Printed |
Page 288
Last sentence of penultimate paragraph on page. |
"Transparent XML sounds like an empty slogan only to someone who has not had to deal directly with large and complicated XML documents."
If you have not dealt with complicated XML documents, would you not consider the slogan to be sensible and correct, i.e. non-empty? In other words, shouldn't the sentence be something more along the lines of:
"Transparent XML is nothing but an empty slogan to everyone who has had to deal directly with large and complicated XML documents."
Note from the Author or Editor: P. 288, 2nd paragraph in SOAP and REST in Harmony section, last sentence:
The sentence
Transparent XML sounds like...
should be changed to
Transparent XML is nothing but an empty slogan to everyone who has had to deal directly with large and complicated XML documents.
The "Transparent XML" should still be in in italics.
|
Bjarne Mundal |
Nov 17, 2009 |
|
Printed |
Page 288
Last sentence in next-to-last paragraph, |
Note from the Author or Editor: p. 288, last sentence, 4th paragraph from top:
"XML dcouments" should be "XML documents"
So the word "documents" is misspelled.
|
Dan Kleber |
Jul 24, 2009 |
Sep 01, 2009 |