The Author Online Book Forums are Moving

The Author Online Book Forums will soon redirect to Manning's liveBook and liveVideo. All book forum content will migrate to liveBook's discussion forum and all video forum content will migrate to liveVideo. Log in to liveBook or liveVideo with your Manning credentials to join the discussion!

Thank you for your engagement in the AoF over the years! We look forward to offering you a more enhanced forum experience.

Susan Harkins (424) [Avatar] Offline
#1
Please post errors in the published version of Spring Microservices in Action. If necessary, we'll publish a comprehensive list for everyone's convenience. Thank you!

Susan Harkins
Errata Editor
Manning Publications
sylvere (4) [Avatar] Offline
#2
Chapter 7 in final version, page 198, Listing 7.2, replace the line
"client_credentials"

with

"client_credentials")

a closing parenthesis is missing.
John C Carnell (44) [Avatar] Offline
#3
Current: "Now we are going to use docker-compose to start the actual image. To start the docker image, change to the docker-compose directory in your chapter 1 source code. Issue the following docker-compose command:

docker-compose -f docker/common/docker-compose.yml up"

There isn't a docker-compose directory, and the form of the command looks like you didn't intend to change directory..
ldejonghe (1) [Avatar] Offline
#4
Very practical book,a must have. These are some errors found ...

Section 3.3.2
For instance, by passing in dev as our profile, the Spring Cloud config server will use the dev properties. If you set a profile, the licensing service will use the default profile.


The last sentence should be " If you don't set ...

The key thing to note from figure 3.7 is that the active profile for the licensing service is dev. By inspecting the returned JSON, you can also see that the Postgres database being returned is a development URI of jdbc:postgresql://database:5432/eagle_eye_dev.


The problem is that the figure in 3.7 list the contents of the default profile...so the description does not match with the figure
447943 (1) [Avatar] Offline
#5
Would appreciate feedback on how to fix the following error on MacOS Sierra when running 'mvn clean package docker:build' from Chaper 10 folder.


[INFO] Building image johncarnell/tmx-authentication-service:${env.BUILD_NAME}
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Eagle Eye Authentication Service ................... FAILURE [ 4.713 s]
[INFO] Config Server ...................................... SKIPPED
[INFO] Eureka Server ...................................... SKIPPED
[INFO] Eagle Eye Licensing Service ........................ SKIPPED
[INFO] Eagle Eye Organization Service ..................... SKIPPED
[INFO] Zuul Proxy Server .................................. SKIPPED
[INFO] thoughtmechanix-parent-pom ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.254 s
[INFO] Finished at: 2017-09-17T09:22:04+01:00
[INFO] Final Memory: 64M/639M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.10:build (default-cli) on project authentication-service: Exception caught: The template variable 'env.BUILD_NAME' has no value -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
jnunderwood (11) [Avatar] Offline
#6
Minor typo on page 50, Listing 2.3...
Exposes all the HTTP endpoints in this class with a prefix of /v1/organizations/(organizationId}/licenses

should be
Exposes all the HTTP endpoints in this class with a prefix of /v1/organizations/{organizationId}/licenses

