Hi Bill,

Thanks for the response. I'm just starting a project where we want to use Kafka Streams, but in a fairly simplistic way just to get our feet wet. WIll reverting back to version 1 be an issue?


If I try Listing 3.2 (Mapping incoming text to uppercase)

KStream<String, String> upperCasedStream = [CA]simpleFirstStream.mapValues(String::toUpperCase);

with kafka-streams-2.0.0, it produces the error:

The method mapValues(ValueMapper<? super String,? extends String>) is ambiguous for the type KStream<String,String>

This appears to work:

        KStream<String, String> upperCasedStream = simpleFirstStream.mapValues(new ValueMapper<String, String>() {
            public String apply(String value) {
                return value.toUpperCase();

Also, this constructor is deprecated:
StreamsConfig streamsConfig = new StreamsConfig(props);
KafkaStreams kafkaStreams = new KafkaStreams(builder.build(), streamsConfig);

This is not:

KafkaStreams kafkaStreams = new KafkaStreams(builder.build(), props);

Chapter 5:
$ node authorizationServer.js
nosql.remove(function(found) { return (found == token); function(){}});
SyntaxError: Unexpected token (
at createScript (vm.js:53:10)
at Object.runInThisContext (vm.js:95:10)
at Module._compile (module.js:543:2smilie
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:423:7)
at startup (bootstrap_node.js:147:9)

node -v
Pg 81, Para 3 -- "...the user clicked the Approve or the."
You Da Man, David! Thanks so much for your help!
I'm following along in the book and I'm ready to try my hand at JCascalog. To be honest, I'm pretty confused as to what is required to get the JCascalog up and running, at least enough to execute the Examples.java code. I'm using Eclipse and Ubuntu 12.10. Any help would be much appreciated.

protecte --> protected

protecte static class EdgeStructure implements FieldStructure {
public boolean isValidTarget(String[] dirs) { return true; }
public void fillTarget(List<String> ret, Object val) { }
Hi Nathan and James,

First of all, great book so far -- very easy to understand the concepts of Big Data.
I want to play with the various frameworks described in your book such as Thrift, Hadoop,
etc. My question: Is there enough information in your book for a Big Data newbie
to give these frameworks a try-out, or do I need to read fairly extensively in each one
before I can get something up and running?

Excellent explanation, Mr Kincaid -- I appreciate your reply.

I really like this book as it is well-written. I hope as the authors review their work, they will add this kind of information for us Big Data newbies. In particular, I need to be able to cook up small proofs-of-concepts, which I can use to win over my employers to use new technology.

Ok, I thought I was the only one that doesn't understand the relationship between Thrift and Pail. Does Pail use Thrift schema directly, or do I create classes using Thrift, which are then used with Pail?
Thx David!
The subject says it all.
pom.xml missing in:

Hi Eelco,

I've copied this message from the Wicket user forum as no one is responding. Since
you are documented as the author, I was hoping you might be able to help me.

I've had success using the TextTemplateHeaderContributor.forJavaScript method but
can't get the equivalent TextTemplateHeaderContributor.forCss method to work. Here
are some snippets:

From CSS:
.someClass {
     background: #fff url('${brand}/someImage.jpg') 100% 100% no-repeat;

From Java:
IModel skinModel = new AbstractReadOnlyModel() {
     private static final long serialVersionUID = 1L;
     public Map getObject() {
          Map<String, CharSequence> variables =
               new HashMap<String, CharSequence>(1);
          variables.put("brand", getStyle());
          return variables;
     MyApplication.class, "skins/style.css", skinModel));

The problem is that the substitution seems to fail and the someImage.jpg file is not drawn. Any ideas on what I am doing wrong?

I received a new fresh copy of Wicket in Action today. It goes very nicely with my cool wicket t-shirt.
Downloaded my copy and looks good. Well done, lads!
Thank you, sir -- that did the trick!
I've tried the signing out sample in section 12.1.4 without success. I keep being redirected back to the page with the sign out link. Any idea what I could be doing wrong? Thanks!
The following comment is in the sample source code for the Cheese and Discount classes used with Hibernate annotations -- it refers to the overidden equals() and hashCode() methods:

// I'll burn in hell for doing this according to the Hibernate
// docs, but guess what, it's the only thing that consistently works

Will the hellish overrides still exist in the final version of the book?

I now have a new related question concerning the Open Session in View Pattern:

I read the following at http://www.pjug.org/pipermail/javamail/2007-May/003681.html:

"I got word from a local development team they have removed OSIV from their
app because it keeps the session open for the entire request as opposed to
briefly inside the DAO. This means 5 concurrent requests will need 5 db
connections and the application will need a larger connection pool."

Do you think this will be an issue for any Wicket app intended for a fairly large enterprise web site?
Thanks Martijn!
Thanks Eelco! I really appreciate your help.

Re. tweaking db connections -- I'm working with WebSphere 6.1 so I'll need to check what is IBM's current best practice for setting the pool limits. Thanks for the heads up.

Re. premature optimization -- I am in 100% agreement with you, and it is something I'm constantly warning my colleagues about. My main concern was that OSIV is new to me and I wanted to make sure that there wasn't a big controversy about it. Based on your experience, it doesn't seem like an issue and, in any case, we are required to do extensive performance testing before going into production.

Finally (I hope), one more question about OSIV: when setting up the OpenSessionInViewFilter, do you use a filter mapping that applies ONLY to requests that will use some persistence (i.e. require a Hibernate session)?
I followed the steps outlined in Chp 14 for integrating Wicket and Spring (and Hibernate), in particular, using Wicket’s Spring bean annotations approach (Sec 14.2.5). Unfortunately, I discovered that WebSphere does not properly support Spring's ContextLoaderListener when used with the WicketFilter (see http://joshuajava.wordpress.com/2007/11/14/setting-up-spring-wicket-on-websphere-5/#comment-153 for a good discussion of the problem). Fortunately, there is a described work-around, which is to use Spring's ContextLoaderServlet in conjunction with the WicketServlet.

For Hibernate sessions, I am still using Spring's OpenSessionInViewFilter as described in Sec 14.3.2. Is this okay given that I need to used WicketServlet rather than WicketFilter?

Just read your message -- I've been away in Scotland on vacation.

Do you have an official link to Sun for the EOS date?

Where can I download the wicket jar that contains org.apache.wicket.spring.* as discussed in Chp 14? Thanks.
I'm missing something -- if I type:

return WicketInActionApplication.get().ctx;

I get the error:

ctx cannot be resolved or is not a field

BTW, I'm using JDK 1.4.
Thanks, that did the trick! I work for a large company and have been pushing to upgrade our app server to a JDK 5.0 version, but large companies can be slow to move. If all goes well, our next public facing app will be using Wicket.
Line 5: return WicketInActionApplication.get().ctx;

Is this correct? Should return WicketInActionApplication.get() be able to return the value
ctx from Line 8 private ApplicationContext ctx;?
Ugh, I'm going blind! Thanks smilie
I copied the code verbatim from your last response, and I get the same result:

ctx cannot be resolved or is not a field
What is the current planned publication schedule for both soft copies and the final book? Thanks.