<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>Blogging Roller</title>
  <link>https://rollerweblogger.org/roller/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://rollerweblogger.org/roller/feed/entries/rss?tags=rest" />
  <description>Dave Johnson on open web technologies, social software and software development</description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Tue, 28 Apr 2026 07:02:22 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/jira_finally_gets_its_own</guid>
    <title>JIRA finally gets its own REST API</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/jira_finally_gets_its_own</link>
    <pubDate>Thu, 1 Mar 2012 09:20:30 +0000</pubDate>
    <category>Web Development</category>
    <category>jira</category>
    <category>json</category>
    <category>oslc</category>
    <category>rest</category>
<description>&lt;p&gt;JIRA&amp;#39;s got a real REST API now:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;REST easy with JIRA 5 | Atlassian Blogs: Now that JIRA 5 is out, let&#146;s talk about one of my favorite features of this new release, JIRA&#146;s new REST API. JIRA has supported remote APIs for many years with SOAP, XML-RPC, and JSON-RPC. However, telling developers that you support SOAP (and only SOAP) is like saying that you like writing applications with COBOL &#151; it&#146;s out of style. Today&#146;s cool kids gravitate towards REST. It&#146;s clean, simple, and highly portable across languages and frameworks.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;And checkout the &lt;a href=&quot;http://docs.atlassian.com/jira/REST/latest/&quot;&gt;nice looking API docs&lt;/a&gt;, which look like they were generated by &lt;a href=&quot;https://github.com/mnot/wadl_stylesheets/&quot;&gt;WADL-to-HTML&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;An alternative to Atlassian&amp;#39;s new API is the recently release &lt;a href=&quot;https://plugins.atlassian.com/plugins/Rational_OSLC_Adapter_for_JIRA.jar&quot;&gt;Rational OSLC Adapter for JIRA&lt;/a&gt;, which allows you to do more sophisticated integrations with JIRA including delegated UIs for issue creation and selection.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oslc_core_spec_final</guid>
    <title>OSLC Core v2 specification now FINAL</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oslc_core_spec_final</link>
    <pubDate>Wed, 1 Jun 2011 14:38:13 +0000</pubDate>
    <category>IBM</category>
    <category>asf</category>
    <category>linkeddata</category>
    <category>oslc</category>
    <category>rest</category>
    <category>wip</category>
<description>&lt;p&gt;&lt;img src=&quot;http://rollerweblogger.org/roller/mediaresource/04fe2c5b-9719-4e13-9221-70a0645b48e0&quot; align=&quot;right&quot; hspace=&quot;5&quot;&gt;
I&amp;#39;ve been working on the OSLC Core specification for about 1.5 years now as workgroup lead, and &lt;a href=&quot;http://open-services.net&quot;&gt;OSLC&lt;/a&gt; fits squarely under the &amp;quot;open web technologies&amp;quot; and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;Web Integration Patterns&lt;/a&gt; topics of this blog, so I&amp;#39;m blogging this happy news. &lt;/p&gt;

&lt;p&gt;Here&amp;#39;s the announcement From the OSLC Core Workgroup mailing list:&lt;/p&gt;

&lt;pre&gt;
From: Dave Johnson
To: oslc-core (a) open-services.net, community (a) open-services.net
Subject: OSLC Core v2 specification now FINAL

Today [1], I&amp;#39;m very happy to announce that the OSLC Core v2
specification is FINAL.

The OSLC Core v2 specification [2] defines a set of REST and Linked
Data-based patterns, resources and protocols for integration of application 
and product lifecycle resources (ALM and PLM). It&amp;#39;s designed to be the
foundation for all other OSLC domain specifications and there are now
three final OSLC specifications that are based on the Core, those
being the OSLC Change Management (CM) [3], OSLC Quality Management
(QM) [4] and OSLC Requirements Management (RM) [5] specs.

I&amp;#39;d like to thank all of the members of the OSLC Core Workgroup and
community for their hard work, critical thinking and ability to work
together in such a productive and pleasant way. Also, special thanks
to those OSLC domain workgroups who rebased their work on the Core and
development teams that provided excellent feedback along the way.

Thanks,
- Dave

--
David M. Johnson
OSLC Core Workgroup Lead
IBM Rational Software


[1] Move to final was proposed last week, along with a small set of
changes which have since been applied to the specification. 
[2] &lt;a href=&quot;http://open-services.net/bin/view/Main/OslcCoreSpecification&quot;&gt;OslcCoreSpecification&lt;/a&gt;
[3] &lt;a href=&quot;http://open-services.net/bin/view/Main/CmSpecificationV2&quot;&gt;CmSpecificationV2&lt;/a&gt;
[4] &lt;a href=&quot;http://open-services.net/bin/view/Main/QmSpecificationV2&quot;&gt;QmSpecificationV2&lt;/a&gt;
[5] &lt;a href=&quot;http://open-services.net/bin/view/Main/RmSpecificationV2&quot;&gt;RmSpecificationV2&lt;/a&gt;
&lt;/pre&gt;

&lt;p&gt;I really do have another &lt;a href=&quot;http://rollerweblogger.org/roller/entry/web_integration_patterns&quot;&gt;Web Integration Patterns&lt;/a&gt; post on the way shortly, so stay tuned.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/oauth_everywhere</guid>
    <title>OAuth everywhere!</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/oauth_everywhere</link>
    <pubDate>Fri, 6 Mar 2009 11:10:54 +0000</pubDate>
    <category>Social Software</category>
    <category>apacheroller</category>
    <category>openoauth</category>
    <category>opensocial</category>
    <category>rest</category>