(opening brace instead of opening parenthesis).
jnunderwood (11) [Avatar] Offline
#7
Page 80, in the NOTE for Figure 3.5...

  • YAML stands for YAML Ain't Markup Language, not Yet Another Markup Language (@see http://yaml.org/)

  • YAML is defined twice
  • jnunderwood (11) [Avatar] Offline
    #8
    Minor typo on Page 80, bootstrap.yml is misspelled...

    Later in the chapter you’ll see how to override the different properties defined in the boostrap.yml and application.yml files on application startup.

    should be
    Later in the chapter you’ll see how to override the different properties defined in the bootstrap.yml and application.yml files on application startup.
    jnunderwood (11) [Avatar] Offline
    #9
    Minor typo on Page 104...
    2. When the licensing service calls to the organization service, it will use the Netflix Ribbon library to provide client-slide load balancing

    should be
    When the licensing service calls to the organization service, it will use the Netflix Ribbon library to provide client-side load balancing
    jnunderwood (11) [Avatar] Offline
    #10
    Missing port number on Page 131, first paragraph under Listing 5.3...
    If you hit the http://localhost/v1/organizations/e254f8c-c442-4ebe-a82a-e2fc1d1ff78a/licenses/ endpoint...

    should be
    If you hit the http://localhost:8080/v1/organizations/e254f8c-c442-4ebe-a82a-e2fc1d1ff78a/licenses/ endpoint...

    Figure 5.5 shows the URL correctly.
    jnunderwood (11) [Avatar] Offline
    #11
    Minor typo on Page 152, bulkhead is misspelled in the Summary section...
  • The bulk head pattern segregates remote resource calls...

  • should be
  • The bulkhead pattern segregates remote resource calls...
  • jnunderwood (11) [Avatar] Offline
    #12
    Missing annotations on Page 174 in Listing 6.6...
    Method declarations for shouldFilter() and run() should include the @Override annotation.
    They are present in Listing 6.13.
    jnunderwood (11) [Avatar] Offline
    #13
    Wrong class mentioned on Page 198-199, with regards to Listing 7.2...
    According to the code, the class OAuth2Config extends AuthorizationServerConfigurerAdapter, not AuthenticationServerConfigurer.
    The wrong class is mentioned in the first and third notations within the listing and twice in the subsequent paragraph. Alternatively, the code itself is incorrect.
    Or I'm just really confused.
    jnunderwood (11) [Avatar] Offline
    #14
    Minor typo, Page 201, in Listing 7.3, in the third notation...
    The UserDetailsService is used by Spring
    Security to handle user information that
    will be returned the Spring Security.

    should be
    The UserDetailsService is used by Spring
    Security to handle user information that
    will be returned [from, by, or to] Spring Security.
    jnunderwood (11) [Avatar] Offline
    #15
    Possible typo on Page 209, Listing 7.6, first notation...
    The antMatchers() method
    allows you to restrict the URL
    and HTTP post that's protected.

    should be
    The antMatchers() method
    allows you to restrict the URL
    and HTTP method that's protected.
    jnunderwood (11) [Avatar] Offline
    #16
    Minor typo on Page 225, Figure 7.13...
    The server on the far left is identified as agleEye web application.
    It should be EagleEye web application.
    vyurik (76) [Avatar] Offline
    #17
    Chapter 3, p.87.
    In my opinion, Listing 3.10 describes the changes in GIT case for application.yml, however the title is
    Listing 3.10 Spring Cloud config bootstrap.yml
    It should be
    Listing 3.10 Spring Cloud config application.yml
    vyurik (76) [Avatar] Offline
    #18
    Running Chapter 9 from final_code produces a series of exception.
    536503 (1) [Avatar] Offline
    #19
    Can not build code chap1: Caused by: java.lang.ClassNotFoundException: com.spotify.docker.Resource
    When i do this on the chapter 1 code
    mvn clean package docker:build -e

    I get the following

    Caused by: java.lang.ClassNotFoundException: com.spotify.docker.Resource

    Anyone any ideas thanks?
    lucidmonkey (1) [Avatar] Offline
    #20
    Minor typo on page 18:
    Location Transparent - How you we ...
    should be
    Location Transparent - How do you ...
    Yury (1) [Avatar] Offline
    #21
    p75Issue.png
    [ 255 KB ]
    I may be missing something, but it seems strange that on page 75 application.yml file from the listing has 'searchLocations' property different from what is mentioned few lines below it (after words "The last piece in the application.yml file provides Spring Cloud configuration with the directory where the application data resides: "). Please see attached screenshot.

    I assume that the second location should be identical to the first one... Am I correct? Thank you for a great book!
    213135 (4) [Avatar] Offline
    #22
    I found that these errata and inconsistent wordings till chapter 6.

    Can you please check if they are actually errata or not.

    From Salva Jung

    ==============================================================
    E. Page 9
    For an HTTP PUT or Post, a JSON passed in the HTTP body is mapped to a?Java class.
    ==> or POST

    E. Page 14
    you also have no dishes ...
    ==> You also have

    E. Page 19
    The core development microservice development pattern addresses
    ==> The core microservice development pattern addresses

    E. Page 26
    Phoenix servers: Because the actual servers are constantly being torn down as part of the continous integration process
    ==> continuous

    E. Page 32
    You first see Hystrix being used
    when you declare your hello method:
    @HystrixCommand(threadPoolKey = "helloThreadPool")
    public String helloRemoteServiceCall(String firstName, String lastName)

    ==> helloRemoteServiceCall method: ...

    Netflix and Consul ...
    ==> Netflix and HashiCorp

    E. Page 47.
    In part 1 of the Maven POM you tell Maven that you need to pull down version 1.4.4 of the Spring Boot framework
    --> framework.



    E. Page 51
    ?? Errata
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses{licenseId}
    -->
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses/{licenseId}

    E. Page 69
    SWIM protocol; https://www.cs.cornell.edu/~asdas/research/dsn02-swim.pdf
    ==> link broken

    E. Page 70 ?? Errata? ??
    consvr --> confsvr

    E. Page 73
    tracer.property: "I AM THE DEFAULT"
    ==> example.property: ...

    E. Page 81
    mvn spring-boot: run
    ==>mvn spring-boot:run

    E. Page 75
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config
    ==>
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config/licensingservice

    E. P84 Listing 3.6
    @Column maps the field to a specific database table.
    ==> @Column maps the field to a specific database column.

    P. 117
    The parameters passed into the endpoint are

    defined using the @PathVariable endpoint.
    ==>
    The parameters passed into the endpoint are

    defined using the @PathVariable annotation.


    E. P160
    actual url
    ==> actual URL


    E. Page 166
    that ribbon will load bal- ance against. The following listing shows this.
    ==> that Ribbon will ...

    E. Page 181
    The UserContextIntercept implements the Spring frameworks ClientHttpRequestInterceptor.
    ==> The UserContextInterceptor ...

    E. Page 185
    In Figure 6.15, 'Old version of service' on right should be 'New version of service'.

    E. P334
    docker-compose –f docker/common/docker-compose.yml up
    ==> –f -> -f
    213135 (4) [Avatar] Offline
    #23
    213135 wrote:I found that these errata and inconsistent wordings till chapter 6.

    Can you please check if they are actually errata or not.

    ==============================================================
    E. Page 9
    For an HTTP PUT or Post, a JSON passed in the HTTP body is mapped to a?Java class.
    ==> or POST

    E. Page 14
    you also have no dishes ...
    ==> You also have

    E. Page 19
    The core development microservice development pattern addresses
    ==> The core microservice development pattern addresses

    E. Page 26
    Phoenix servers: Because the actual servers are constantly being torn down as part of the continous integration process
    ==> continuous

    E. Page 32
    You first see Hystrix being used
    when you declare your hello method:
    @HystrixCommand(threadPoolKey = "helloThreadPool")
    public String helloRemoteServiceCall(String firstName, String lastName)

    ==> helloRemoteServiceCall method: ...

    Netflix and Consul ...
    ==> Netflix and HashiCorp

    E. Page 47.
    In part 1 of the Maven POM you tell Maven that you need to pull down version 1.4.4 of the Spring Boot framework
    --> framework.



    E. Page 51
    ?? Errata
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses{licenseId}
    -->
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses/{licenseId}

    E. Page 69
    SWIM protocol; https://www.cs.cornell.edu/~asdas/research/dsn02-swim.pdf
    ==> link broken

    E. Page 70 ?? Errata? ??
    consvr --> confsvr

    E. Page 73
    tracer.property: "I AM THE DEFAULT"
    ==> example.property: ...

    E. Page 81
    mvn spring-boot: run
    ==>mvn spring-boot:run

    E. Page 75
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config
    ==>
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config/licensingservice

    E. P84 Listing 3.6
    @Column maps the field to a specific database table.
    ==> @Column maps the field to a specific database column.

    P. 117
    The parameters passed into the endpoint are

    defined using the @PathVariable endpoint.
    ==>
    The parameters passed into the endpoint are

    defined using the @PathVariable annotation.


    E. P160
    actual url
    ==> actual URL


    E. Page 166
    that ribbon will load bal- ance against. The following listing shows this.
    ==> that Ribbon will ...

    E. Page 181
    The UserContextIntercept implements the Spring frameworks ClientHttpRequestInterceptor.
    ==> The UserContextInterceptor ...

    E. Page 185
    In Figure 6.15, 'Old version of service' on right should be 'New version of service'.


    E. P334
    docker-compose –f docker/common/docker-compose.yml up
    ==> –f -> -f
    213135 (4) [Avatar] Offline
    #24
    213135 wrote:I found that these errata and inconsistent wordings till chapter 6.

    Can you please check if they are actually errata or not.

    From Salva Jung

    ==============================================================
    E. Page 9
    For an HTTP PUT or Post, a JSON passed in the HTTP body is mapped to a?Java class.
    ==> or POST

    E. Page 14
    you also have no dishes ...
    ==> You also have

    E. Page 19
    The core development microservice development pattern addresses
    ==> The core microservice development pattern addresses

    E. Page 26
    Phoenix servers: Because the actual servers are constantly being torn down as part of the continous integration process
    ==> continuous

    E. Page 32
    You first see Hystrix being used
    when you declare your hello method:
    @HystrixCommand(threadPoolKey = "helloThreadPool")
    public String helloRemoteServiceCall(String firstName, String lastName)

    ==> helloRemoteServiceCall method: ...

    Netflix and Consul ...
    ==> Netflix and HashiCorp

    E. Page 47.
    In part 1 of the Maven POM you tell Maven that you need to pull down version 1.4.4 of the Spring Boot framework
    --> framework.



    E. Page 51
    ?? Errata
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses{licenseId}
    -->
    Creates a GET endpoint with the value v1/organizations/{organizationId}/licenses/{licenseId}

    E. Page 69
    SWIM protocol; https://www.cs.cornell.edu/~asdas/research/dsn02-swim.pdf
    ==> link broken

    E. Page 70 ?? Errata? ??
    consvr --> confsvr

    E. Page 73
    tracer.property: "I AM THE DEFAULT"
    ==> example.property: ...

    E. Page 81
    mvn spring-boot: run
    ==>mvn spring-boot:run

    E. Page 75
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config
    ==>
    file:///Users/johncarnell1/book/spmia_code/chapter3- code/confsvr/src/main/resources/config/licensingservice

    E. P84 Listing 3.6
    @Column maps the field to a specific database table.
    ==> @Column maps the field to a specific database column.

    P. 117
    The parameters passed into the endpoint are

    defined using the @PathVariable endpoint.
    ==>
    The parameters passed into the endpoint are

    defined using the @PathVariable annotation.


    E. P160
    actual url
    ==> actual URL


    E. Page 166
    that ribbon will load bal- ance against. The following listing shows this.
    ==> that Ribbon will ...

    E. Page 181
    The UserContextIntercept implements the Spring frameworks ClientHttpRequestInterceptor.
    ==> The UserContextInterceptor ...

    E. Page 185
    In Figure 6.15, 'Old version of service' on right should be 'New version of service'.


    E. Page 204
    Scope—The scope that this OAuth2 token is valid for.
    ==> scope ...

    E. P334
    docker-compose –f docker/common/docker-compose.yml up
    ==> –f -> -f
    mwone (4) [Avatar] Offline
    #25
    page 23, last paragraph, end of the first sentence:

    'into the details of figure 1.10.'

    should be

    'into the details of figure 1.11.'
    Susan Harkins (424) [Avatar] Offline
    #26
    An errata list for Spring Microservices in Action is available at https://manning-content.s3.amazonaws.com/download/5/100b61f-794f-4ad5-be93-6e326f911599/CARNELL_SpringMicroservicesinAction_err2.html[url]. Thank you for participating in this process. Your comments help us and other readers.

    Regards,
    Susan Harkins
    Errata Editor