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.

gavinmroy wrote:Sorry for the problem. Please make sure you grab the latest Vagrantfile from and let me know how it works for you.

I just tried to download from your URL and got the same error:

--2017-10-06 15:29:26--
Resolving,,, ...
Connecting to||:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2017-10-06 15:29:28 ERROR 403: Forbidden.

The reason I was checking again was I installed it sometime back and was curious if you were using a newer version of RabbitMQ for the final edition of the book. btw - great book!
All the zip file contains is the vagrant file, which is here With this you should be able to type vagrant up if you followed all of the previous state and should be good. I just checked my zip file contents and restarted the container (vagrant up), which I have not run for a few months, and validated everything is working. I just wish it were a more current version of rabbitmq.
Answering my own question. The fix for me was the following:

rabbitmqctl -n rabbit_1 join_cluster rabbit@C02M43C4FD59

I now get:

rabbitmqctl -n rabbit cluster_status
Cluster status of node rabbit@C02M43C4FD59 ...
I'm trying to get local clustering to work. I've disabled the plugins on rabbit (rabbitmq_management, rabbitmq_visualiser, and by trial and error trying to start rabbit_1 & rabbit_2 also disabled rabbitmq_mqtt & rabbitmq_shovel). Now all of the servers start and my current cluster status is:

rabbitmqctl -n rabbit cluster_status
Cluster status of node rabbit@C02M43C4FD59 ...

Then on rabbit_1 I stop_app, reset and when I try to cluster I get the following:

rabbitmqctl -n rabbit_1 cluster rabbit rabbit_1
Error: could not recognise command
rabbitmqctl [-n <node>] [-t <timeout>] [-q] <command> [<command options>]

Is the example in the book wrong?
Andrew, I'm thoroughly enjoying the book as well as your approach to the topic. I was curious to know whether you've considered adding SpringXD in your candidate solutions -> It is also built as an implementation of EIP and is a synthesis of Spring Integration with out of the box support for Spark sinks, HDFS, real time analytics, etc. I think it would have fit very well into 4.2 Distributed Stream Processing Architecture and other tables for comparison.
First, I think this is a great book. Love the approach to teaching both the technology and Restful architecture. I'm new to MEAN so this has helped tremendously.

(1) I really think having something like a data.js as a script for loading sample data would be helpful. I've spent quite a bit of time trying to get data into locations and some of the queries just aren't working for me.

(2) sample rest call issues. I have the sample record in locations:

> db.locations.find()
{ "_id" : ObjectId("541bb67b70d5663e27170c34"), "name" : "Starcups", "address" : "125 High Street, Reading, RG6 1PS", "rating" : 3, "facilities" : [ "Hot drinks", "Food", "Premium wifi" ], "coords" : { "lat" : 51.455041, "lng" : -0.9690884 }, "openingTimes" : [ { "days" : "Monday - Friday", "opening" : "7:00am", "closing" : "7:00pm", "closed" : false }, { "days" : "Saturday", "opening" : "8:00am", "closing" : "5:00pm", "closed" : false }, { "days" : "Sunday", "closed" : true } ], "reviews" : [ { "author" : "Simon Holmes", "rating" : 5, "timestamp" : "16 July 2013", "reviewText" : "What a great place. I can't say enough good things about it." }, { "author" : "Charlie Chaplin", "rating" : 3, "timestamp" : "16 June 2013", "reviewText" : "It was okay. Coffee wasn't great, but the wifi was fast." } ] }

and locahost:5000/api/locations/541bb67b70d5663e27170c34 works fine.
_id: "541bb67b70d5663e27170c34"
name: "Starcups"
address: "125 High Street, Reading, RG6 1PS"
-reviews: [
rating: 5


message: "lng, lat and maxDistance query parameters are all required"
which doesn't match figure 6.10 or figure 6.11 in postman, which is what I'm using.

When I try to resolve to 3 params:

I get an empty result.

I'm "On branch chapter-06
Your branch is up-to-date with 'origin/chapter-06'."

Love this much needed book. Picked it up electronically Thursday and have worked through ch05 now but also made the decision to upgrade to my current env (2.4.2) and have been looking ahead at the single page app. It seems I have to comment out resources:1.2.7 and include asset-pipeline:1.8.7 or I get a deprecated class method. When I try to comment out asset-pile and include resources:1.2.7 I get the following error:

|Installing zip
|Installed plugin resources-1.2.7
|Uninstalled plugin [asset-pipeline]
|Compiling 132 source files
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] /Users/wlund/grails-workspace/graina2-1.0/ch05/hubbub/target/work/plugins/resources-1.2.7/src/groovy/org/grails/plugin/resource/ResourceProcessor.groovy: 6: unable to resolve class org.codehaus.groovy.grails.plugins.PluginManagerHolder
[groovyc] @ line 6, column 1.
[groovyc] import org.codehaus.groovy.grails.plugins.PluginManagerHolder
[groovyc] ^
[groovyc] 1 error

