Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.
Contact Information
Blogger, podcaster, writer, and geek Chris Toohey covers topics from application development to the latest must-have-gadgets.
Latest Updates
Products & Applications
Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.
For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!
Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!
xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.
Community & Resources
Lotus Technical Information & Education Community
The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.
OpenNTF.org - Open Source Community for Lotus Notes Domino
OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.
developerWorks Lotus : Wikis
Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.
RESTful Java Web Services from Pack Publishing - Review and Giveaway!
01/23/2010 05:15:00 PM by Chris Toohey
REST theory and RESTful services, or REpresentational State Transfer, is a set of constraints that define a software architectural style. Simply put, it is a practice of leveraging HTTP Request Methods to interact with a data store. This approach greatly differs from simple CRUD - which we IBM Lotus Notes/Domino Web Application Developers are familiar. Where CRUD relies mostly on GET/POST Methods, RESTful Web Services leverage GET, POST, PUT, and DELETE to maintain remote data stores. REST, of course, sounds better than GPPD... but in summary that's pretty much it!
RESTful Java Web Services from Pack Publishing deep-dives into REST constraints, and applying that to Java Web Service Architectures in web application development.
You can read many different reviews of this book, but this review will be written with a mind for this site's target audience: IBM Lotus Notes/Domino Developers!
Chapter 1: RESTful Architectures
This chapter focuses on defining REST or RESTful architectures and their CRUD equivalent (table from Chapter 1):
| Data Action | HTTP Protocol Equivalent |
| Create | POST |
| Retrieve | GET |
| Update | PUT |
| Delete | DELETE |
What I liked about this chapter is that it immediately began a deep-dive into the topic with very simple yet telling examples of each state of REST. Most books take the first chapter to give a history of the subject matter and save the meat of the content for Chapter 2. By the time we get to Chapter 2, we have not only covered that brief history, but we have a pretty decent understanding of REST and RESTful architectures via this chapter.
Chapter 2: Accessing RESTful Services - Part 1
I was happy to see that this chapter's for those of you following along at home example was the Twitter REST API. It's not some abstract service that exists solely for the purpose of this book; we know exactly what is expected when interacting with this micro-blog service, and thus can concentrate on and level-check our progress in learning about REST.
This chapter starts off by gearing you up. You're directed to the latest Java JDK, Jakarta's Commons HTTPClient, Commons Logging, and Commons Codec packages, Apache Tomcat, and Swing's Application Framework and SwingWorker.
For old-hand Java Developers, this should be a no-brainer. However, there really aren't many directions for setting up these downloadable wares. Of course, that's pretty out of scope for this book, but be forewarned that it can take some time to download and setup these applications.
The rest of the chapter discusses the Twitter API and interacting with the XML (either XML, JSON, RSS, or ATOM) and Servlets.
By the time you're done reading this chapter, you're either hooked or running away scared. Hopefully, you're ready for Part 2 ;-)
Chapter 3: Accessing RESTful Services - Part 2
With this chapter, you're going to be interacting with several different public web services: Google, Yahoo!, Twitter, and TextWise's SemanticHacker to create a localhost mashup using Prototype.
The chapter's build project, named the Semantic search mashup, is a pretty slick hello world v2.0 application... but while it's well documented in this chapter, I worry that it's a little too complex for non-Java developers.
Of course, if I was able to follow it, you should be able to as well...
And, as with most Pack Publishing titles, the pages of markup and code are available through download on the publisher's site -- really helps when you're dealing with a case-sensitive language and especially if you're unsure about what you're doing up to this point!
By the end of this chapter, you'll have a single application that will run queries against several public web services, consume the HTTP Request responses, and then parse and display the results. Sure, it's not too pretty, but it's functional! And it gives you an idea of the Retrieve capabilities of RESTful architectures.
Chapter 4: RESTful Web Services Design
This chapter's build project (if you will) is:
a social networking web application similar to Twitter.
Again, I get it: go with what you know, so you can focus on learning the technology versus trying to learn about project scope and overall function.
And don't worry, you're not diving that deep here - this chapter really talks to using URIs (via HTTP Method calls) to interact with data. At the end of the chapter, you should understand the action/reaction exchange with Web Services.
Jersey is a pure Java RESTful framework that we're going to use to implement the web service that we created in Chapter 4.
There are several downloads needed for this chapter, some you may have; some you may not have already: Java JDK, Apache Tomcat, DB40, and (of course) the Jersey Framework.
This is a meaty chapter, and we get a lot from its 43 pages! We leave this chapter with a pretty solid grasp on RESTful Web Services with Jersey, and power through the JAX-RS API. Simple, but it builds quickly, and I think it's the example web service from Chapter 4 that lends to the ramp-up on the Jersey framework.
Chapter 6: The Restlet Framework
In this chapter - another meaty chapter (weighing in at 42 pages) - we review the two latest released versions of the Restlet framework... and we learn something pretty cool here: we're able to reuse the majority of the code created in Chapter 5. Of course there are tweaks required (and discussed in this chapter), but moving to another RESTful framework did not require a complete re-write.
You'll have basically the same downloads for this chapter, with the only difference being the framework download itself.
You guessed it, another framework. More framework downloads, but this framework mentions an extended capability: RESTEasy is also JBoss's umbrella project that provides other frameworks to build RESTful web services.
The big perk here, JAX-RS to JAX-RS (Jersey to RESTEasy) means full reuse of the Chapter 5 code.
Chapter 8: Struts 2 and the REST Plugin
After downloading Struts 2, we dive into learning another framework. Since Struts 2 doesn't have native RESTful service support, we also discuss the REST plugin for Struts 2 which completes the Struts framework offering (as applicable to our Twitter-like web service from Chapter 4).
This is the last pure Java RESTful framework that we'll review in this book. The good news is that you have choices, and you have a book that gives you the pros and cons of selecting each.
Chapter 9: Restlet Clients and Servers
To quote this chapter...
In this chapter, the book covers the parts of the Restlet framework that we ddn't cover in Chapter 6, The Restlet Framework, because we specifically deployed our web service in a Java web container. However, the Restlet framework provides libraries to create standalone applications, includding RESTful clients and RESTful services.
At the end of this chapter, you'll be able to create Restlet clients and create and deploy RESTful Web Services that run as standalone Java applications that don't require a full-blown Java web server.
You get more out of this chapter (when combined with Chapter 6) then the last several chapters. Don't get me wrong, while framework introductions/reviews are useful... you finish Chapter 9 with more in your arsenal.
Chapter 10: Security and Performance
RESTful Java Web Services architecture considerations. How do we secure our web service now that we've built them, and how to we make sure we don't bring down production environments when those web services are called are the topics discussed in this chapter.
The book discusses various types of security options with even a few paragraphs on OAuth to give us even more options for authentication.
The Performance section of this chapter discusses hardware and networking architectures to ensure high availability of your web services (read: architect away from the FAILWHALE...). This chapter smartly cautions on premature optimization, understanding that your web service adopters will want to leverage 3rd-party clients, etc.
A solid entry in RESTful Web Services development that happens to use the Java language. You're given enough information on Web Services that you could easily port that knowledge to any technology platform. For example, Chapters 5-10 could just as well discussed IBM Lotus Notes Domino XPages and SSJS.
For someone who wants to leverage Java RESTful frameworks in their Web Service development, Chapters 5-9 are excellent overviews of 4 frameworks available to the web services developer. Better still, with the example service from Chapter 4 as your baseline, you get real world exposure to help you choose the best framework for you.
On the back cover of this book, we find the Who this book is written for:
This book is for developers who want to code RESTful web services using the Java technology stack together with any of the frameworks covered.
I would recommend this book to the following people:
- Web Application Developers interested in learning about RESTful Web Services.
- Web Application Developers interested in learning about several Java frameworks designed to work with RESTful Web Services.
I would not recommend this book to the following people:
- Network Administrators or System Architects looking to support RESTful Web Services.
- Lotus Notes Client (only) Application Developers
If you fall into that first category and not into the second, you can purchase RESTful Java Web Services directly from Packt Publishing in Adobe PDF eBook, standard Book, or both formats.
And -- as mentioned -- I am holding a contest where you can win my review copy of RESTful Java Web Services.
To enter, simply leave a comment on this post. with your name, email address (not published, but I'll need to contact you if you win...), and your thoughts on this review.
I will pick a winning comment at random by Friday, January 29th, 2010 9:00PM EST.
From there, I'll contact you for your mailing address and ship the book ASAP!
Good luck!
Disclosure
Obtained From: Publisher
Payment: Free






Thanks for the review..it's usually difficult to read something that appears unrelated to Domino development at first blush and then to put our perspective on it. I feel like I have a good handle on the book contents without feeling overburdened with too much detail! Thanks again!
Dude,
Knowledge is power and it can only make my career better.
E
the kind of blog entry we should all be writing, relevant to domino, but portable, very very useful (drag to bookmark)
Nice piece, man.... excellent work.
Great review... so good that even a caveman... er, I mean, a Domino Administrator... ah, I mean, I can understand it!
Great write-up,Chris! No wonder you were voted Blogger of the Year!
Nice review Chris!
Thanks for the review, at least I know now that the book will be too advanced for me. It seemed that I did not have enough knowledge about those web terms. I guess I have to start with the basic then.
One question, does the book provide reference about where to get help in case we got stuck when installing / configuring those fancy framework.
Sounds like a really useful book for going from Java servlets to REST based ideas.
Working hard toward the 2011 award, this time you have to go to BALD.
we should all learn Java as it's the future of Notes.
Looking forward to trying my hand at some new web services.
Sounds like it would be a good book to have in an Extreme Blue lab library ;-)
Looks like one way or another I need to add this book to my library..
My youngest daughter picked a #2 from a hat, which means the win goes to Erskine Harris!
You can read the winner announcement here.
Special thanks to everyone who entered, and especially those who provided their feedback on this review -- I really enjoy the reviews and the contests, and hope you do as well!