<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>learnjsf.com</title>
	<link>http://learnjsf.com/wp</link>
	<description></description>
	<pubDate>Mon, 23 Jun 2008 14:15:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>JSF Welcome File Gotcha&#8217;</title>
		<link>http://learnjsf.com/wp/2006/12/19/jsf-welcome-file-gotcha/</link>
		<comments>http://learnjsf.com/wp/2006/12/19/jsf-welcome-file-gotcha/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 14:28:31 +0000</pubDate>
		<dc:creator>dchandler</dc:creator>
		
	<category>JavaServer Faces</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/2006/12/19/jsf-welcome-file-gotcha/</guid>
		<description><![CDATA[When using web.xml&#8217;s  welcome file capability to specify your application home page, make sure your editor (hint: Eclipse Web Tools?) doesn&#8217;t put in a leading slash.
Right:
&#60;welcome-file-list&#62;
&#60;welcome-file&#62;homePage.jsf&#60;/welcome-file&#62;
&#60;/welcome-file-list&#62;
Wrong:
&#60;welcome-file-list&#62;
&#60;welcome-file&#62;/homePage.jsf&#60;/welcome-file&#62;
&#60;/welcome-file-list&#62;
The leading slash in the second example will trip up JSF such that when you submit a form on the home page, it will simply reload the home page [...]]]></description>
			<content:encoded><![CDATA[<p>When using web.xml&#8217;s  welcome file capability to specify your application home page, make sure your editor (hint: Eclipse Web Tools?) doesn&#8217;t put in a leading slash.</p>
<p><strong>Right:</strong></p>
<p>&lt;welcome-file-list&gt;<br />
&lt;welcome-file&gt;homePage.jsf&lt;/welcome-file&gt;<br />
&lt;/welcome-file-list&gt;</p>
<p><strong>Wrong:</strong></p>
<p>&lt;welcome-file-list&gt;<br />
&lt;welcome-file&gt;/homePage.jsf&lt;/welcome-file&gt;<br />
&lt;/welcome-file-list&gt;</p>
<p>The leading slash in the second example will trip up JSF such that when you submit a form on the home page, it will simply reload the home page on the first click, and then do the action and navigate to a new page only on the second click. If you look closely in the URL, you&#8217;ll see a // in the path that causes the problem. Welcome files work in any directory (thus, no slash is needed), but Eclipse WTP appears to add a preceding slash when using the file chooser.<br />
<strong>Note:</strong> if you&#8217;re using Tomcat and specify a welcome file with a jsf extension as shown, you&#8217;ll also need to create a dummy file with that extension in addition to the real JSP or .xhtml (facelets) view template to satisfy Tomcat&#8217;s welcome file existence check. I create a .jsf file with a single line:</p>
<p>&lt;%// Dummy file to trick Tomcat into supporting welcome-file-list &#8211;%&gt;</p>
<p>/dmc
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/12/19/jsf-welcome-file-gotcha/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>MyFaces Requiredness Checking Bug Resolved</title>
		<link>http://learnjsf.com/wp/2006/12/19/myfaces-requiredness-checking-bug-resolved/</link>
		<comments>http://learnjsf.com/wp/2006/12/19/myfaces-requiredness-checking-bug-resolved/#comments</comments>
		<pubDate>Tue, 19 Dec 2006 14:13:49 +0000</pubDate>
		<dc:creator>dchandler</dc:creator>
		
	<category>JavaServer Faces</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/2006/12/19/myfaces-requiredness-checking-bug-resolved/</guid>
		<description><![CDATA[After *much* discussion, MYFACES-1467 has been resolved (see previous post). The patch did not break the Sun TCK as originally thought, so it went in as UIInput.java version 478342 on 11/22/06.
/dmc

]]></description>
			<content:encoded><![CDATA[<p>After *much* discussion, MYFACES-1467 has been resolved (see <a href="http://learnjsf.com/wp/2006/10/14/hacking-jsf-requiredness-checking/">previous post</a>). The patch did not break the Sun TCK as originally thought, so it went in as UIInput.java version 478342 on 11/22/06.</p>
<p>/dmc
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/12/19/myfaces-requiredness-checking-bug-resolved/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Hacking JSF Requiredness Checking</title>
		<link>http://learnjsf.com/wp/2006/10/14/hacking-jsf-requiredness-checking/</link>
		<comments>http://learnjsf.com/wp/2006/10/14/hacking-jsf-requiredness-checking/#comments</comments>
		<pubDate>Sat, 14 Oct 2006 05:52:36 +0000</pubDate>
		<dc:creator>dchandler</dc:creator>
		
	<category>JavaServer Faces</category>
	<category>Web App Security</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/2006/10/14/hacking-jsf-requiredness-checking/</guid>
		<description><![CDATA[MyFaces committer Matthias Weßendorf and I spent a few minutes this afternoon at ApacheCon confirming what I suspected about validation of required values in JSF. Normally, if you leave a required field empty, it will show up as an empty string and JSF will properly check for requiredness. But if, for a given required field, [...]]]></description>
			<content:encoded><![CDATA[<p>MyFaces committer <a href="https://issues.apache.org/jira/secure/ViewProfile.jspa?name=matzew">Matthias Weßendorf</a> and I spent a few minutes this afternoon at ApacheCon confirming what I suspected about validation of required values in JSF. Normally, if you leave a required field empty, it will show up as an empty string and JSF will properly check for requiredness. But if, for a given required field, you remove the name-value pair from the POST altogether using a man-in-the-middle tool (MITM), JSF will not detect the missing required field.  This is also an issue in the Sun RI and in fact results from unclear, if not conflicting, requirements in the JSF spec as detailed at the JIRA link below.<br />
This issue is being tracked on the MyFaces JIRA <a href="https://issues.apache.org/jira/browse/MYFACES-1467">https://issues.apache.org/jira/browse/MYFACES-1467</a>, where you can also obtain the patch I&#8217;ve submitted.<br />
/dmc
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/10/14/hacking-jsf-requiredness-checking/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Securing MyFaces Applications Against the OWASP Top Ten</title>
		<link>http://learnjsf.com/wp/2006/10/11/securing-myfaces-applications-against-the-owasp-top-ten-2/</link>
		<comments>http://learnjsf.com/wp/2006/10/11/securing-myfaces-applications-against-the-owasp-top-ten-2/#comments</comments>
		<pubDate>Wed, 11 Oct 2006 06:03:34 +0000</pubDate>
		<dc:creator>dchandler</dc:creator>
		
	<category>JavaServer Faces</category>
	<category>Web App Security</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/2006/10/11/securing-myfaces-applications-against-the-owasp-top-ten-2/</guid>
		<description><![CDATA[My ApacheCon presentation is now available in the Security section of this site.

]]></description>
			<content:encoded><![CDATA[<p>My ApacheCon presentation is now available in the Security section of this site.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/10/11/securing-myfaces-applications-against-the-owasp-top-ten-2/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Using Tomahawk Tree2 Component in a Portal</title>
		<link>http://learnjsf.com/wp/2006/09/26/using-tomahawk-tree2-component-in-a-portal/</link>
		<comments>http://learnjsf.com/wp/2006/09/26/using-tomahawk-tree2-component-in-a-portal/#comments</comments>
		<pubDate>Tue, 26 Sep 2006 02:25:57 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>JavaServer Faces</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=43</guid>
		<description><![CDATA[To run Tree2 with client-side expansion, you need JavaScript in the page &#60;HEAD&#62;. Normally, this gets added by the Tomahawk ExtensionsFilter. This doesn&#8217;t work in a portal, however, because servlet filters don&#8217;t run in a portal. There are some patches in MYFACES-434 (portlet filter) you may be able to use, but here&#8217;s an easier workaround. [...]]]></description>
			<content:encoded><![CDATA[<p>To run Tree2 with client-side expansion, you need JavaScript in the page <tt>&lt;HEAD&gt;</tt>. Normally, this gets added by the Tomahawk ExtensionsFilter. This doesn&#8217;t work in a portal, however, because servlet filters don&#8217;t run in a portal. There are some patches in MYFACES-434 (portlet filter) you may be able to use, but here&#8217;s an easier workaround. I&#8217;ve used this successfully with Tomahawk 1.1.3 in both Jetspeed2 and Liferay.</p>
<p>First, use Tree2 with server-side expansion so as not to require JavaScript. The ExtensionsFilter is therefore needed only to serve up the image resources needed by Tree2, and image requests are handled through the Faces Servlet, not the portal, so the ExtensionsFilter will run as normal for these requests. However, Tomahawk 1.1.3 checks to see if the ExtensionsFilter has been configured, which fails in the portal context. Fortunately, you can disable the check with a web.xml context param.</p>
<p>So to summarize, you can use Tree2 1.1.3 in a portal without any of the MYFACES-434 patches if</p>
<ol>
<li>You use server-side toggle</li>
<li>You configure ExtensionsFilter as normal for the Faces Servlet</li>
<li>You disable the ExtensionsFilter configuration check as follows in web.xml:</li>
</ol>
<pre>
    &lt;context-param&gt;
         &lt;param-name&gt;org.apache.myfaces.CHECK_EXTENSIONS_FILTER&lt;/param-name&gt;
         &lt;param-value&gt;false&lt;/param-value&gt;
     &lt;/context-param&gt;</pre>
<p>/dmc
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/09/26/using-tomahawk-tree2-component-in-a-portal/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Securing MyFaces Against the OWASP Top Ten</title>
		<link>http://learnjsf.com/wp/2006/09/15/securing-myfaces-against-the-owasp-top-ten/</link>
		<comments>http://learnjsf.com/wp/2006/09/15/securing-myfaces-against-the-owasp-top-ten/#comments</comments>
		<pubDate>Fri, 15 Sep 2006 12:35:34 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>Uncategorized</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=42</guid>
		<description><![CDATA[Presentation for ApacheCon US 2006

]]></description>
			<content:encoded><![CDATA[<p>Presentation for ApacheCon US 2006
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/09/15/securing-myfaces-against-the-owasp-top-ten/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>JSF Trick: Invoking an Action Method on an Item in a Datatable</title>
		<link>http://learnjsf.com/wp/2006/09/09/jsf-trick-invoking-an-action-method-on-an-item-in-a-datatable/</link>
		<comments>http://learnjsf.com/wp/2006/09/09/jsf-trick-invoking-an-action-method-on-an-item-in-a-datatable/#comments</comments>
		<pubDate>Sat, 09 Sep 2006 01:33:10 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>JavaServer Faces</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=41</guid>
		<description><![CDATA[Suppose you want to create a table of items and enable one or more action links for each item; for example, a list of files with a &#8220;check out&#8221; and &#8220;delete&#8221; link next to each. The usual approach is to create a java.faces.model.ListDataModel in your backing bean and call its getRowData() method from the action [...]]]></description>
			<content:encoded><![CDATA[<p>Suppose you want to create a table of items and enable one or more action links for each item; for example, a list of files with a &#8220;check out&#8221; and &#8220;delete&#8221; link next to each. The usual approach is to create a java.faces.model.ListDataModel in your backing bean and call its getRowData() method from the action method in your backing bean to get the item for which the action was taken. These are great JSF features, but I recently found you can avoid even this code.</p>
<p>The trick is to put your action method in the class that represents the item. Then you can reference it directly in the view template, like this:</p>
<pre>&lt;h:dataTable value="#{fileMgr.items}" var="item"&gt;
    &lt;h:column&gt;
        &lt;h:outputText value="#{item.name}" /&gt;
    &lt;/h:column&gt;
    &lt;h:column&gt;
        &lt;h:commandLink value="Check out"
            action="#{item.actionCheckOut}" /&gt;
    &lt;/h:column&gt;
&lt;/h:dataTable&gt;</pre>
<p>In this example, fileMgr is the backing bean, and item is the datatable var representing a model object. The trick here is that JSF will go ahead and call the actionCheckOut() method on the item object, even though it&#8217;s in a model class, not a backing bean. This way, you don&#8217;t even have to mess with ListDataModel.</p>
<p>Neat as this is, it is usually only appropriate in the case of simple toggle actions that affect only the item properties. Most other actions (especially delete) are likely to need references to the entire collection of items or other classes such as DAOs which you would not want to reference directly in a class representing a domain object such as an item. Still, it will save a layer of code for simple actions and I&#8217;m tickled that it works.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/09/09/jsf-trick-invoking-an-action-method-on-an-item-in-a-datatable/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>JSF for Struts Developers Online Registration Now Open</title>
		<link>http://learnjsf.com/wp/2006/08/20/jsf-for-struts-developers-online-registration-now-open/</link>
		<comments>http://learnjsf.com/wp/2006/08/20/jsf-for-struts-developers-online-registration-now-open/#comments</comments>
		<pubDate>Sun, 20 Aug 2006 03:04:41 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>Uncategorized</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=40</guid>
		<description><![CDATA[Just a quick note for those who have been waiting for online registration for my upcoming class on JSF for Struts Developers in Atlanta. In order to give every student the best possible learning experience, registration is limited to 15 students.

]]></description>
			<content:encoded><![CDATA[<p>Just a quick note for those who have been waiting for online registration for my upcoming class on <a href="http://turbomanage.wordpress.com/training/jsf-for-struts-developers/" title="JSF for Struts Developers">JSF for Struts Developers</a> in Atlanta. In order to give every student the best possible learning experience, registration is limited to 15 students.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/08/20/jsf-for-struts-developers-online-registration-now-open/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Securing MyFaces Applications Against the OWASP Top Ten</title>
		<link>http://learnjsf.com/wp/2006/08/18/securing-myfaces-applications-against-the-owasp-top-ten/</link>
		<comments>http://learnjsf.com/wp/2006/08/18/securing-myfaces-applications-against-the-owasp-top-ten/#comments</comments>
		<pubDate>Fri, 18 Aug 2006 03:03:13 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>JavaServer Faces</category>
	<category>Web App Security</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=39</guid>
		<description><![CDATA[My presentation on this subject has been selected for the upcoming ApacheCon US 2006! If you&#8217;d like to be a technical reviewer beforehand, please e-mail me at the address on the Consulting menu above. See you there!

The JavaServer Faces (JSF) API is an excellent foundation for building secure Web applications because of its component-oriented nature, [...]]]></description>
			<content:encoded><![CDATA[<p>My presentation on this subject has been selected for the upcoming <a href="http://www.us.apachecon.com/" title="ApacheCon US 2006">ApacheCon US 2006</a>! If you&#8217;d like to be a technical reviewer beforehand, please e-mail me at the address on the Consulting menu above. See you there!</p>
<p align="center"><a href="http://www.us.apachecon.com" title="ApacheCon US 2006"><img src="http://turbomanage.wordpress.com/files/2006/08/2028-ac-us-06-468x60.png" alt="ApacheCon US 2006" /></a></p>
<p align="left">The JavaServer Faces (JSF) API is an excellent foundation for building secure Web applications because of its component-oriented nature, carefulness surrounding data validation, and numerous extension points. Apache myFaces builds on this strength by providing components which offer built-in protection against many of the OWASP Top Ten attacks including form parameter tampering and cross-site scripting. In this presentation, we’ll review how myFaces protects against these attacks and move on to explore JSF extensions you can deploy to provide complete protection against the OWASP Top Ten, including forced browsing, information leakage in select boxes, and unauthorized method execution. Specifically, we’ll look at centralized approaches to ensuring that every field and form is properly validated, a phase listener and view handler to prevent forced browsing and assist with detection of session hijacking, a customer converter and component to hide sensitive information such as IDs in menu options, and a JAAS permission checker for component actions (event handler methods).</p>
<p align="left">/dmc</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/08/18/securing-myfaces-applications-against-the-owasp-top-ten/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Disable Browser Caching in JSF</title>
		<link>http://learnjsf.com/wp/2006/08/08/disable-browser-caching-in-jsf/</link>
		<comments>http://learnjsf.com/wp/2006/08/08/disable-browser-caching-in-jsf/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 16:29:57 +0000</pubDate>
		<dc:creator><ADMINNICENAME></dc:creator>
		
	<category>JavaServer Faces</category>
	<category>Web App Security</category>
		<guid isPermaLink="false">http://learnjsf.com/wp/?p=29</guid>
		<description><![CDATA[             
Browser caching of page content has negative security implications when your application runs on shared terminals (like the public library). You can turn it off with this simple phase listener.



 package sandbox; import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpServletResponse;public class CacheControlPhaseListener implements PhaseListener [...]]]></description>
			<content:encoded><![CDATA[<p><!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }-->          <!-- ======================================================== --> <!-- = Java Sourcecode to HTML automatically converted code = --> <!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = --> <!-- =     Further information: http://www.java2html.de     = --></p>
<p align="left">Browser caching of page content has negative security implications when your application runs on shared terminals (like the public library). You can turn it off with this simple phase listener.</p>
<p align="left">
<table cellspacing="0" cellpadding="3" border="0" bgcolor="#ffffff">
<tr>
<td valign="top" nowrap="nowrap" align="left"><code> <font color="#7f0055"><strong>package </strong></font><font color="#000000">sandbox;</font> </code><font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.faces.context.FacesContext;</font><br />
<font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.faces.event.PhaseEvent;</font><br />
<font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.faces.event.PhaseId;</font><br />
<font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.faces.event.PhaseListener;</font><br />
<font color="#7f0055"><strong>import </strong></font><font color="#000000">javax.servlet.http.HttpServletResponse;</font><font color="#7f0055"><strong>public class </strong></font><font color="#000000">CacheControlPhaseListener </font><font color="#7f0055"><strong>implements </strong></font><font color="#000000">PhaseListener </font><font color="#000000">{</font><br />
<font color="#ffffff">    </font><font color="#7f0055"><strong>public </strong></font><font color="#000000">PhaseId getPhaseId</font><font color="#000000">() {</font><br />
<font color="#ffffff">        </font><font color="#7f0055"><strong>return </strong></font><font color="#000000">PhaseId.RENDER_RESPONSE;</font><br />
<font color="#ffffff">    </font><font color="#000000">}</font><br />
<font color="#ffffff">    </font><font color="#7f0055"><strong>public </strong></font><font color="#7f0055"><strong>void </strong></font><font color="#000000">afterPhase</font><font color="#000000">(</font><font color="#000000">PhaseEvent event</font><font color="#000000">) {}</font><br />
<font color="#ffffff">    </font><font color="#7f0055"><strong>public </strong></font><font color="#7f0055"><strong>void </strong></font><font color="#000000">beforePhase</font><font color="#000000">(</font><font color="#000000">PhaseEvent event</font><font color="#000000">) {</font><br />
<font color="#ffffff">        </font><font color="#000000">FacesContext facesContext = event.getFacesContext</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">        </font><font color="#000000">HttpServletResponse response = </font><font color="#000000">(</font><font color="#000000">HttpServletResponse</font><font color="#000000">) </font><font color="#000000">facesContext.getExternalContext</font><font color="#000000">()</font><font color="#000000">.getResponse</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff">        </font><font color="#000000">response.addHeader</font><font color="#000000">(</font><font color="#2a00ff">&#8220;Pragma&#8221;</font><font color="#000000">, </font><font color="#2a00ff">&#8220;no-cache&#8221;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">        </font><font color="#000000">response.addHeader</font><font color="#000000">(</font><font color="#2a00ff">&#8220;Cache-Control&#8221;</font><font color="#000000">, </font><font color="#2a00ff">&#8220;no-cache&#8221;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">        </font><font color="#000000">response.addHeader</font><font color="#000000">(</font><font color="#2a00ff">&#8220;Cache-Control&#8221;</font><font color="#000000">, </font><font color="#2a00ff">&#8220;must-revalidate&#8221;</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff">        </font><font color="#000000">response.addHeader</font><font color="#000000">(</font><font color="#2a00ff">&#8220;Expires&#8221;</font><font color="#000000">, </font><font color="#2a00ff">&#8220;Mon, 8 Aug 2006 10:00:00 GMT&#8221;</font><font color="#000000">)</font><font color="#000000">; </font><font color="#3f7f5f">// some date in the past</font><br />
<font color="#ffffff">    </font><font color="#000000">}</font><br />
<font color="#000000">}</font></td>
</tr>
</table>
<p align="left">I&#8217;ve now packaged this as a jar that you can just drop in to your JSF project. The jar includes a faces-config snippet so the phase listener automatically registers itself if the jar is present.</p>
<p align="left"><a title="JSF Phase Listener to Disable Browser Caching" href="http://learnjsf.com/download/jsf-nocache-1.0.jar">jsf-nocache-1.0.jar</a> (JAR, 3 kB)</p>
<p><!-- =       END of automatically generated HTML code       = --> <!-- ======================================================== -->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://learnjsf.com/wp/2006/08/08/disable-browser-caching-in-jsf/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