is there a trick to working with :resources:1.2.7?
I'm curious if Bernhard was able to get this working. I come up with this when I import the src code for the plugin:

Description Resource Path Location Type
The type groovy.lang.GroovyObject cannot be resolved. It is indirectly referenced from required .class files resources.groovy /hubbub/grails-app/conf/spring line 1 Java Problem
The type NavigationServiceTests is already defined NavigationServiceTests.groovy /grails-navigation/test/unit line 4 Java Problem
Groovy: compiler mismatch Project level is: 1.7 Workspace level is 2.3
Groovy compiler level expected by the project does not match workspace compiler level.
Go to Project properties -> Groovy compiler to set the Groovy compiler level for this project grails-navigation grails-navigation Groovy compiler mismatch problem
Groovy:Invalid duplicate class definition of class NavigationServiceTests : The sources /Users/wlund/git-workspace/grails-navigation/test/unit/NavigationServiceTests.groovy and /Users/wlund/git-workspace/grails-navigation/test/integration/NavigationServiceTests.groovy each contain a class with the name NavigationServiceTests. NavigationServiceTests.groovy /grails-navigation/test/unit line 4 Java Problem
The project was not built since its build path is incomplete. Cannot find the class file for groovy.lang.GroovyObject. Fix the build path then try building this project hubbub Unknown Java Problem

My version of ggts does have 1.7. Is there a way to add this version of groovy to the project?
Thanks! That worked. Now I'm working through your suggestion on the navigation plugin. Also now in ch08.

I put this topic on the back burner because, like the next poster, I didn't understand the answer. You said:

"OK, so it looks pretty straightforward. The `NavigationService` class should inject the `grailsApplication` object and use it to access the configuration. Both the service and the tag lib should also be put into packages. The source code for the plugin is here:"

Is it suggesting that we:

1. Add grails-navigation.
2. Put code or configuration somewhere that injects the grails application into the navigation service. If so where?
3. Replace navigation with grails-navigation.

The book is in a tough spot for me. I think the asset-pipeline and this navigation topic plus my not wanting to backup from 2.4.x leave the book much less valuable than I hoped. I know its a tough topic because its sounding like grails 3.0 will be much more significant. Can you clarify your previous answer on getting the navigation plugin to work?
WSRP is a big topic on our project. There were a couple of threads on the topic that relate to an earlier post I made this evening.

* How important is interoperability and integration with WSRP? We've been challenged that so much of the portal has to be clippered (WLP term) or Web Proxied (LR term) in that there is a question about how valuable WSRP is.
* the question of the relationship between JSR 168 & WSRP 1.0 (or is there one) and JSR 286 with WSRP 2.0.
* How important is WSRP in determining whether it gives a leg up to a java solution over PHP solution? I'll come up with some additional topics.

Is this post you put out in Nov relevant? I'm questioning the stability of Portals with the acquisition of Glassfish by Oracle and Liferay evidently not supporting JSR 286 - at least for the Mac.

Thanks for the clarification. I'll remove the Open Portal tomorrow and upgrade the examples.
I'm having the same problem as you are. The only difference is that I'm using Leopard rather than Snow Leopard. Could you provide a link to the issue on Liferay Forum?