<atom:summary type="html">For my &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU&lt;/a&gt; talk, which is now just a couple of weeks away, I&amp;#39;m going to talk about &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I promised to show social features and OpenSocial Gadgets running inside Apache Roller and Apache JSPWiki (incubating). This post explains, at a very high level, how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network. It assumes you have a basic understanding of &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt;.</atom:summary><description>&lt;p&gt;For my &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009&quot;&gt;ApacheCon EU&lt;/a&gt; talk, which is now just a couple of weeks away, I&amp;#39;m going to talk about &lt;a class=&quot;external&quot; href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt;. I promised to show social features and OpenSocial Gadgets running inside Apache Roller and Apache JSPWiki (incubating). This post explains, at a very high level, how I got a Roller Gadget working, one that uses OAuth to call Roller and enables Roller to use OAuth to call back to the social network. It assumes you have a basic understanding of &lt;a class=&quot;external&quot; href=&quot;http://opensocial.org&quot;&gt;OpenSocial&lt;/a&gt; and &lt;a class=&quot;external&quot; href=&quot;http://oauth.net&quot;&gt;OAuth&lt;/a&gt;.&lt;br&gt; &lt;br&gt;
&lt;/p&gt;&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-UseCasePostingActivitiesFromRoller&quot;&gt;Use case: posting Activities from Roller #&lt;/h4&gt;
&lt;p&gt;Specifically, what I want to show is a &amp;quot;Social Roller&amp;quot; Gadget that you can install into your Profile Page and that will post an Activity every time that you post a new blog entry in Roller.
&lt;/p&gt;
&lt;p&gt;Sounds simple, but I didn&amp;#39;t realize just how much work it would take. To do it the right way, I needed &lt;i&gt;OAuth everywhere!&lt;/i&gt; I needed OAuth Consumer and Provider support in both my Shindig-powered Social Network Server, that&amp;#39;s &lt;a class=&quot;external&quot; href=&quot;http://socialsite.dev.java.net&quot;&gt;SocialSite&lt;/a&gt;, and in my Blog Server, which of course is &lt;a class=&quot;external&quot; href=&quot;http://roller.apache.org&quot;&gt;Roller&lt;/a&gt;. Unfortunately, when the layoff axe fell at Sun the SocialSite team had not finished OAuth support and Roller didn&amp;#39;t have any OAuth support at all. Good thing is, SocialSite and Roller are open source and I had nothing better to do than to learn about OAuth and crank out some code. I&amp;#39;m not going to let a bunch of axe-wielding bean-counters stop me from keeping my promises.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-HowItWorks&quot;&gt;How it works#&lt;/h4&gt;
&lt;p&gt;I now have complete OAuth Provider and Consumer support in SocialSite and Roller working and ready to demo. I&amp;#39;ll post a screen-cast of the UI changes once I polish it up a bit (and finish my slides). For now, all I&amp;#39;ve got for you is a diagram that explains how the gadget interacts with SocialSite, Roller and OAuth to post activities to your profile.
&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;inline&quot; src=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot; alt=&quot;http://rollerweblogger.org/roller/resource/oauth-roller-socialsite.jpg&quot;&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Here&amp;#39;s the deal. You install the Social Roller Gadget into your Profile Page within Roller. The gadget needs to talk to Roller so &lt;b&gt;(#1)&lt;/b&gt; it calls Roller via the JS Container APIs. &lt;i&gt;(Note that the blue indicates parts of the Social Roller Gadget.)&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;(#2)&lt;/b&gt; The container will work with the SocialSite Proxy servlet to add the right OAuth consumer keys, secrets and/or tokens to the request and will then send that request off to Roller. It must first &lt;b&gt;(#3)&lt;/b&gt; negotiate with the OAuth Servlets in Roller. If you have not authorized the gadget to access your Roller account, then the container will show Roller&amp;#39;s OAuth authorization page so you can hit the Authorize button, or not.
&lt;/p&gt;
&lt;p&gt;Once the gadget is authorized to access your Roller account, it will &lt;b&gt;(#4)&lt;/b&gt; call the gadgetsetup.jsp page via HTTP GET to determine if you have enabled Activity posting. If you want to enable or disable, it will use an HTTP POST to tell Roller what you want. 
&lt;/p&gt;
&lt;p&gt;The setup page will then &lt;b&gt;(#5)&lt;/b&gt; call the Gadget Task to tell it to look out for your new blog posts and post an activity for each. The Gadget Task is controlled by Roller&amp;#39;s cluster-friendly task management system and setup to run every minute.
&lt;/p&gt;
&lt;p&gt;Once you&amp;#39;ve enabled Activity posting, when the Gadget Task runs it will check to see if you have made any new posts and if you have, it will &lt;b&gt;(#6)&lt;/b&gt; call the OpenSocial REST API to post an activity for each to your Profile. Negotiating with the OAuth Servlets as needed. And that&amp;#39;s that.
&lt;/p&gt;
&lt;p&gt;
&lt;h4 id=&quot;section-dummyPage-WhatIDidnTCover&quot;&gt;What I didn&amp;#39;t cover#&lt;/h4&gt;
&lt;p&gt;There are a lot of things I didn&amp;#39;t mention and I hope to document some of them in the next week or so, while I&amp;#39;m still unemployed. Here&amp;#39;s a quick summary of missing pieces:
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;How does SocialSite get the Consumer Key and Secret needed for calling Roller?
&lt;/li&gt;&lt;li&gt;How does Roller get the Consumer Key and Secret needed for calling SocialSite?
&lt;/li&gt;&lt;li&gt;How does the user authorize Roller&amp;#39;s access to his Profile information in SocialSite?
&lt;/li&gt;&lt;li&gt;When is OAuth support coming to the Roller trunk and can you use it for AtomPub?
&lt;/li&gt;&lt;li&gt;How do I add my gadget to SocialSite so users can install and use it?
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are happy answers for all those questions, but that&amp;#39;s all I&amp;#39;ve got time for today. I&amp;#39;ve got some slides to finish in a hurry.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/the_x_rated_socialsite_api</guid>
    <title>The X-rated SocialSite API</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/the_x_rated_socialsite_api</link>
    <pubDate>Mon, 20 Oct 2008 10:48:38 +0000</pubDate>
    <category>Social Software</category>
    <category>rest</category>
    <category>socialsite</category>
<description>&lt;blockquote&gt;
&lt;a href=&quot;http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven&quot;&gt;Roy Fielding&lt;/a&gt;: I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today&amp;#39;s example is the &lt;a href=&quot;http://wikis.glassfish.org/socialsite/Wiki.jsp?page=FinalizeRESTAPI&quot;&gt;SocialSite REST API&lt;/a&gt;. That is RPC. It screams RPC. There is so much coupling on display that it should be given an X rating.
&lt;/blockquote&gt;

&lt;p&gt;Ouch! As the author of the torrid (and pretty rough) &lt;a href=&quot;http://wikis.glassfish.org/socialsite/Wiki.jsp?page=FinalizeRESTAPI&quot;&gt;Project SocialSite Proposal: Finalize Web Services APIs&lt;/a&gt; proposal that Roy calls out to sharply, I&amp;#39;d like to point of that, as I explained in a &lt;a href=&quot;http://rollerweblogger.org/roller/entry/socialsite_opensocial_extensions&quot;&gt;recent post&lt;/a&gt;, &lt;a href=&quot;http://socialsite.dev.java.net&quot;&gt;Project SocialSite&lt;/a&gt; is simply implementing and extending the OpenSocial API. OpenSocial includes both a &lt;a href=&quot;http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/rpc-protocol&quot;&gt;JSON-RPC API&lt;/a&gt; and a &lt;a href=&quot;http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/restful-protocol&quot;&gt;REST API&lt;/a&gt;. SocialSite implements and extends them both. I never meant to imply that the JSON-RPC API is RESTful (and neither did the authors of the OpenSocial specifications). In fact, I renamed the proposal from &amp;quot;Finalize REST APIs&amp;quot; to &amp;quot;Finalize Web Services APIs&amp;quot; after I realized that OpenSocial would come in both flavors.&lt;/p&gt;

&lt;p&gt;The proposal that I wrote outlined a way for Project SocialSite to hook into &lt;a href=&quot;http://incubator.apache.org/shindig/&quot;&gt;Apache Shindig (incubating)&lt;/a&gt;, the Reference Implementation of OpenSocial,implement a couple of Shindig interfaces and thus gain support for both the OpenSocial REST API and the OpenSocial JSON-RPC API. The OpenSocial REST API does claim to be RESTful and I believe it is; it&amp;#39;s based on AtomPub but includes some extensions for providing generic XML and JSON representations in addition to Atom format. The Project SocialSite REST API will extend that and will also be RESTful.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated</guid>
    <title>Shindig/Java internals diagram updated</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated</link>
    <pubDate>Tue, 23 Sep 2008 16:09:52 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>opensocial</category>
    <category>rest</category>
    <category>shindig</category>
<atom:summary type="html">&lt;p&gt;A lot has changed since I did my &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/2479920936/&quot;&gt;first&lt;/a&gt; and even my &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;second &amp;quot;how does Shindig/Java work&amp;quot; diagram&lt;/a&gt;. Believe it or not, there are now two separate web services protocols in OpenSocial and thus in Shindig. How did that happen you wonder, well read on...&lt;/p&gt;</atom:summary><description>&lt;p&gt;A lot has changed since I did my &lt;a href=&quot;http://www.flickr.com/photos/snoopdave/2479920936/&quot;&gt;first&lt;/a&gt; and even my &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;second &amp;quot;how does Shindig/Java work&amp;quot; diagram&lt;/a&gt;. Believe it or not, there are now two separate web services protocols in OpenSocial and thus in Shindig. I&amp;#39;ll explain that and then I&amp;#39;ll share my updated diagram and synopsis of Shindig/Java internals.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;NOTE: this post covers the social API implementation only and not the Gadget server portions of Shindig.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s what happened. There was a long discussion on the OpenSocial spec mailing list about the merits of REST vs. RPC for the OpenSocial web services APIs (e.g. &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/a4ddf7cd09f90237/5cfa1658e1c1d698?lnk=gst&amp;q=rest#5cfa1658e1c1d698&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thread/thread/d1a5627fb6e686ce/d27d47dee92a87b2&quot;&gt;here&lt;/a&gt;). I&amp;#39;m not going to characterize the two sides as the JavaScripty Gadgeteers and the XML-smokin&amp;#39; RESTafarians because that would be just plain silly. Long story short, neither side really &amp;quot;won&amp;quot; and so the latest rev 0.8.1 of OpenSocial includes two separate web services protocols:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;http://docs.google.com/View?docid=dcc2jvzt_37hdzwkmf8&quot;&gt;OpenSocial REST API&lt;/a&gt;, which is based on &lt;a href=&quot;http://bitworking.org/projects/atom/rfc5023.html&quot;&gt;AtomPub&lt;/a&gt; but with support for XML and JSON formats in addition to Atom format XML. There is no support for batching of operations. (There was a &lt;a href=&quot;http://docs.google.com/View?docid=dc43mmng_23fdbpp7hd&quot;&gt;proposal for RESTful batching&lt;/a&gt;, but it did not gain consensus.)&lt;/li&gt;

&lt;li&gt;The &lt;a href=&quot;http://docs.google.com/View?docid=dhjrqr8t_4cwzqq7gh&quot;&gt;OpenSocial JSON-RPC API&lt;/a&gt; where methods are called by HTTP POSTing JSON data and there is full support for batching of operations.&lt;/li&gt;  
&lt;/ul&gt;

&lt;p&gt;Seems a pity to have two separate protocols that serve essentially the same purpose, but thankfully there are a lot of similarities. For example, the JSON-RPC protocol methods are GET, POST, PUT and DELETE. And the JSON format used in the JSON-RPC protocol matches the one in the REST API. That makes things a little easier for implementers and if you use Shindig as the basis for your social network&amp;#39;s OpenSocial implementation, it&amp;#39;s even easier -- you implement one set of interfaces and you get support for both REST and JSON-RPC. Next, I&amp;#39;ll explain how that works with my updated diagram:&lt;/p&gt; 

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/how-shindig-works-sep-2008.graffle.jpg&quot; alt=&quot;diagram&quot;&gt;

&lt;p&gt;And I&amp;#39;ll explain by walking through the processing of one request; here&amp;#39;s the walk-through (new stuff is &lt;span style=&quot;background:yellow;&quot;&gt;highlighted in yellow&lt;/span&gt;:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;1...&lt;/span&gt; 
A request enters Shindig&lt;/b&gt; via &lt;span style=&quot;background:yellow;&quot;&gt;either the &lt;code&gt;DataServiceServlet&lt;/code&gt; at &lt;code&gt;/social/rest&lt;/code&gt; or the &lt;code&gt;JsonRpcServlet&lt;/code&gt; at &lt;code&gt;/social/rpc&lt;/code&gt;&lt;/span&gt;, which has a map of &lt;code&gt;DataRequestHandler&lt;/code&gt;s (which it got from the &lt;code&gt;HandlerProvider&lt;/code&gt;) keyed by the route that each handles. It&amp;#39;s also got a pair of bean converters, which will come into play later when we need to convert outgoing POJOs to XML or JSON representation.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;2...&lt;/span&gt; The Servlet creates a &lt;code&gt;RequestItem&lt;/code&gt;&lt;/b&gt;, which parses the request for easy access later. The request item also has a pair of converters which can be used to convert incoming XML or JSON data into Java POJOs.&lt;/p&gt;

&lt;p style=&quot;background:yellow;&quot;&gt;There are two different request items, one for REST &lt;code&gt;RestfulRequestItem&lt;/code&gt; and one for RPC &lt;code&gt;RpcRequestItem&lt;/code&gt;. The RESTful request item parses the incoming URL for parameters and treats data from a POST or PUT as typed data, to be automatically converted from JSON, XML or Atom into a Java POJO object from the SPI.&lt;/p&gt;

&lt;p style=&quot;background:yellow;&quot;&gt;In the RPC case, everything is a POST and the request item grabs its parameters and the typed payload from the JSON object that was posted to the server.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;3...&lt;/span&gt; The Servlet calls the appropriate handlers.&lt;/b&gt; If the request is a single request, then the Servlet looks up a &lt;code&gt;DataRequestHandler&lt;/code&gt; based on the request&amp;#39;s &amp;quot;route&amp;quot; (i.e. the first segment of URL&amp;#39;s pathinfo). The Servlet calls the selected handler, hands it a request item. If the request is a batch request then the Servlet does the same as above, but in a loop collecting request items.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;4...&lt;/span&gt; One of Shindig&amp;#39;s three request handlers then handles the request&lt;/b&gt; and returns a &lt;code&gt;ResponseItem&lt;/code&gt; or (plural) items containing the Plain Old Java Objects (POJOs) to be returned to the called. This is the point where incoming XML or JSON data is de-serialized to POJO form by a call to &lt;span style=&quot;background:yellow;&quot;&gt;&lt;code&gt;requestItem.getTypedParameter()&lt;/code&gt;&lt;/span&gt;. Shinding provides three &lt;code&gt;DataRequestHandler&lt;/code&gt;s:&lt;/p&gt;

&lt;ul&gt;   
&lt;li&gt;&lt;b&gt;&lt;code&gt;PersonHandler&lt;/code&gt;&lt;/b&gt;: returns Person objects with detailed profile information&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;ActivtyHandler&lt;/code&gt;&lt;/b&gt;: returns Activities of people or group, allows activity creation&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;AppDataHandler&lt;/code&gt;&lt;/b&gt;: returns Gadget data, allows Gadets to store data&lt;/li&gt;
&lt;/ul&gt;   

&lt;p&gt;NOTE: If want to add your own  &lt;span style=&quot;background:yellow;&quot;&gt;REST/RPC APIs to extend Shindig, as we are &lt;a href=&quot;http://wikis.glassfish.org/socialsite/Wiki.jsp?page=FinalizeRESTAPI&quot;&gt;doing in SocialSite&lt;/a&gt;&lt;/span&gt;, you can do it by hooking in your own handlers. Use &lt;a href=&quot;http://code.google.com/p/google-guice/&quot;&gt;Guice&lt;/a&gt; dependency injection to hook in your own custom &lt;code&gt;HandlerProvider&lt;/code&gt;, one that returns your own custom handlers.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;5...&lt;/span&gt; The Shindig handlers call the Shindig Service Provider (SPI)&lt;/b&gt;, which is defined by a set of interfaces with methods that return &lt;code&gt;ResponseItem&lt;/code&gt;s. There is a set of model objects, aka POJOS, shown in green that represent the different data types that can be returned by the REST &lt;span style=&quot;background:yellow;&quot;&gt;or RPC&lt;/span&gt; APIs. The service implementations return these POJO objects and expect the Shindig infrastructure to automatically map POJO to either JSON or XML as appropriate.&lt;/p&gt;

&lt;ul&gt;   
&lt;li&gt;&lt;b&gt;&lt;code&gt;PersonService&lt;/code&gt;&lt;/b&gt;: returns Person objects with detailed profile information&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;ActivtyService&lt;/code&gt;&lt;/b&gt;: returns Activities of people or group, allows activity creation&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;AppDataService&lt;/code&gt;&lt;/b&gt;: returns Gadget data, allows Gadgets to store data&lt;/li&gt;
&lt;/ul&gt;   

&lt;p&gt;NOTE: the SPI is where you hook in to Shindig if you want to expose your application&amp;#39;s Social Graph data via the standard OpenSocial REST &lt;span style=&quot;background:yellow;&quot;&gt;or RPC&lt;/span&gt; API. You implement these interfaces with code that calls your back-end to create, retrieve update and delete data. And you hook your implementation via Guice.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;6...&lt;/span&gt; The handler returns a ResponseItem&lt;/b&gt;, which wraps one or a collection of POJOs. The Servlet may then write that response out or, in the batch case, continue to call handlers and collect more &lt;code&gt;ResponseItem&lt;/code&gt;s.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size:150%;&quot;&gt;7...&lt;/span&gt;Servlet converts/serializes and returns &lt;code&gt;ResponseItem&lt;/code&gt;s&lt;/b&gt;. &lt;span style=&quot;background:yellow;&quot;&gt;In the REST API case, once the handler, or handlers in the batch case, returns the response item(s), the &lt;code&gt;DataServiceServlet&lt;/code&gt;&lt;/span&gt; calls the appropriate converter to serialize the item(s) to either JSON or XML format depending on what was specified in the &amp;#39;format&amp;#39; request parameter.&lt;/p&gt;

&lt;p&gt;And that&amp;#39;s that...&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/another_vote_for_restful_jsf</guid>
    <title>Another vote for RESTful JSF</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/another_vote_for_restful_jsf</link>
    <pubDate>Tue, 26 Aug 2008 08:27:33 +0000</pubDate>
    <category>General</category>
    <category>java</category>
    <category>jsf</category>
    <category>rest</category>
<description>&lt;p&gt;From the Seam Framework team&amp;#39;s wiki page on &lt;a href=&quot;http://seamframework.org/Documentation/JSF2&quot;&gt;JSF2 major issues&lt;/a&gt;:

&lt;blockquote&gt;
The JSF2 expert group should work closely with the JSR 311 expert group to define overlapping integration points (unified configuration) and programming models, so that a JSF implementation can work seamlessly with a JAX-RS implementation. For example, a @Path annotated POJO should work as a JSF backing bean without any additional configuration. A JSF application programmer should be able to expose RESTful remote APIs easily. 
&lt;/blockquote&gt;

&lt;p&gt;Right on.&lt;/p&gt;

&lt;p&gt;Via &lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_wrong_with_jsf&quot;&gt;Matt Raible&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest</guid>
    <title>re: How the Shindig REST API works</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/re_how_the_shindig_rest</link>
    <pubDate>Mon, 11 Aug 2008 17:02:15 +0000</pubDate>
    <category>Social Software</category>
    <category>atompub</category>
    <category>json</category>
    <category>rest</category>
    <category>shindig</category>
    <category>socialsite</category>
<description>&lt;p&gt;Here&amp;#39;s a diagram I worked up over the weekend to explain Shindig REST API internals to my team mates. See the &lt;a href=&quot;http://blogs.sun.com/socialsite/entry/how_the_shindig_rest_api&quot;&gt;Project SocialSite blog&lt;/a&gt; for the full story.&lt;/p&gt;

&amp;lt;img src=&amp;quot;http://blogs.sun.com/socialsite/resource/how-shindig-works-200808.png&amp;quot; 
alt=&amp;quot;diagram of key classes and interfaces of Apache Shinding REST API&amp;quot; /&amp;gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/restful_jsf_in_the_works</guid>
    <title>RESTful JSF in the works?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/restful_jsf_in_the_works</link>
    <pubDate>Fri, 8 Aug 2008 15:52:58 +0000</pubDate>
    <category>Java</category>
    <category>java</category>
    <category>jsf</category>
    <category>rest</category>
<description>&lt;p&gt;JSF spec lead &lt;a href=&quot;http://weblogs.java.net/blog/edburns&quot;&gt;Ed Burns&lt;/a&gt; just pointed out that some of my Sun-internal comments about JSF have made it outside the firewall and into an &lt;a href=&quot;https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=272&quot;&gt;issue&lt;/a&gt; on the JSF specification project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;On Wed, 19 Mar 2008, David M Johnson said:&lt;/p&gt;

&lt;p&gt;I think the goal should be to make JSF applications RESTful by  
default, with proper use of GET and POST, i.e. only use POST when  
application data is changing, not for component state. Another goal  
should be clean, book-markable URLs that only carry path-info and  
parameters needed by the application logic.&lt;/p&gt;

&lt;p&gt;That&amp;#39;s easy and the default situation with Rails, Grails, Struts, etc.  
How hard would it be to redesign JSF along those lines? Would it  
require EJB2 -&amp;gt; EJB3 level changes to JSF?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I suspect work on JSF 2.0 is too far along for this kind of change now, but it&amp;#39;s nice to hear that the idea of a truly RESTful JSF is at least under consideration.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links25</guid>
    <title>Latest Links: Roller, REST and more</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links25</link>
    <pubDate>Mon, 21 Apr 2008 14:00:07 +0000</pubDate>
    <category>Links</category>
    <category>rest</category>
    <category>roller</category>
<description>&lt;ul&gt;



&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/lskrocki/entry/sun_blogs_sees_it_s1&quot;&gt;Skrocki&amp;#39;s Blog: WOOHOO Sun Blogs sees its 100,000th blog post!!!&lt;/a&gt;&lt;br&gt;
Pat Chanezon made the first post, not sure who made the 100,000th&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jroller.com/phidias/entry/google_docs_and_jroller&quot;&gt;Mark Fortner: how to publish to Roller via Google Docs&lt;/a&gt;&lt;br&gt;
&amp;quot;Google Docs &amp;#39;publish&amp;#39; feature allows you to publish a doc as a blog entry.&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.jroller.com/stchandra/entry/using_wbloggar_4_with_jroller&quot;&gt;Chandra Chan: Using wbloggar 4 with JRoller version 3&lt;/a&gt;&lt;br&gt;
&amp;quot;using the new version of w.bloggar version 4.03&amp;quot;&lt;/li&gt;
&lt;br&gt;



&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/jfarcand/archive/2008/04/jersey_07_relea.html&quot;&gt;Jean-Francois Arcand: Jersey 0.7 released...with a tiny taste of Grizzly Comet Support&lt;/a&gt;&lt;br&gt; &amp;quot;gives us a couple weeks and we gonna have something really amazing&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/sandoz/entry/jersey_0_7_is_released&quot;&gt;Earthly Powers: Jersey 0.7 released&lt;/a&gt;&lt;br&gt;
&amp;quot;many additions and clarifications to the API&amp;quot; plus Comet support&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://cld.blog-city.com/netbeans_61_rc2_available__let_the_ide_do_the_web_services.htm&quot;&gt;NetBeans 6.1 RC2: Let the IDE Do The Web Services Plumbing For You&lt;/a&gt;&lt;br&gt;
&amp;quot;brings support for web services from Google, Amazon, Facebook and others&amp;quot;&lt;/li&gt;
&lt;br&gt;



&lt;li&gt;&lt;a href=&quot;http://blogs.zdnet.com/BTL/?p=8555&quot;&gt;ZDNet: Social networking will be biggest enterprise 2.0 priority by 2013&lt;/a&gt;&lt;br&gt;
&amp;quot;smaller businesses arenâ&#128;&#153;t even considering, while the giants are diving in head first&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://www.cmswire.com/cms/enterprise-20/move-over-lotus-notes-sharepoint-is-filling-yer-shoes-002475.php&quot;&gt;Move Over Lotus Notes, SharePoint is Filling Yer Shoes&lt;/a&gt;&lt;br&gt;&amp;quot;What Microsoft makes look easy â&#128;&#148; can quickly become a nightmare in the making&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/joshy/archive/2008/03/bleg_do_you_kno.html&quot;&gt;Joshua Marinacci: know of any good forum software?&lt;/a&gt;&lt;br&gt;Comments suggest JForum, LifeRay message board and other Java options&lt;/li&gt;
&lt;br&gt;



&lt;li&gt;&lt;a href=&quot;http://www.stdlib.net/~colmmacc/2008/04/21/aws-appengine-and-the-future-of-data/&quot;&gt;colmmacc: AWS, AppEngine and the future of data&lt;/a&gt;&lt;br&gt;coping with the &amp;quot;fallout of using a planet instead of a hard-disk&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/searchguy/entry/minion_an_open_source_search1&quot;&gt;Search Guy: Minion open source search engine from Sun Labs&lt;/a&gt;&lt;br&gt;search &amp;quot;engine that ships with the Portal Server and Web Server&amp;quot;&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;http://chimprawk.blogspot.com/2008/04/productive-unit-structures-introducing.html&quot;&gt;Unit Structures: Introducing Freedom&lt;/a&gt;&lt;br&gt;&amp;quot;I find myself desperately searching out places where I can be network-free&amp;quot;&lt;/li&gt;

&lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links22</guid>
    <title>Latest Links: JSF vs. REST</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links22</link>
    <pubDate>Mon, 18 Feb 2008 13:27:08 +0000</pubDate>
    <category>Links</category>
    <category>java</category>
    <category>jsf</category>
    <category>rest</category>
<description>&lt;p&gt;I&amp;#39;ve been very happy with the choice of Struts 2 for Roller, but I still follow JSF because it&amp;#39;s the Java standard. A couple of articles by Ryan Lubke about what&amp;#39;s coming in JSF 2.0 got me thinking about JSF again.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature5&quot;&gt;Ryan Lubke&amp;#39;s Blog: JSF 2.0 New Feature Preview Series, pt. 2.1: Resources&lt;/a&gt;&lt;br&gt;&amp;quot;Previous versions of JSF had no facility for serving resources&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/rlubke/entry/jsf_2_0_new_feature2&quot;&gt;Ryan Lubke&amp;#39;s Blog: JSF 2.0 New Feature Preview, pt. 1: ProjectStage&lt;/a&gt;&lt;br&gt;&amp;quot;the JSF 2.0 EG has given a nod to Ruby on Rails&amp;#39; RAILS_ENV functionality&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of my problems with JSF is REST. REST fans say JSF is inherently RESTless because every JSF request is a POST. JSF advocates say JSF can do GET and bookmarkable URLs if necessary and that&amp;#39;s good enough.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dehora.net/journal/2007/11/19/java-rest/&quot;&gt;Bill de hora on JSF and REST&lt;/a&gt;&lt;br&gt;&amp;quot;JSF is clearly not focused on or suitable for working in the REST style to the extent REST principles seem to be actively excluded from the design.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=39214&quot;&gt;Gavin King on JSF and REST&lt;/a&gt;&lt;br&gt;&amp;quot;On these community sites that claim you can&amp;#39;t build restful application with JSF. I mean it is total nonsense. It is not even remotely true.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.theserverside.com/news/thread.tss?thread_id=38601#197750&quot;&gt;Gavin&amp;#39;s JSF bookmarkable URL example&lt;/a&gt;&lt;br&gt;In the comments thread of an anti-JSF story at The Server Side.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fortunately, the plans for JSF 2.0 indicate that REST improvements are coming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://wiki.java.net/bin/view/Projects/Jsf2RequirementsScratchpad&quot;&gt;Java.Net TWik: JSF 2.0 Requirements Scratchpad&lt;/a&gt;&lt;br&gt;Mentions REST API (JSR-311) and navigation without using POST&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jcp.org/en/jsr/detail?id=314&quot;&gt;JSR-314: JavaServer Faces 2.0&lt;/a&gt;&lt;br&gt; 
&amp;quot;Allow JSF application resources to be accessed via REST&amp;quot; and &amp;quot;Add support for REST (JSR 311)&amp;quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, it sounds like all they&amp;#39;re planning to do is make it easier to create bookmarkable URLs and add some support for the JSF-311 REST API. Why can&amp;#39;t the goal be to make JSF applications RESTful by default? Why can&amp;#39;t JSF ensure that POST is only used when required by the application (not the framework) and JSF URLs are simple, clean and always bookmarkable.&lt;/p&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/zero</guid>
    <title>Zero</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/zero</link>
    <pubDate>Mon, 2 Jul 2007 09:28:53 +0000</pubDate>
    <category>Java</category>
    <category>groovy</category>
    <category>java</category>
    <category>rest</category>
<description>IBM&amp;#39;s &lt;a href=&quot;http://www.projectzero.org&quot;&gt;project Zero&lt;/a&gt; has de-cloaked.

&lt;blockquote&gt;
Project Zero introduces a simple environment for creating, assembling and executing applications based on popular Web technologies. The Project Zero environment includes a scripting runtime for Groovy and PHP with application programming interfaces optimized for producing REST-style services, integration mash-ups and rich Web interfaces.
&lt;/blockquote&gt;

Smells a lot like &lt;a href=&quot;https://phobos.dev.java.net/&quot;&gt;Phobos&lt;/a&gt; (see also &lt;a href=&quot;http://weblogs.java.net/blog/robc/archive/2006/11/phobos_meets_th.html&quot;&gt;Phobos Meets Atom, REST&lt;/a&gt;), but Phobos is focusing on server-side JavaScript first. Oh, and Phobos &lt;i&gt;is&lt;/i&gt; open source. Project Zero is not. 

&lt;blockquote&gt;
&amp;quot;This community is an experiment in a new way to build commercial software, an approach we are currently calling Community-Driven Commercial Development. Community-Driven means that we want feedback, insight, suggestions, criticism, and dialogue with you, the users of Project Zero. This interaction will yield a better solution that is more targeted at the problems you have and a technology that truly delivers on its objectives. Commercial means that this is not an open source project.&amp;quot;
&lt;/blockquote&gt;

Community-driven? Sounds like the community is a back-seat driver with freedom to complain but no access to the steering wheel, gas pedal or breaks.</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/joe_s_q_a_do</guid>
    <title>Joe&amp;#39;s Q&amp;A: Do we need WADL?</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/joe_s_q_a_do</link>
    <pubDate>Tue, 5 Jun 2007 17:57:22 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>rest</category>
    <category>wadl</category>
<description>&lt;p&gt;
Joe turns a #redmonk IRC chat-room discussion into an insightful &lt;a href=&quot;http://bitworking.org/news/193/Do-we-need-WADL&quot;&gt;Steven O&amp;#39;Grady style Q&amp;amp;A on REST, WADL, interfaces and APP&lt;/a&gt;. For the record, I still think &lt;a href=&quot;https://wadl.dev.java.net/&quot;&gt;WADL&lt;/a&gt; is going to be useful to many, but I think &lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-15.html&quot;&gt;APP&lt;/a&gt; is going to be a whole lot more useful and it doesn&amp;#39;t need or use WADL.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: Pat Meuller has &lt;a href=&quot;http://www-03.ibm.com/developerworks/blogs/page/pmuellr?entry=wadl_waffling&amp;amp;ca=dat-bl&quot;&gt;more on the WADL question&lt;/a&gt;. Apparently, there were some interesting hallway discussions about about out at IBM RTP. I just caught the tail-end of that on IRC.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/friday_atom_and_rest_links</guid>
    <title>Friday Atom and REST links</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/friday_atom_and_rest_links</link>
    <pubDate>Fri, 25 May 2007 22:30:40 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>rest</category>
    <category>webservices</category>
<description>A bunch of Atom and REST related links that I came across while catching up with my blog reading today:&lt;br&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/treydrake/entry/atom_and_ldap_sitting_in&quot;&gt;Atom and LDAP sitting in a tree&lt;/a&gt;. Trey Drake has released his OpenDS based Atom store as an open source project on Java.net at &lt;a href=&quot;http://atom.dev.java.net/&quot;&gt;http://atom.dev.java.net&lt;/a&gt;. It&amp;#39;s a directory server distributed as a Java web application that supports both Atom Publishing Protocol (APP) and Lightweight Directory Access Protocol (LDAP).&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/xml/library/x-atomencryption/&quot;&gt;Signing, encrypting and decrypting Atom&lt;/a&gt;. On IBM developerWorks, Nicolas Chase explains how &amp;quot;digital signatures and encryption can easily mesh with Atom data using the Apache Abdera API.&amp;quot; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a class=&quot;TitleLinkStyle&quot; href=&quot;http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=2a46fd53-67bf-4363-9c65-370984aaa79b&quot;&gt;Google GData: A Uniform Web API for All Google Services&lt;/a&gt;. Dare Obasanjo praises Google for creating a single uniform and RESTful web services API for eight of its key services, the APP based GData API. He writes &amp;quot;not only is it now possible to create a single library that knows how to talk to all of Google&amp;#39;s existing &lt;i&gt;and future &lt;/i&gt;Web
services since they all use GData. It is also a lot easier to provide &amp;#39;tooling&amp;#39; for these services than it would be for Yahoo&amp;#39;s family of Web
services given that they use a simple and uniform interface.&amp;quot;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/geertjan/entry/rest&quot;&gt;RESTful web services support in Netbeans&lt;/a&gt;. Geertjan links to blog entries and a screen-cast that explain Netbeans 6.0 support for RESTful web services, including the early access &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=311&quot;&gt;JSR-311&lt;/a&gt; REST API.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/theaquarium/entry/rest_compile_now_generating_php&quot;&gt;Generate code from your WADL REST API&lt;/a&gt;. Eduardo at The Aquarium links to &lt;a href=&quot;http://blog.tomayac.de/index.php?date=2007-05-23#17:08:48&quot;&gt;Thomas Steiner&lt;/a&gt; who is making progress on a WADL editor and a generator, bringing WSDL-like code generation to RESTful web services.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/the_apache_lucene_gdata_server</guid>
    <title>The Apache Lucene GData server project</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/the_apache_lucene_gdata_server</link>
    <pubDate>Tue, 15 May 2007 22:18:21 +0000</pubDate>
    <category>Feeds</category>
    <category>app</category>
    <category>atom</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;blockquote&gt;&lt;a href=&quot;http://planetgerman.blogspot.com/2007/05/apache-lucene-gdata-server-uses-db4o.html&quot;&gt;German Viscuso&lt;/a&gt;: Generally spoken &lt;a href=&quot;http://code.google.com/apis/gdata/overview.html&quot;&gt;GData&lt;/a&gt; provides a
general interface to make information available even beyond a browser
context by providing a single API that could be used to query, update,
and index structured data anywhere on the web.&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; Could GData become a &lt;/span&gt;&lt;a style=&quot;font-family:arial;&quot; href=&quot;http://jeremy.zawodny.com/blog/archives/006687.html&quot;&gt;simple and open replacement&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; for all the proprietary communications  protocols currently in use by database vendors?&lt;/span&gt;&lt;/blockquote&gt;

Interesting thoughts. I&amp;#39;ve heard about the Atom Publishing Protocol (APP) based &lt;a href=&quot;http://dev.lucene-ws.net/wiki/API&quot;&gt;Lucene Web Services API&lt;/a&gt;, but I hadn&amp;#39;t heard about the Apache Lucene GData server project. Atom protocol is moving fast, especially considering the fact that it&amp;#39;s not finished.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/restful_web_services_by_richardson</guid>
    <title>RESTful Web Services, by Richardson and Ruby</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/restful_web_services_by_richardson</link>
    <pubDate>Sat, 12 May 2007 15:47:23 +0000</pubDate>
    <category>General</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;p&gt;
&lt;img vspace=&quot;0&quot; hspace=&quot;0&quot; border=&quot;0&quot; align=&quot;left&quot; alt=&quot;Book&amp;#39;s cover&quot; src=&quot;http://ec1.images-amazon.com/images/I/518TAgBUwKL._AA240_.jpg&quot;&gt;&lt;a href=&quot;http://www.crummy.com/&quot;&gt;
Leonard Richardson&lt;/a&gt; and &lt;a href=&quot;http://intertwingly.net/blog/&quot;&gt;Sam Ruby&lt;/a&gt;&amp;#39;s new book &lt;a href=&quot;http://www.amazon.com/gp/product/0596529260?ie=UTF8&amp;amp;tag=bloggingrolle-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596529260&quot;&gt;RESTful Web Services&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=bloggingrolle-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596529260&quot; style=&quot;border:medium none  ! important;margin:0px ! important;&quot;&gt; is now available. It was one of the best sellers in the JavaOne bookstore this year, so congrats to Leonard and Sam. It sold out before I was able to get a copy; &lt;a href=&quot;http://weblogs.java.net/blog/mode/&quot;&gt;Rajiv&lt;/a&gt; bought the last one in the store.&lt;/p&gt;&lt;p&gt; &lt;br&gt;&lt;/p&gt;&lt;div style=&quot;clear:left;&quot;&gt;&lt;/div&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/app_and_openid_at_javaone</guid>
    <title>APP and OpenID at JavaOne</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/app_and_openid_at_javaone</link>
    <pubDate>Mon, 7 May 2007 14:43:56 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>javaone2007</category>
    <category>openid</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.sun.com/treydrake/entry/atom_app_openid_and_opends&quot;&gt;Trey Drake&lt;/a&gt;: How do you demo a directory server?  Build cool apps around it.  To that end, we&amp;#39;ve built an &lt;a href=&quot;http://en.wikipedia.org/wiki/Atom_%28standard%29&quot;&gt;Atom/APP&lt;/a&gt;
server, a lightweight OpenID server, a blogging and &amp;quot;twitter&amp;quot; like app
- all powered by OpenDS. Drop by our booth (Glassfish alley at
CommunityONE and .org section of the pavilion during JavaONE). &lt;a href=&quot;http://blogs.sun.com/ludo&quot;&gt;Ludo&lt;/a&gt; and I will introduce OpenDS and show off the demos in two talks; today at &lt;a href=&quot;http://developers.sun.com/events/communityone/track2.jsp&quot;&gt;CommunityONE&lt;/a&gt; at 5PM and Wednesday at 1:30 in the CommunityCorner.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Very cool. I&amp;#39;m not going to be the only one talking about Atom protocol at JavaOne. I&amp;#39;ll have to stop by the CommunityCorner, that sounds too good to miss.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/propono_0_5_released</guid>
    <title>Propono 0.5 released</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/propono_0_5_released</link>
    <pubDate>Mon, 23 Apr 2007 15:32:10 +0000</pubDate>
    <category>Java</category>
    <category>atom</category>
    <category>atomprotocol</category>
    <category>java</category>
    <category>metaweblogapi</category>
    <category>rest</category>
    <category>rome</category>
    <category>romepropono</category>
    <category>rss</category>
    <category>webservices</category>
<description>ROME Propono 0.5 is a minor bug fix release of Propono. You can get the release files and updated Javadocs from the &lt;a href=&quot;http://wiki.java.net/bin/view/Javawsxml/RomeProponoRelease05&quot;&gt;Propono 0.5 release page&lt;/a&gt;.</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/javaone_beyond_blogging_feeds_in</guid>
    <title>@JavaOne: Beyond Blogging: Feeds in Action</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/javaone_beyond_blogging_feeds_in</link>
    <pubDate>Wed, 4 Apr 2007 17:32:34 +0000</pubDate>
    <category>Java</category>
    <category>atom</category>
    <category>feeds</category>
    <category>java</category>
    <category>javaone</category>
    <category>propono</category>
    <category>rest</category>
    <category>rss</category>
<atom:summary type="html">As promised here&amp;#39;s some more info on my &lt;a href=&quot;http://java.sun.com/javaone/sf/&quot;&gt;JavaOne 2007&lt;/a&gt;
session. It&amp;#39;s based in part on the Beyond Blogging presentation that I
presented to a tiny audience at the local Tri-XML conference last year.
Tim Bray didn&amp;#39;t attend my talk, but he read the slides and &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2006/07/29/Johnson-on-Feeds&quot;&gt;called&lt;/a&gt;
them &amp;quot;the single best introduction and overview Iâ&#128;&#153;ve ever seen
about feeds and syndication and RSS and Atom and all that stuff.&amp;quot; I
shouldn&amp;#39;t brag. Had he attended the talk he might have had an entirely
different opinion, who knows. Anyhow, the presentation has been updated,
stream-lined and large portions rewritten to cover &lt;a href=&quot;http://rome.dev.java.net/&quot;&gt;ROME&lt;/a&gt; and ROME&amp;#39;s new Propono sub-project.&amp;nbsp;</atom:summary><description>&lt;p&gt;As &lt;a href=&quot;http://rollerweblogger.org/roller/entry/apacheconeu_roller_and_blogs_as&quot;&gt;promised&lt;/a&gt; here&amp;#39;s some more info on my &lt;a href=&quot;http://java.sun.com/javaone/sf/&quot;&gt;JavaOne 2007&lt;/a&gt; session. It&amp;#39;s based in part on the Beyond Blogging presentation that I presented to a tiny audience at the local Tri-XML conference last year. Tim Bray didn&amp;#39;t attend my talk, but he read the slides and &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2006/07/29/Johnson-on-Feeds&quot;&gt;called&lt;/a&gt; them &amp;quot;the single best introduction and overview I&amp;#39;ve ever seen
about feeds and syndication and RSS and Atom and all that stuff.&amp;quot; I shouldn&amp;#39;t brag. Had he attended the talk he might have had an entirely different opinion, who knows. Anyhow, the presentation has been updated, stream-lined and large portions rewritten to cover &lt;a href=&quot;http://rome.dev.java.net&quot;&gt;ROME&lt;/a&gt; and ROME&amp;#39;s new Propono sub-project. Here&amp;#39;s the outline:&lt;br&gt;&lt;br&gt;&lt;b&gt;The web is bloggy&lt;br&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blogging, XML and web services&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Feeds on the web today&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Feeds as an integration technology&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WS Death Star&lt;br&gt;&lt;b&gt;Understanding RSS and Atom&lt;br&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The birth of the RSS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The RDF fork: RSS 1.0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Elements of RSS 1.0 (abridged)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Feed Extension Modules&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The simple fork: RSS 0.92 â&#128;&#147; RSS 2.0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Elements of RSS 2.0 (abridged)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSS limitations&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Atom Publishing Format&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Elements of Atom (abridged)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RSS and Atom feed family tree&lt;br&gt;&lt;b&gt;Consuming feeds with ROME&lt;br&gt;&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It&amp;#39;s just XML&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROME RSS/Atom feed utilities&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; How does ROME work?&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROME SyndFeed model&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; How to fetch feeds&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fetching a feed with ROME Fetcher&lt;br&gt;&lt;b&gt;Producing feeds with ROME&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serving feeds: generate XML&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Use your favorite XML tools or...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Generating Atom with ROME&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serving feeds&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cache cache cache&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serving Atom with ROME&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Feed auto-discovery&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serving valid feeds&lt;br&gt;&lt;b&gt;Publishing with ROME Propono&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Atom Publishing Protocol (APP)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; What does APP do?&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; How does it do all that? The REST way&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP Service Document&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; An Atom collection &amp;lt;feed&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Getting an APP collection - with paging&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROME Propono&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ROME Propono Atom Client API&lt;br&gt;RSS/Atom trends&lt;br&gt;For More Information&lt;br&gt;Summary&lt;br&gt;Q &amp;amp; A&amp;nbsp;&lt;/p&gt;&lt;p&gt;And for the folks who&amp;#39;ve written to me about Propono, the new ROME subproject devoted to publishing via Atom protocol (and the MetaWeblog API): I hope to commit the code to ROME and starting blogging about it this week.&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/latest_links14</guid>
    <title>Latest links: March 21, 2007</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/latest_links14</link>
    <pubDate>Wed, 21 Mar 2007 22:42:13 +0000</pubDate>
    <category>Links</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/davidvc/archive/2007/03/why_use_atom_pu_1.html&quot;&gt;David Van Couvering: Why use Atom Publishing Protocol for REST?&lt;/a&gt;&lt;br&gt; &amp;quot;Why not just use HTTP and JSON and have done with it?&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://google-code-updates.blogspot.com/2007/03/ode-to-hibernate.html&quot;&gt;Max Ross: Ode to Hibernate (and Shards)&lt;/a&gt;&lt;br&gt; &amp;quot;Shards, a framework that adds support for horizontal partitioning (or in Google parlance, &amp;quot;sharding&amp;quot;) to Hibernate Core&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snellspace.com/wp/?p=625&quot;&gt;James Snell: Don&amp;#39;t Panic&lt;/a&gt;&lt;br&gt; &amp;quot;it is possible to get very far with nothing but the base APP protocol.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://torrez.us/archives/2007/03/21/525/&quot;&gt;Elias Torres: Is AtomPP for or not for blogs?&lt;/a&gt;&lt;br&gt; &amp;quot;we&amp;#39;ll probably have to do some good amount of extra work in defining how blogging clients will interact with a blogging service&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://robubu.com/?p=26&quot;&gt;Rob Yates: Atom Publishing Protocol - not enough for blogs?&lt;/a&gt;&lt;br&gt; Rob wants a guide that &amp;quot;allows blogging clients to be interoperable with blogging servers&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.imc.org/atom-protocol/mail-archive/msg08755.html&quot;&gt;Re: I-D ACTION:draft-ietf-atompub-protocol-14.txt&lt;/a&gt;&lt;br&gt; Roy Fielding: &amp;quot;the sky is not falling, and AtomPP implementations will interoperate just fine&amp;quot;&lt;/li&gt;
&lt;/ul&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/sun_web_developer_pack_r1</guid>
    <title>Sun Web Developer Pack R1 with RSS and Atom goodies</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/sun_web_developer_pack_r1</link>
    <pubDate>Mon, 12 Mar 2007 21:20:29 +0000</pubDate>
    <category>Java</category>
    <category>ajax</category>
    <category>atom</category>
    <category>java</category>
    <category>rest</category>
    <category>rome</category>
    <category>rss</category>
    <category>swdp</category>
    <category>web20</category>
<description>The &lt;a href=&quot;http://developers.sun.com/web/swdp/&quot;&gt;Sun Web Developer Pack&lt;/a&gt; (SWDP) finally &lt;a href=&quot;http://blogs.sun.com/arungupta/entry/introducing_sun_web_developer_pack&quot;&gt;uncloaked&lt;/a&gt; today, so I can talk a
little more openly about what I and my Java EE co-workers have been
working on. You can get the full scoop at the SWDP site, but basically
SWDP is a bundle of technologies to help developers build &amp;quot;Web 2.0&amp;quot; or
next-generation web applications on the Java platform. Ajax, scripting
languages, REST and of course RSS/Atom are all part of that. The
RSS/Atom bits are ROME 0.9 (Beta), Blogapps 2.0 (Early Access) and a
ROME-based Atom Server kit based on code from Roller.&amp;nbsp; There are also
example Atom server implementations in the REST API and Phobos
components of the pack.&lt;br&gt; &lt;p&gt;I&amp;#39;m pretty excited that we&amp;#39;re putting some resources behind ROME and that both &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;ROME&lt;/a&gt; and &lt;a href=&quot;https://blogapps.dev.java.net/&quot;&gt;Blogapps&lt;/a&gt;
are part of SWDP R1, but I&amp;#39;m even more excited about the next release.
In R2 we&amp;#39;ll drop the Atom Server Kit and Blogapps BlogClient and we&amp;#39;ll
replace them with &lt;a href=&quot;https://rome.dev.java.net/servlets/ReadMsg?list=dev&amp;amp;msgNo=2282&quot;&gt;ROME Propono&lt;/a&gt; a brand new Atom protocol client and server library that we&amp;#39;re getting ready to contribute to the ROME project.&lt;/p&gt;I haven&amp;#39;t had a whole lot of time to experiment with the various components in the pack, but I have played with &lt;a href=&quot;https://phobos.dev.java.net/&quot;&gt;Phobos&lt;/a&gt;
and I think it&amp;#39;s pretty compelling. Phobos is a &amp;quot;lightweight,
scripting-friendly, web application
environment.&amp;quot; It&amp;#39;s not just for creating server-side JavaScript
applications, but that&amp;#39;s the angle the I find interesting. So many
developers are creating JavaScript/Ajax applications these days that
working in JavaScript on both client and server-sides makes sense --
especially when you can debug into JavaScript code in your IDE as you
can with the Netbeans Phobos module. Also note that the &lt;a href=&quot;https://ajax.dev.java.net/&quot;&gt;jMaki&lt;/a&gt; Ajax components work with JSP, PHP &lt;i&gt;and&lt;/i&gt; Phobos -- jMaki and Phobos look like a winning combination.</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/javax_ws_rest</guid>
    <title>javax.ws.rest</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/javax_ws_rest</link>
    <pubDate>Wed, 14 Feb 2007 10:24:20 +0000</pubDate>
    <category>Java</category>
    <category>java</category>
    <category>rest</category>
    <category>webservices</category>
<description>&lt;p&gt;That&amp;#39;s big news. A standard Java API is coming for building REST based web services. If you&amp;#39;re an expert in REST, you can participate in it&amp;#39;s development by &lt;a href=&quot;http://www.jcp.org/en/jsr/egnom?id=311&quot;&gt;signing up for the expert group&lt;/a&gt;. Apache, BEA, Google and Jerome Louvel (the &lt;a href=&quot;http://www.restlet.org/&quot;&gt;RESTlet&lt;/a&gt; guy) are on-board. Here&amp;#39;s the intro from the JSR:

&lt;/p&gt;&lt;blockquote&gt;&lt;a href=&quot;http://www.jcp.org/en/jsr/detail?id=311&quot;&gt;JSR 311: Java (TM) API for RESTful Web Services&lt;/a&gt;: This API will enable developers to rapidly build Web applications in
Java that are characteristic of the best designed parts of the Web.
This JSR will develop an API for providing REST(Representational State
Transfer - See reference to Roy Fielding&amp;#39;s dissertation in section 3.1)
support in the Java Platform. Lightweight, RESTful approaches are
emerging as a popular alternative to SOAP-based technologies for
deployment of services on the internet. Currently, building RESTful Web
services using the Java Platform is significantly more complex than
building SOAP-based services and requires using low-level APIs like
Servlets or the dynamic JAX-WS APIs. Correct implementation requires a
high level of HTTP knowledge on the developer&amp;#39;s part.&lt;p&gt;
This JSR will aim to provide a high level easy-to use API for
developers to write RESTful web services independent of the underlying
technology and will allow these services to run on top of the Java EE
or the Java SE platforms. The expert group will investigate whether a
subset of the API can be made used with Java ME. The goal of this JSR
is to provide an easy to use, declarative style of programming using
annotations for developers to write REST ful Web Services and also
enable low level access in cases where needed by the application.&lt;/p&gt;&lt;p&gt;
RESTful Web Services is a relatively new area in the industry and there
are still a lot of unknowns in this space. For example, a key aspect of
RESTful Web Services is for the service to be stateless. However, this
often requires the developer to produce boiler-plate state restoration
code that could be avoided with state-aware API help. We expect the
expert group to be an active and engaged group of people participating
to prioritize and help drive issues to achieve the end goal of a
developer friendly API. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;

Here are a couple more links about the new JSR:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.noelios.com/2007/02/14/&quot;&gt;Elliote Rusty Harold&lt;/a&gt; is not exactly positive, saying &amp;quot;this is like asking Karl Rove and Dick Cheney to write the Democratic Party platform&amp;quot; but concludes with a call for participation: &amp;quot;are there any JSR members here who might join the working group and bring some sanity and actual REST experience to the development of the eventual specification?&amp;quot;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blog.noelios.com/2007/02/14/&quot;&gt;Jerome Louvel&lt;/a&gt; explains the idea of REST annotations and explains that implementations will be possible with JAX-WS, Servlet API or Restlet API.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://netzooid.com/blog/2007/02/14/jsr-311-javaxwsrest/&quot;&gt;Dan Diephouse&lt;/a&gt; says &amp;quot;This is excellent news - Iâ&#128;&#153;m glad to see people are thinking more seriously about RESTful services on Java&amp;quot; and &amp;quot;Expert group members may be interested in checking out the previous work Iâ&#128;&#153;ve done on Java REST annotations&amp;quot;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://kasparov.skife.org/blog/src/java/vb-by-committee.html&quot;&gt;Brian McAllister&lt;/a&gt;: says the JSR sounds like another case where &amp;quot;reasonably good developers trying to design software for
presumed-incompetent developers which will in fact be used unhappily by
basically competent developers.&amp;quot; &lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://weblogs.java.net/blog/mhadley/archive/2007/02/jsr_311_java_ap.html&quot;&gt;Mark Hadley&lt;/a&gt; addresses some of the concerns raised above and provides an interesting code example showing the REST annotations in action. &lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wanderingbarque.com/nonintersecting/2007/02/14/new-rest-jsr/&quot;&gt;Pete Lacey&lt;/a&gt;: &amp;quot;Initial thoughts: 1) Cool! 2) The servlet API is not ideal, this is needed. 3) I hope they donâ&#128;&#153;t screw it up (see &lt;a href=&quot;http://java.sun.com/webservices/jaxws/&quot;&gt;JAX-WS&lt;/a&gt;).&amp;quot;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.1060.org/blogxter/entry?publicid=8C08746C8C0462CC6FB4E4D69098F1AE&quot;&gt;Steve Loughran&lt;/a&gt;: &amp;quot;I don&amp;#39;t have the faintest clue what a REST
API should look like, except that &lt;i&gt;it must not look like JAX-RPC/JAX-WS&amp;quot;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2007/02/jsr-311-java-rest-api&quot;&gt;InfoQ thread&lt;/a&gt;: summary of news and three comments as of Thursday &lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://blogs.sun.com/sandoz/entry/jsr_311_and_the_republicans&quot;&gt;Paul Sandoz&lt;/a&gt;: &amp;quot;I have been wanting to work on such an API and implementation for about
5 years! [...] Now the Web &lt;a href=&quot;http://blogs.sun.com/sandoz/entry/rest_is_showing_some_life%3F&quot;&gt;zeitgeist&lt;/a&gt; is back and so are we :-)&amp;quot;&lt;/li&gt;&lt;/ul&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/new_atom_spec_and_queen</guid>
    <title>New Atom protocol spec draft and Queen City planets</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/new_atom_spec_and_queen</link>
    <pubDate>Wed, 27 Dec 2006 16:50:19 +0000</pubDate>
    <category>Blogging</category>
    <category>app</category>
    <category>atom</category>
    <category>blogging</category>
    <category>rest</category>
    <category>webdev</category>
    <category>webservices</category>
<description>&lt;p&gt;&lt;a href=&quot;http://bitworking.org/news/Atom_Publishing_Protocol_Draft_12&quot;&gt;Joe Gregorio announces&lt;/a&gt; a new &lt;a href=&quot;http://bitworking.org/projects/atom/draft-ietf-atompub-protocol-12.html&quot;&gt;Atom Publishing Protocol Spec (draft #12)&lt;/a&gt; and he says it might end up being the final. I guess it&amp;#39;s time for a new &lt;a href=&quot;http://blogapps.dev.java.net&quot;&gt;Blogapps&lt;/a&gt; release with APP draft #12 and &lt;a href=&quot;http://rollerweblogger.org/roller/entry/rome_0_9_beta_is&quot;&gt;ROME 0.9&lt;/a&gt; support.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Plus, Joe has put together a set of new &lt;a href=&quot;http://bitworking.org/news/Charlotte_Mecklenburg_County__NC&quot;&gt;planet sites for towns in the Charlotte, NC area&lt;/a&gt;; all based on feeds from Google Base, Google Blogs, Google News, Craigs List, Flickr and the Weather Service. The sites look useful, but the ads combined with the minimalist design make them look a little spammy on first glance. Perhaps a short &amp;quot;about this site&amp;quot; paragraph is in order.&lt;br&gt;&lt;/p&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/new_book_on_rest_web</guid>
    <title>New book on REST Web Services</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/new_book_on_rest_web</link>
    <pubDate>Tue, 7 Nov 2006 10:14:09 +0000</pubDate>
    <category>General</category>
    <category>rest</category>
    <category>xml</category>
<description>&lt;blockquote&gt;&lt;p&gt;To design a website you need to know about HTTP, XHTML, and URIs.

&lt;/p&gt;&lt;p&gt;To design a web application you need to know about HTTP, XHTML, and
URIs.

&lt;/p&gt;&lt;p&gt;To design a web service you need to know about XML, SOAP, WSDL,
UDDI, WS-Policy, WS-Security, WS-Eventing, WS-Reliability,
WS-Coordination, WS-Transaction, WS-Notification, WS-BaseNotification,
WS-Topics, WS-Transfer...

&lt;/p&gt;What happened there?&lt;/blockquote&gt;&lt;a href=&quot;http://www.crummy.com/&quot;&gt;

Leonard Richardson&lt;/a&gt; and &lt;a href=&quot;http://www.intertwingly.net/blog/&quot;&gt;Sam Ruby&lt;/a&gt; are writing a &lt;a href=&quot;http://www.crummy.com/writing/REST-Web-Services/&quot;&gt;book on REST Web Services&lt;/a&gt; and they&amp;#39;re going to develop it in the open on their blogs. If you care about web services of any kind, you&amp;#39;re going to want to follow along.&lt;br&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/atom_protocol_and_wadl</guid>
    <title>Atom protocol and WADL</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/atom_protocol_and_wadl</link>
    <pubDate>Fri, 28 Apr 2006 16:47:44 +0000</pubDate>
    <category>Java</category>
    <category>app</category>
    <category>atom</category>
    <category>java</category>
    <category>rest</category>
<description>&lt;br&gt;Via &lt;a href=&quot;http://blogs.sun.com/roller/page/theaquarium?entry=wadl_a_simple_description_of&quot; target=&quot;_self&quot;&gt;The Aquarium&lt;/a&gt; I see that &lt;a href=&quot;http://weblogs.java.net/blog/mhadley/archive/2006/04/wadl_now_a_sun.html&quot; target=&quot;_self&quot;&gt;Mark Hadley&lt;/a&gt;&amp;#39;s work on Web Application Description Language (WADL) is now a &lt;a href=&quot;http://research.sun.com/spotlight/2006/2006-04-24-TR153.html&quot; target=&quot;_self&quot;&gt;Sun Technical Report&lt;/a&gt;. WADL provides a way to describe a REST based web application or service so that tools can discover services, generate proxies, etc. As I understand it, WADL is to REST as WSDL is to SOAP.&lt;br&gt;&lt;br&gt;There&amp;#39;s also something new since the last time I looked at WADL. Mark has added a section on the &lt;a href=&quot;http://www.ietf.org/html.charters/atompub-charter.html&quot; target=&quot;_self&quot;&gt;Atom protocol&lt;/a&gt; and examples that show how to use a WADL file to replace an Atom introspection document. Looks like good stuff to me. If you need an introspection doc for your REST based web service, why not use WADL?&lt;br&gt;&lt;br&gt;Via Google, I found that there&amp;#39;s also a &lt;a href=&quot;http://www.idealliance.org/proceedings/xml05/slides/hadley.pdf&quot; target=&quot;_self&quot;&gt;WADL presentation&lt;/a&gt; on-line.&lt;br&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://rollerweblogger.org/roller/entry/destructive_get</guid>
    <title>Destructive GET</title>
    <dc:creator>Dave Johnson</dc:creator>
    <link>https://rollerweblogger.org/roller/entry/destructive_get</link>
    <pubDate>Fri, 6 May 2005 17:13:43 +0000</pubDate>
    <category>General</category>
    <category>rest</category>
    <category>roller</category>
    <category>webservices</category>
<description>&lt;p&gt;
Beware the &lt;a href=&quot;http://webaccelerator.google.com&quot;&gt;Google Web Accelerator&lt;/a&gt;. 
It will wreak havoc on the web applications that you use &lt;s&gt;(Roller included)&lt;/s&gt;. 
Problem is, in most webapps HTTP GET changes things (even though it shouldn&amp;#39;t). 
Read all about it on &amp;lt;a href=
&amp;quot;http://radar.oreilly.com/archives/2005/05/google_web_acce_1.html&amp;quot;&amp;gt;O&amp;#39;Reilly Radar. 
I don&amp;#39;t understand this. 
Google employs a hell of a lot of very smart people. 
How did they let this one slip by?

&lt;p&gt;
&lt;b&gt;Update&lt;/b&gt;: I just reviewed the Roller UI and found that, at least for deletes, we do the right thing. The pattern we follow is to use a delete link (which causes a GET), but that sends you to an &amp;quot;Are You Sure&amp;quot; page which uses a POST to do the actual delete -- so Roller is probably safe from the Google Web Accelerator.
&lt;/p&gt;&lt;/p&gt;</description>  </item>
</channel>
</rss>