<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Stripes: A Successful First Project</title>
	<atom:link href="http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project</link>
	<description></description>
	<lastBuildDate>Thu, 02 Sep 2010 21:45:58 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Don Mitchell</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-2100</link>
		<dc:creator>Don Mitchell</dc:creator>
		<pubDate>Fri, 04 Dec 2009 22:59:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-2100</guid>
		<description>Hi Christian,

I&#039;m wondering now that this blog post is several months old if you are still using Stripes or considering other frameworks again?  I&#039;ve been using both Stripes and Spring and find that Stripes is a better match for my environment mainly because of its osimplicity and use of convention over configuration.  My main concern with it is that I don&#039;t see any wide scale adoption of it.

Thanks.</description>
		<content:encoded><![CDATA[<p>Hi Christian,</p>
<p>I&#8217;m wondering now that this blog post is several months old if you are still using Stripes or considering other frameworks again?  I&#8217;ve been using both Stripes and Spring and find that Stripes is a better match for my environment mainly because of its osimplicity and use of convention over configuration.  My main concern with it is that I don&#8217;t see any wide scale adoption of it.</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: christian</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-262</link>
		<dc:creator>christian</dc:creator>
		<pubDate>Mon, 02 Mar 2009 06:24:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-262</guid>
		<description>@Keith:

Thanks for the thoughtful response.  I think that there are different scenarios when it comes to binding in most web applications.  We have some case where we bind into rich graphs of javabean-style objects (quite rare though) and on the other end of the spectrum we have our single parameter controllers.  There are some in-between cases, where a few parameters capture what is needed to handle the request, and no object yet exists to capture them (and creating one may seem like overkill).  In this scenario I prefer how it&#039;s dealt with in Stripes than in Spring MVC.  I didn&#039;t mean to imply that all Spring controllers _must_ have many annotations.  From my experience however, we&#039;ve ended up with a number of such handler methods over the course of a project.  Reviewing section 13.11 of the Spring Reference Guide reveals a number of method-parameter annotations in what seem like very simple examples.

I want to be clear that I view this mostly as a conversation about aesthetics.  You might prefer to create simple javabeans to bind into where I prefer letting the action be that bean.  I personally have a fairly strong dislike for method parameter annotations.  Getting that out of the way, I&#039;ll answer your other questions and try to clarify why it is that I prefer the aesthetics of the Stripes approach.

I like keeping my Actions simple.  Multiple handlers are okay, but when the parameters or model differ too much between handlers, it becomes difficult to maintain for exactly the reasons you mentioned.  In this case it&#039;s an easy refactor to split an action into two or more simpler actions.  I would describe Stripes Actions as pretty small and granular.  A single page with dynamic asynchronous behavior would likely be backed by multiple Actions (and likely a single @Controller if I were using Spring).  I wouldn&#039;t map a single Stripes Action to a single Spring Controller in most cases.

While I&#039;m not religious about it, I have been moving away from binding straight into domain objects for a variety of reasons: invariant enforcing, protecting state, immutable value objects, etc.  This is a huge topic that I plan on writing more about soon.  An Action happens to be a great place to bind a collection of values before doing something with them, like instantiating a value object or updating a small subset of the state on an entity.  Sure, I could create a simple javabean that collects these fields, but I&#039;m pretty happy with letting the action be that for me.

I very much like the stateless approach for my services, repositories, and many other collaborators beneath the view layer.  And it was quite interesting to me when I started feeling like the Stripes model was a better fit for how I think about the view layer.

Another small perk: with the action as the root of the model, using the &lt;jsp:useBean .../&gt; declaration (see above) allows for modern IDEs to give great feedback about what is available to the view.  It small, but nice and I don&#039;t know how to get the same when the model is backed by generic map.

Given all of this, the fact that Stripes offers CleanURLs for RESTy URLs and binding, &lt;s:url .../&gt; and &lt;s:param .../&gt;to help with DRY, and fantastic convention over configuration, I think it&#039;s a great framework and it turned out to be a good choice for our project.  Don&#039;t get me wrong, I love the work that SpringSource has done and I&#039;m excited to check out all of the new stuff that&#039;s coming up in 3.0.  While Spring MVC may no longer be my first choice for the web tier (it was since 2004), the rest of the Spring stack is likely to be part of my Java toolbox for as long as I&#039;m using Java.</description>
		<content:encoded><![CDATA[<p>@Keith:</p>
<p>Thanks for the thoughtful response.  I think that there are different scenarios when it comes to binding in most web applications.  We have some case where we bind into rich graphs of javabean-style objects (quite rare though) and on the other end of the spectrum we have our single parameter controllers.  There are some in-between cases, where a few parameters capture what is needed to handle the request, and no object yet exists to capture them (and creating one may seem like overkill).  In this scenario I prefer how it&#8217;s dealt with in Stripes than in Spring MVC.  I didn&#8217;t mean to imply that all Spring controllers _must_ have many annotations.  From my experience however, we&#8217;ve ended up with a number of such handler methods over the course of a project.  Reviewing section 13.11 of the Spring Reference Guide reveals a number of method-parameter annotations in what seem like very simple examples.</p>
<p>I want to be clear that I view this mostly as a conversation about aesthetics.  You might prefer to create simple javabeans to bind into where I prefer letting the action be that bean.  I personally have a fairly strong dislike for method parameter annotations.  Getting that out of the way, I&#8217;ll answer your other questions and try to clarify why it is that I prefer the aesthetics of the Stripes approach.</p>
<p>I like keeping my Actions simple.  Multiple handlers are okay, but when the parameters or model differ too much between handlers, it becomes difficult to maintain for exactly the reasons you mentioned.  In this case it&#8217;s an easy refactor to split an action into two or more simpler actions.  I would describe Stripes Actions as pretty small and granular.  A single page with dynamic asynchronous behavior would likely be backed by multiple Actions (and likely a single @Controller if I were using Spring).  I wouldn&#8217;t map a single Stripes Action to a single Spring Controller in most cases.</p>
<p>While I&#8217;m not religious about it, I have been moving away from binding straight into domain objects for a variety of reasons: invariant enforcing, protecting state, immutable value objects, etc.  This is a huge topic that I plan on writing more about soon.  An Action happens to be a great place to bind a collection of values before doing something with them, like instantiating a value object or updating a small subset of the state on an entity.  Sure, I could create a simple javabean that collects these fields, but I&#8217;m pretty happy with letting the action be that for me.</p>
<p>I very much like the stateless approach for my services, repositories, and many other collaborators beneath the view layer.  And it was quite interesting to me when I started feeling like the Stripes model was a better fit for how I think about the view layer.</p>
<p>Another small perk: with the action as the root of the model, using the &lt;jsp:useBean &#8230;/&gt; declaration (see above) allows for modern IDEs to give great feedback about what is available to the view.  It small, but nice and I don&#8217;t know how to get the same when the model is backed by generic map.</p>
<p>Given all of this, the fact that Stripes offers CleanURLs for RESTy URLs and binding, &lt;s:url &#8230;/&gt; and &lt;s:param &#8230;/&gt;to help with DRY, and fantastic convention over configuration, I think it&#8217;s a great framework and it turned out to be a good choice for our project.  Don&#8217;t get me wrong, I love the work that SpringSource has done and I&#8217;m excited to check out all of the new stuff that&#8217;s coming up in 3.0.  While Spring MVC may no longer be my first choice for the web tier (it was since 2004), the rest of the Spring stack is likely to be part of my Java toolbox for as long as I&#8217;m using Java.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Keith Donald</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-257</link>
		<dc:creator>Keith Donald</dc:creator>
		<pubDate>Sat, 28 Feb 2009 22:01:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-257</guid>
		<description>Interesting article!

Regarding Spring MVC&#039;s singleton Controller model: if you bind request parameters to a @Controller handler method argument that is a JavaBean, which is the most common technique, there is no annotation required.  @RequestParam is also optional when binding single parameter values.  Most @Controller handler methods I write use no annotations other than @RequestMapping, which is concise and improves code readability.  What lots of annotations do you end up writing in your Spring MVC handler methods?

I personally find it more natural to author stateless @Controllers with independent handler methods that process requests to the same logical resource.  What I like about this is everything related to processing a request is local to a handler method.  With the Stateful approach, model state is shared across all handler methods--what do you do when the model differs between these methods?  Don&#039;t you end up with a lot of null instance variables, and resulting confusion over what exactly the view can access?  Or do you prevent this by introducing additional Action beans?  Do you ever feel doing that impacts your Controller design in a unnatural way? I&#039;m curious your thoughts on this.</description>
		<content:encoded><![CDATA[<p>Interesting article!</p>
<p>Regarding Spring MVC&#8217;s singleton Controller model: if you bind request parameters to a @Controller handler method argument that is a JavaBean, which is the most common technique, there is no annotation required.  @RequestParam is also optional when binding single parameter values.  Most @Controller handler methods I write use no annotations other than @RequestMapping, which is concise and improves code readability.  What lots of annotations do you end up writing in your Spring MVC handler methods?</p>
<p>I personally find it more natural to author stateless @Controllers with independent handler methods that process requests to the same logical resource.  What I like about this is everything related to processing a request is local to a handler method.  With the Stateful approach, model state is shared across all handler methods&#8211;what do you do when the model differs between these methods?  Don&#8217;t you end up with a lot of null instance variables, and resulting confusion over what exactly the view can access?  Or do you prevent this by introducing additional Action beans?  Do you ever feel doing that impacts your Controller design in a unnatural way? I&#8217;m curious your thoughts on this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-255</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Fri, 27 Feb 2009 23:05:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-255</guid>
		<description>Glad you like it. We use stripes at a very large online retailer with good success (several hundred million pageviews a month). The one thing that sucked for us was their use of flash scope had a reference to a non-serializable object (a http request wrapper) and forced us to go without sessions (we don&#039;t use sticky sessions for a lot of reasons). Not an overly bad decision, but prevents some handy features, like redirects with flash scope usage.

Other than that it works great. We use the interceptors for certain things too. The biggest benefit though is the low configuration and auto discovery of things. Combined with the UrlRewrite library and you have a great combination.</description>
		<content:encoded><![CDATA[<p>Glad you like it. We use stripes at a very large online retailer with good success (several hundred million pageviews a month). The one thing that sucked for us was their use of flash scope had a reference to a non-serializable object (a http request wrapper) and forced us to go without sessions (we don&#8217;t use sticky sessions for a lot of reasons). Not an overly bad decision, but prevents some handy features, like redirects with flash scope usage.</p>
<p>Other than that it works great. We use the interceptors for certain things too. The biggest benefit though is the low configuration and auto discovery of things. Combined with the UrlRewrite library and you have a great combination.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mario Arias</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-252</link>
		<dc:creator>Mario Arias</dc:creator>
		<pubDate>Fri, 27 Feb 2009 16:25:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-252</guid>
		<description>Hi Christian:

Thanks for the IntelliStripes mention

Mario Arias</description>
		<content:encoded><![CDATA[<p>Hi Christian:</p>
<p>Thanks for the IntelliStripes mention</p>
<p>Mario Arias</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frederic Daoud</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-251</link>
		<dc:creator>Frederic Daoud</dc:creator>
		<pubDate>Fri, 27 Feb 2009 15:28:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-251</guid>
		<description>Hi Christian,

Very nice article! Thank you for your detailed analysis, it is interesting to read.

Cheers,
Freddy</description>
		<content:encoded><![CDATA[<p>Hi Christian,</p>
<p>Very nice article! Thank you for your detailed analysis, it is interesting to read.</p>
<p>Cheers,<br />
Freddy</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Morten Matras</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-250</link>
		<dc:creator>Morten Matras</dc:creator>
		<pubDate>Fri, 27 Feb 2009 13:15:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-250</guid>
		<description>Having used Stripes for a few years now and deployed around 20 projects I can strongly support the usage of Stripes for your next java based web-project. It is easy to set up and you start on day one with delivering results instead of configuring xml files like you would in many other frameworks.

The support of the mailing-list for stripes and the ease of setting it up boost productivity by a magnitude.

It&#039;s simple, it can&#039;t do everything, but leave the advanced stuff for later and start being productive today. - Choose Stripes.</description>
		<content:encoded><![CDATA[<p>Having used Stripes for a few years now and deployed around 20 projects I can strongly support the usage of Stripes for your next java based web-project. It is easy to set up and you start on day one with delivering results instead of configuring xml files like you would in many other frameworks.</p>
<p>The support of the mailing-list for stripes and the ease of setting it up boost productivity by a magnitude.</p>
<p>It&#8217;s simple, it can&#8217;t do everything, but leave the advanced stuff for later and start being productive today. &#8211; Choose Stripes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jambozo</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-249</link>
		<dc:creator>Jambozo</dc:creator>
		<pubDate>Fri, 27 Feb 2009 09:51:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-249</guid>
		<description>Nice, comprehensive blog entry... one thing not covered here was deployment. Did you deploy on a single server instance or on a cluster? If clustered, did you encounter any &#039;funnies&#039;? I&#039;d be very interested in your experiences on that side of the fence.</description>
		<content:encoded><![CDATA[<p>Nice, comprehensive blog entry&#8230; one thing not covered here was deployment. Did you deploy on a single server instance or on a cluster? If clustered, did you encounter any &#8216;funnies&#8217;? I&#8217;d be very interested in your experiences on that side of the fence.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AK</title>
		<link>http://blog.carbonfive.com/2009/02/java/stripes-a-succesful-first-project/comment-page-1#comment-248</link>
		<dc:creator>AK</dc:creator>
		<pubDate>Fri, 27 Feb 2009 06:26:18 +0000</pubDate>
		<guid isPermaLink="false">http://blog.carbonfive.com/?p=301#comment-248</guid>
		<description>Good article Christian--thanks for posting.  I just got back into Java development after a 5-year (management/architecture) hiatus and after spending quite some time looking for a framework that was easy to learn and attractive, I chose Stripes.

I just finished w/ Freddy Daoud&#039;s great book and am working on my 1st app.  I&#039;ve got something up and running within two days--remember I&#039;ve not touched coding in 5 years!

Your point about keeping your Actions clean is well taken.  Right now, all my persistence is taking place in my actions and things are getting too busy.  I&#039;ll read the article you referenced: &quot;simple Stripes Interceptor which injects dependencies into Actions&quot;--thanks for that as well.</description>
		<content:encoded><![CDATA[<p>Good article Christian&#8211;thanks for posting.  I just got back into Java development after a 5-year (management/architecture) hiatus and after spending quite some time looking for a framework that was easy to learn and attractive, I chose Stripes.</p>
<p>I just finished w/ Freddy Daoud&#8217;s great book and am working on my 1st app.  I&#8217;ve got something up and running within two days&#8211;remember I&#8217;ve not touched coding in 5 years!</p>
<p>Your point about keeping your Actions clean is well taken.  Right now, all my persistence is taking place in my actions and things are getting too busy.  I&#8217;ll read the article you referenced: &#8220;simple Stripes Interceptor which injects dependencies into Actions&#8221;&#8211;thanks for that as well.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
