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 |
| PDF |
Page Page 225
United States |
" it doesn�t define one for simple protocols like . "
is an incomplete sentence.
Note from the Author or Editor: Last paragraph of PDF p. 225 there is an incomplete sentence.
..... it doesn't doesn’t define one for simple protocols like.
Expand this sentence to
it doesn’t define one for simple protocols like Basic or Digest authentication.
|
Arun Gupta |
Dec 03, 2013 |
Aug 14, 2015 |
|
Chapter 13. Asynchronous JAX-RS
Server Asynchronous Response Processing > Exception Handling |
The sample code takes "AsyncResponse response" as an argument, then inside the Thread.run() method it creates "Response response" (same name). Therefore response.resume(response); will generate a compiler error. It doesn't find a method "resume" for Response.
public void submit(final Order order,
final @Suspended AsyncResponse response) {
new Thread() {
public void run() {
...
Response response = Response.ok(confirmation,
MediaType.APPLICATION_XML_TYPE)
.build();
response.resume(response);
}
}.start();
}
We should rename the Response object inside Thread.run to something else to avoid hiding the AsyncResponse object.
Something like:
Response r = Response.ok(confirmation,
MediaType.APPLICATION_XML_TYPE)
.build();
response.resume( r );
Note from the Author or Editor: p. 194 of PDF Change code block to:
Response res= Response.ok(confirmation,
MediaType.APPLICATION_XML_TYPE)
.build();
res.resume(response);
|
Hani Ezzadeen |
Dec 08, 2013 |
Aug 14, 2015 |
|
Chapter 13. Asynchronous JAX-RS
Server Asynchronous Response Processing > Timeouts |
The following code generates a compiler error
response.setTimeoutHandler(
new TimeoutHandler {
void handleTimeout(AsyncResponse response) {
response.resume(Response.serverError().build());
}
}
);
There is a missing "()" for the TimeoutHandler constructor. Also, the handleTimeout method must be declared "public".
The code without the missing parts would be:
response.setTimeoutHandler(
new TimeoutHandler() {
public void handleTimeout(AsyncResponse response) {
response.resume(Response.serverError().build());
}
}
);
Note from the Author or Editor: p. 196 of PDF, the last code block should be
response.setTimeoutHandler(
new TimeoutHandler() {
public void handleTimeout(AsyncResponse response) {
response.resume(Response.serverError().build());
}
}
);
|
Hani Ezzadeen |
Dec 08, 2013 |
Aug 14, 2015 |
|
United States |
Chapter 17, "Example Requirements and Structure" states JDK 6.0 or later is required. When I used the examples in Rest Easy3.0.7 and tried to build ex03_1, I found that JDK 7 is actually required in order for the build to complete successfully.
Note from the Author or Editor: p. 251 of print. Change
"JDK 6.0 or later" to "JDK 7.0 or later"
|
Greg Totsline |
May 04, 2014 |
Aug 14, 2015 |
| Mobi |
Page loc 776
First sentence |
The word "is" is missing from "While it usually possible …"
Note from the Author or Editor: p. 22 of PDF. 2nd paragraph is missing an "is"
White it usually possible
should change to
Whilte it is usually possible
|
Vincent van ’t Zand |
May 14, 2015 |
Aug 14, 2015 |
|
2
Chapter 8 - Building and Invoking Requests |
The following code will give a compiler error because of the "accept()" method. The method "request()" is missing. It should precede "accept()".
Customer customer = client.target("http://commerce.com/customers/123")
.accept("application/json")
.get(Customer.class);
List<Customer> customer = client.target("http://commerce.com/customers")
.accept("application/xml")
.get(new GenericType<List<Customer>>() {});
Note from the Author or Editor: P. 117 of PDF last code block add .request() before .accept()
.request().accept("application/json")
P. 118 of PDF, first code block, add .request() before .accept()
.request().accept("application/xml")
|
Hani Ezzadeen |
Dec 02, 2013 |
Aug 14, 2015 |
| PDF |
Page 47
First code for the HTTP request |
PUT /orders/233 HTTP/1.1
Content-Type: application/xml
<product id="111">
<name>iPhone</name>
<cost>$149.99</cost>
</product>
If this request is for changing the product´s price, why is the resource path "/orders/233"? I would expect "/products" instead.
Thanks.
Note from the Author or Editor: In the code block in the middle of p. 23 of the PDF, change
PUT /orders/233 HTTP/1.1
to
PUT /products/111 HTTP/1.1
|
Frederico Pereira |
Apr 27, 2015 |
Aug 14, 2015 |
| Printed |
Page 130
last paragraph |
Missing space between "deal" and "with".
|
Anonymous |
Jun 06, 2014 |
Aug 14, 2015 |
| PDF |
Page 172
at the end of the method filter of CacheControlFilter |
replace req.getHeaders
by res.getHeaders
Note from the Author or Editor: In code block on page 172, replace
req.getHeaders
with
res.getHeaders
|
Richard Grin |
Sep 02, 2014 |
Aug 14, 2015 |
| Printed |
Page 210
Source Code |
Dear author,
In the code example that shows injecting ServletContext in Application class to initialize resources with servlet context parameters, you've injected ServletContext well,however in getSingleton() method, you're also initializing a new InitialContext() to get the values for context parameters. It appears these values should be pulled from ServletContext instance.
Note from the Author or Editor: p. 210 of printed. change this code
try {
InitiialContext ctx = new InitialContext();
Integer size = (Integer)ctx.getInitParameter(...);
Changes to make/
1. Remove the InitialContext ctx = new IntiailContext() line entirely
2. The next line changes to
Integer size = (Integer)servletContext.getInitParameter(
|
Anand Prakash |
Feb 28, 2014 |
Aug 14, 2015 |
| PDF |
Page 225
United States |
It says "For example, the RESTEasy framework provides a ContainerRequestFilter" but it is a ClientRequestFilter.
Note from the Author or Editor: p. 225 of PDF. Change last sentence of last paragraph
From:
the RESTEasy framework provides a ContainerRequestFilter
to:
The RESTEasy framework ClientRequestFilter
|
Christopher M. Judd |
Jul 22, 2014 |
Aug 14, 2015 |
| PDF |
Page 225
United States |
The code example at the bottom of the page shows calling the newClient method on client. That method does not exist. Instead it should be ClientBuilder.newClient(). See http://docs.oracle.com/javaee/7/api/javax/ws/rs/client/ClientBuilder.html#newClient().
Note from the Author or Editor: P. 225 of PDF code fragment near end of page
change:
Client client = Client.newClient();
to
Client client = ClientBuilder.newClient();
|
Christopher M. Judd |
Jul 22, 2014 |
Aug 14, 2015 |
| Printed |
Page 227
last sentenct of first paragraph |
"separate" is misspelled
Note from the Author or Editor: p. 227 of print, last sentence first paragraph
seperate change to correct spelling of separate
|
Anonymous |
Jun 06, 2014 |
Aug 14, 2015 |
| Mobi |
Page 10285
United States |
3. Perform the build by typing maven install.
should be
3. Perform the build by typing mvn install
Note from the Author or Editor: Throughout the whole book replace
Perform the build and run the example by typing maven install.
with
Perform the build and run the example by typing mvn install.
|
Mark Glass |
Nov 29, 2013 |
Aug 14, 2015 |