Figure 2.13 shows that the USER REGISTRATION portlet class makes use of PortletConfig object to access the portlet settings (like suported portlet modes
I'm not sure whether you're interested in readers catching misspellings. Here's one:

Figure 2.9 User regisrtration success page shows the information that was entered as part of registration. „Home‟ link takes the user back to the home page of user registration portlet.
If you had tried running the BOOK CATALOG portlet developed in previous chapters then there is a high possibility that the portlet may not have worked at all or it behaved differently on other portal servers. The reason for this lays with the missing support for an optional feature or an existing bug in the portlet container / portal server software or the portal server specific configuration requirements for a portlet.

I don't see the need for the reference to the BOOK CATALOG portlet because it doesn't look like there was anything developed before. Ch-1 is HelloWorld portlet and Ch-2 is a User Registration portlet, which could belong to anything. I think its better to start the reference to Book Catalog here in ch-3.
PortletURL registerUrl = response.createActionURL();
registerUrl.setParameter("action", "regiserUserAction");

although its correct in the downloaded src code. Makes me curious how you import the code into the book.
I'm in the middle of this topic on Liferay CMS discussions at work and this thread is timely. We've been comparing Drupal, Liferay CMS and Alfresco WCM. However, its a new space for me and I don't have a lot of hands on with any of the options yet. We have found some very interesting product analysis from places like CMSWire that show the CMS space dominated by PHP solutions like Drupal, Joomla & Wordpress CMS but show Alfresco and Liferay as movers in this space. You can download from

Its too early for me to have a strong opinion on the right solution but I don't think its as easy as whether you have trained Java or not. We're finding that if you're requirements include robust versioning like rollback a push, revert to previous version to create new version - helpful for campaign reuse, sophisticated comparison of one version from another, workflow features, etc. than the WCM options really differentiate themselves. We're starting to look closer at some of the information provide from companies like Optaros and Cignex for what I call I hybrid option; Liferay + embedded Alfresco.

Anyway, that's a few random thoughts.
I enabled maven dependencies and was getting and error with the version set at 1.1.1. I'm running Tomcat 6.0.18 that comes with the Liferay bundle - not sure that matters - but I changed to 1.2 as shown below and the compile errors are gone. I'll be doing some more testing on maven. Thanks for including now.

Just downloaded the new sources and the did resolve all of the jar problems and the example ran fine. Thanks for the improvements. And why not include both a pom and ant description? I know that Liferay 5.2.3 is addressing maven. Which version are you targeting the finished copy of the book for?

Love the book thus far and I think the approach for explaining Portal is a terrific approach. We've been experimenting with Pluto (for dev only), Oracle Weblogic Portal, which currently doesn't support JSR 286, Liferay, and monitoring others. Thanks for the great read.

Could I disagree with you on the decision to use ant instead of maven? One of the things I really liked about Spring in Action was that Craig Walls upgraded the 2nd edition to use maven and its so much easier to work with the examples. On the other hand, one of the criticisms I had with Spring Recipes, which I consider to be a very good book, is that his examples have hardcoded references for libs on the C: drive. Please reconsider using maven. We took the time to refactor the chapters we used for Spring Recipes with maven.

In section 1.7.1 on setting up eclipse I had to add another jar as well to pick up the expression library but I'm using the Liferay bundle that includes tomcat-6.0. Is there a reason for choosing to go with 5? The library I had to add was the <TOMCAT_HOME>/lib/el-api.jar.


My goal with groovy right now is to see if I can't simplify some code generation through the use of the builder. I downloaded the source code but have not been able to get anything to work reasonably within eclipse. I must be slow.

I've read section 1.5.2 for the Eclipse plug-in in "Groovy in Action". (I have to be able to use with existing java within eclipse or it doesn't make sense for us to try and use groovy). I've also been through the link you provided that's at: So here's the steps I thought I'd go through to work through the "Groovy in Action" examples using eclipse:

1. Installed Groovy plugin
2. create project "publist" on downloaded source directory.
3. switched default output to groovy-bin. still have no idea why I'm doing that and plugin page sounds like they don't know why either.

The example I was really interested in was the DebugSupport that subclasses BuilderSupport. I had a few errors from the project setup. The applicationContext was easy as I just added the external spring.jar to the classpath. Then I have a number of errors with from tryng to import:

import integration.groovy.Circle;
import integration.groovy.MaxAreaInfo;

The index doesn't have ShapeInfoMain in the index and I'm not sure what chapter its from so I leave this error alone. I select Listing_8_14_Debug_Builder.groovy and get the error: Severity and Description Path Resource Location Creation Time Id
unable to resolve class BuilderSupport
@ line 1, column 1. publist Listing_8_14_Debug_Builder.groovy line 3 1171908854626 168
. I import groovy.util.BuilderSupport but get the same error.

What am I doing wrong with my eclipse integration? Do I need to layout the source code examples differently for use within eclipse?