<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5623560103969328200</id><updated>2011-08-01T14:14:35.649-04:00</updated><category term='tomahawk'/><category term='jdeveloper'/><category term='table'/><category term='jsf'/><category term='container'/><category term='security'/><category term='servlet'/><category term='selectmanycheckbox'/><category term='jsp'/><category term='faces'/><category term='role'/><category term='j2ee'/><category term='jaas'/><category term='constraint'/><category term='myfaces'/><category term='oracle'/><category term='component'/><category term='adf'/><category term='oc4j'/><title type='text'>SunCat Oracle ADF and JSF Blog</title><subtitle type='html'>Things you may not have known about J2EE and Oracle ADF - by Edward F Eaglehouse</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-5360492648528807508</id><published>2009-11-19T15:28:00.006-05:00</published><updated>2009-11-19T17:23:04.352-05:00</updated><title type='text'>Fixing a little trouble with ADF dynamic menu model</title><content type='html'>I had to try to troubleshoot something I previously had working in another ADF application without a problem: declaratively-defined dynamic menus. I followed the example given in the &lt;a href="http://download.oracle.com/docs/cd/B31017_01/web.1013/b28967/web_complex002.htm"&gt;11.2 Using Dynamic Menus for Navigation&lt;/a&gt; section of the Oracle® Application Development Framework Developer's Guide&lt;br /&gt;10g (10.1.3.1.0). When I launched my application to check the menus, I was greeted with the infamous &lt;span style="font-weight:bold;"&gt;500 Internal Server Error&lt;/span&gt;. The exception was:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;javax.faces.el.EvaluationException: javax.faces.FacesException: javax.faces.FacesException: Error performing conversion of value 'oracle.adf.view.faces.model.ChildPropertyTreeModel@e38fae' of type 'class oracle.adf.view.faces.model.ChildPropertyTreeModel' to type 'class my.MenuTreeModelAdapter' for managed bean 'menuModel'&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;I looked through the whole stack trace for clues, but only the exception message had any glimmer of meaning. I looked at my Java classes and everything looked fine there, too. I poked through all the managed beans holding the pieces of the menu, but nothing jumped out at me.&lt;br /&gt;&lt;br /&gt;So I went step by step through the article, comparing its XML and Java code to mine. I had everything in my components the article said to include. After about the fifth iteration of this, I finally started looking at things from a different viewpoint: what was in my code that wasn't in theirs?&lt;br /&gt;&lt;br /&gt;Aha! I added a little too much information to one my &lt;code&gt;menuModelAdapter&lt;/code&gt; beans. I specified the Java class for the instance property. The bean was supposed to return a &lt;code&gt;ChildPropertyMenuModel&lt;/code&gt; object (injected as &lt;code&gt;#{menuTreeModel.model}&lt;/code&gt;) and store it in the instance property of the &lt;code&gt;menuModelAdapter&lt;/code&gt; object. I mistakenly entered the class as my &lt;code&gt;menuTreeModelAdapter&lt;/code&gt;, telling the Faces servlet to convert it, instead of leaving it empty.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6MpqTMPnF6M/SwXAy2dtjTI/AAAAAAAAAAU/PRVENBywPOs/s1600/menuModel+bean.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://4.bp.blogspot.com/_6MpqTMPnF6M/SwXAy2dtjTI/AAAAAAAAAAU/PRVENBywPOs/s400/menuModel+bean.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5405938907574275378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I removed the erroneously entered class, leaving the class unspecified, and it resolved my problem. Sometimes it pays to take a moment and look at things from another perspective.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-5360492648528807508?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/5360492648528807508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/11/fixing-little-trouble-with-adf-dynamic.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/5360492648528807508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/5360492648528807508'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/11/fixing-little-trouble-with-adf-dynamic.html' title='Fixing a little trouble with ADF dynamic menu model'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6MpqTMPnF6M/SwXAy2dtjTI/AAAAAAAAAAU/PRVENBywPOs/s72-c/menuModel+bean.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-1880700578819279376</id><published>2009-10-15T13:45:00.014-04:00</published><updated>2009-10-15T16:07:17.325-04:00</updated><title type='text'>Upgrade JDeveloper 10.1.3.3 to work with Subversion 1.6</title><content type='html'>I wanted to upgrade my Subversion server and client to version 1.6, but what was holding me back was the fear that JDeveloper 10.1.3.3 would no longer be able to access my repository. When I finally got a block of time to play around with it, the mechanics of it turned out to be relatively easy.&lt;br /&gt;&lt;br /&gt;The first step was to update my Subversion server and client. The client, unfortunately, is necessary because the JDeveloper interface is limited to basic version control operations. Even then, it doesn't support some necessary corrective actions as files are modified and moved around. I use HTTP as my transport protocol of choice, so see my previous post for how I made an easy task difficult by disengaging my brain &lt;span style="color: rgb(153, 153, 153); font-style: italic;"&gt;:-P&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The next step was about as painless as it gets in the Oracle world - updating JDeveloper's Subversion extension. Thanks to Aino Andriessen's blog, &lt;a href="http://technology.amis.nl/blog/5253/upgrade-jdeveloper-10g-subversion-client"&gt;Upgrade JDeveloper 10g Subversion client&lt;/a&gt;, on the AMIS Technology web site, I already had a blueprint of how to make JDev work with Subversion 1.5. The same works for 1.6. Since recent incarnations of JDeveloper rely on the SVNKit for its Subversion extension, I simply had to replace a few libraries.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make sure JDeveloper is shut down.&lt;/li&gt;&lt;li&gt;Download the Standalone Version of SVNKit from the &lt;a href="http://www.svnkit.com/"&gt;SVNKit web site&lt;/a&gt;. The latest version available when I got mine was &lt;a href="http://www.svnkit.com/org.tmatesoft.svn_1.3.1.standalone.zip"&gt;1.3.1&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Extract the &lt;code&gt;svnkit-javahl.jar&lt;/code&gt; and &lt;code&gt;svnkit.jar&lt;/code&gt; files from the archive.&lt;/li&gt;&lt;li&gt;Rename &lt;code&gt;svnkit-javahl.jar&lt;/code&gt; to &lt;code&gt;svnjavahl.jar&lt;/code&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy the two JAR files to your JDeveloper extensions directory, &lt;code&gt;&lt;span style="font-style: italic;"&gt;[JDevRoot]&lt;/span&gt;/jdev/extensions/oracle.jdeveloper.subversion.10.1.3&lt;/code&gt;, replacing the existing files.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Restart JDeveloper. If it starts without error, that's a good sign (see below).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open &lt;span style="font-weight: bold;"&gt;Tools-&gt;Preferences...&lt;/span&gt; then expand the &lt;span style="font-weight: bold;"&gt;Versioning-&gt;Subversion&lt;/span&gt; category to verify JDev recognized the new client libraries. Mine showed:&lt;/li&gt;&lt;code&gt;&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;Subversion client:&lt;br /&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SVN/1.6.5 SVNKit/1.3.1 (http://svnkit.com.) r6109&lt;/code&gt;&lt;/ol&gt;That's all there is. Now you can access your updated repositories from within JDeveloper.&lt;br /&gt;&lt;br /&gt;For what it's worth, I did run into a minor problem the first time. I forgot to copy the updated &lt;code&gt;svnkit.jar&lt;/code&gt;. When I tried to start JDeveloper, it failed with an exception because a JavaHL function was trying to use one of the new classes in it that it obviously couldn't find. Copying &lt;span style="font-weight: bold;"&gt;both&lt;/span&gt; library files solved the problem. Here is the exception I got, with a bit of the stack trace:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;code&gt;&lt;br /&gt;java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/internal/util/SVNHashMap&lt;br/&gt;&lt;br /&gt;  at org.tigris.subversion.javahl.JavaHLObjectFactory.&amp;lt;clinit&amp;gt;(JavaHLObjectFactory.java:69)&lt;br/&gt;&lt;br /&gt;  at org.tmatesoft.svn.core.javahl.SVNClientImpl$1.handleStatus(SVNClientImpl.java:170)&lt;br/&gt;&lt;br /&gt;  at org.tmatesoft.svn.core.internal.wc.SVNStatusEditor.sendUnversionedStatus(SVNStatusEditor.java:315)&lt;br/&gt;&lt;br /&gt;  at org.tmatesoft.svn.core.internal.wc.SVNStatusEditor.getDirStatus(SVNStatusEditor.java:189)&lt;br/&gt;&lt;br /&gt;  at org.tmatesoft.svn.core.internal.wc.SVNStatusEditor.closeEdit(SVNStatusEditor.java:114)&lt;br /&gt;&lt;br /&gt;  ...&lt;br/&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-1880700578819279376?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/1880700578819279376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/10/upgrade-jdeveloper-10133-to-work-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/1880700578819279376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/1880700578819279376'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/10/upgrade-jdeveloper-10133-to-work-with.html' title='Upgrade JDeveloper 10.1.3.3 to work with Subversion 1.6'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-7879614550100878881</id><published>2009-10-14T23:05:00.004-04:00</published><updated>2009-10-15T16:22:30.636-04:00</updated><title type='text'>Updating to Subversion 1.6.5</title><content type='html'>I recently attempted to install version 1.6.5 of Subversion on my Solaris 10 server. Everything would have gone very smoothly, but one of my synapses misfired and took me on an unwelcome detour for a couple hours. When it was over, I was embarrassed, but instead of hiding my head in the screen, I put my (brief) story out here so you can learn from my mistake. The other reason is because the particular error I had to diagnose was almost non-existent in Internet searches.&lt;br /&gt;&lt;br /&gt;Here was my situation: I had been using Subversion 1.4.5 for about a year or so, but it was growing long in the tooth and some of my development tool updates were looking for a more current version to work with. After doing a little research, I decided to plunge into the latest release of Subversion and get all my Subversion-aware tools updated.&lt;br /&gt;&lt;br /&gt;My server ran Solaris 10, so I searched a favorite site, &lt;a href="http://www.sunfreeware.com/"&gt;sunfreeware.com&lt;/a&gt;, to see if I could get a binary Subversion package and avoid the tedium of compiling it myself. I found it there and proceeded to check its dependencies on other packages. It required the latest, greatest Apache server 2.2.14. No big deal, I thought. OK, in addition to an Apache update, there were about ten other packages I had to replace first. I did that. So far, so good. Now grab Apache.&lt;br /&gt;&lt;br /&gt;I was already running version 2.2.6, so I didn't need to change anything...well maybe a few things. I needed to make a backup of my customized files so I didn't overwrite anything. I tarred up my conf, htdocs, icons, lib, modules, and smf (Solaris service management facility files) directories and saved them to a place that wouldn't get lost. Now I downloaded the Apache 2.2.14 package and installed it. Everything was going smooth as silk. Now restore my customized files and install Subversion 1.6.5. Great. Fire it up.&lt;br /&gt;&lt;br /&gt;Oops. Mistake! The new Apache came with a whole lot of new libraries and modules recompiled for the update. When I restored my customizations, I clobbered most of the new libraries and modules. When I attempted to start Apache, I was getting what I thought was a Subversion error. I had to dig into the startup log, in my case &lt;code&gt;/var/svc/log/network-http:apache2.log&lt;/code&gt;. I found this message:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;code&gt;&lt;br /&gt;[ Oct 14 20:06:24 Executing start method ("/lib/svc/method/http-apache2 start") ]&lt;br/&gt;&lt;br /&gt;httpd: Syntax error on line 526 of /usr/local/apache2/conf/httpd.conf: Syntax error on line 6 of /usr/local/www/conf/extra/httpd-subversion.conf: Cannot load /usr/local/www/modules/mod_dav_svn.so into server: ld.so.1: httpd: fatal: relocation error: file /usr/local/lib/libsvn_subr-1.so.0: symbol apr_memcache_getp: referenced symbol not found&lt;br/&gt;&lt;br /&gt;[ Oct 14 20:06:24 Method "start" exited with status 1 ]&lt;br/&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Really confusing, because the dynamic libraries it was complaining about were already installed. So why couldn't it find the missing symbol. I hunted through the Apache and Subversion web sites and found out the latest Apache also used the latest (within days) Apache Portable Runtime libraries. But they were supposed to be bundled with Apache. What was wrong?&lt;br /&gt;&lt;br /&gt;"&lt;a href="http://dictionary.reference.com/browse/PEBCAK"&gt;PEBCAK&lt;/a&gt;!" was my answer. When I restored my customizations I overwrote the new libraries with the ones I had from Apache 2.2.6, obliterating the functions required by the new Subversion (and eventually, Apache). Reinstalling the Apache 2.2.14 package and &lt;span style="font-style: italic;"&gt;selectively&lt;/span&gt; restoring only my conf and htdocs directories fixed the error.&lt;br /&gt;&lt;br /&gt;Just shows how casual thinking - Oh, look! A simple update! - can get you into trouble. If you found this post useful and it saved you some time, drop me a comment. I'd like to know my self-inflicted aggravation spared someone else's.&lt;br /&gt;&lt;br /&gt;Some days it is best just to sit back, take a deep breath, and just laugh at yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-7879614550100878881?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/7879614550100878881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/10/i-recently-attempted-to-install-version.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/7879614550100878881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/7879614550100878881'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/10/i-recently-attempted-to-install-version.html' title='Updating to Subversion 1.6.5'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-4812864456328992562</id><published>2009-08-13T16:47:00.006-04:00</published><updated>2009-08-13T17:06:47.971-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='faces'/><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How to Center an ADF Faces Table</title><content type='html'>I wanted to edit a web application page to center an ADF Table (&lt;code&gt;&amp;lt;af:table&amp;gt;&lt;/code&gt; component). The table was very small, with only two columns, and I didn't need to modify any of the others in my application. The Table component has no attribute controlling how to align it when it is narrower than the displayed page. I could accomplish my goal by creating a custom skin, but that would just be overkill. The solution was so simple I almost didn't think of it.&lt;br /&gt;&lt;br /&gt;Here are the steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create your Table as you normally would.&lt;/li&gt;&lt;li&gt;Move the Table inside a PanelHorizontal (&lt;code&gt;&amp;lt;af:panelhorizontal&amp;gt;&lt;/code&gt;&lt;af:panelhorizontal&gt;) component.&lt;/af:panelhorizontal&gt;&lt;/li&gt;&lt;li&gt;Set the &lt;code&gt;Halign&lt;/code&gt; attribute of the PanelHorizontal component to &lt;code&gt;center&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;Done! I wish everything were that easy.&lt;/af:table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-4812864456328992562?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/4812864456328992562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/08/how-to-center-adf-faces-table.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/4812864456328992562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/4812864456328992562'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/08/how-to-center-adf-faces-table.html' title='How to Center an ADF Faces Table'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-5141278078063563178</id><published>2009-03-19T09:38:00.013-04:00</published><updated>2009-06-22T15:37:24.434-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='faces'/><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><category scheme='http://www.blogger.com/atom/ns#' term='myfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='selectmanycheckbox'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf'/><category scheme='http://www.blogger.com/atom/ns#' term='component'/><category scheme='http://www.blogger.com/atom/ns#' term='tomahawk'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Using Apache Tomahawk with ADF Faces in JDeveloper 10.1.3</title><content type='html'>I was faced with a situation where it was necessary for me to allow a user to select multiple options from a rather large list of about 300 items. For an advanced user, a SelectManyListbox would have been an acceptable way to go. My target audience was unsophisticated, so the easiest input method for them was to use a SelectManyCheckbox input component. Sounds easy but, no, ADF Faces doesn't make things that easy.&lt;br /&gt;&lt;br /&gt;The ADF Faces SelectManyCheckbox has the limitation of rendering its children either in one huge long vertical list or one huge long horizontal list. Either one is unattractive when you're dealing with more than just a few choices. What about a grid option? Well, the stock ADF Faces library doesn't give you that ability. &lt;a href="http://myfaces.apache.org/trinidad/index.html"&gt;Apache MyFaces Trinidad&lt;/a&gt;, the freely available JSF framework and successor to ADF, has some flexible components, but I wasn't ready to replace a working framework with something completely unknown to me. Fortunately there was another option: &lt;a href="http://myfaces.apache.org/tomahawk/index.html"&gt;Apache MyFaces Tomahawk&lt;/a&gt;, an add-on components library compatible with MyFaces and, luckily for me, ADF Faces.&lt;br /&gt;&lt;br /&gt;Tomahawk contains a &lt;sample&gt;SelectManyCheckbox&lt;/sample&gt; component that extends the original. Several new attributes control the number of rows or columns to use when rendering the HTML controls, exactly what I needed for the new page of my project. Lucas Jellema, in his AMIS Technology Blog, has a similar article, &lt;a href="http://technology.amis.nl/blog/1336/integrating-adf-faces-and-myfaces-tomahawk-creating-a-popup-with-adf-faces-shuttle-component"&gt;Integrating ADF Faces and MyFaces Tomahawk - Creating a Popup with ADF Faces Shuttle Component&lt;/a&gt;, but using a different component and JSPX pages. &lt;br /&gt;&lt;br /&gt;I followed very nearly the same integration steps, but mine differ slightly because of the JDeveloper and library versions I am using. For JDeveloper 10.1.3.3 and Tomahawk 1.1.8, here are the steps to installing and using the Tomahawk library:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Download the Tomahawk library.&lt;/strong&gt; Use the &lt;code&gt;Download Tomahawk&lt;/code&gt; link at the top of the page for the list of available packages. Select the regular Tomahawk (for JSF 1.1); it's really for JSF 1.2. Don't use link for JSF 1.2, as is actually for JSF 2.1 and won't work with JDeveloper.&lt;br /&gt;&lt;strong&gt;2. Download the Apache Commons FileUpload library.&lt;/strong&gt; Confusingly, the dependency information says Tomahawk is not dependent on any other project, but this refers to &lt;span style="font-style:italic;"&gt;building&lt;/span&gt;, not &lt;span style="font-style:italic;"&gt;using&lt;/span&gt;. The FileUpload library is required.&lt;br /&gt;&lt;strong&gt;3. Extract the archived library files to your development libaries area.&lt;/strong&gt; I used an Apache folder.&lt;br /&gt;&lt;strong&gt;4. In JDeveloper, add the libraries and tag libraries.&lt;/strong&gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. From the JDeveloper menu, select &lt;code&gt;Tools &gt; Manage Libraries...&lt;/code&gt; option.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b. From the Libraries tab, press the &lt;code&gt;New...&lt;/code&gt; button and add the main Tomahawk JAR file to the Class Path entry and JavaDoc and TLD Doc JAR files to the Doc Path entry. Put it into the User location.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c. From the Libraries tab, press the &lt;code&gt;New...&lt;/code&gt; button and add the main Commons FileUpload JAR file to the Class Path entry, the Sources JAR file to the Source Path entry, and the JavaDoc file to the Doc Path entry.&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d. From the JSP Tag Libraries tab, press the &lt;code&gt;New&lt;/code&gt; button and select the main Tomahawk JAR file. The TLD file inside it will be automatically selected. The conventional prefix for use in your JSP source files is &lt;code&gt;t&lt;/code&gt; (but you can name it what you want). Select the Execute Tags in JSP Visual Editor to integrate the library into JDeveloper's visual JSP editor. It doesn't render tags in the editor correctly, but will mess up viewing all your other pages if you don't select this option.&lt;br /&gt;&lt;strong&gt;5. Optionally, configure the required MyFaces Extensions filter in your ViewController project &lt;code&gt;WEB-INF/web.xml&lt;/code&gt; file.&lt;/strong&gt; I added the following sections to mine, but eventually removed them so JDeveloper would render design views correctly. For some unexplained reason, adding this configuration will cause JDeveloper's design-time renderer to hemorrhage a pile of exceptions and prevent the design views from being displayed properly. You can get a little more detail in Oracle's &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=3570933#3570933"&gt;JDeveloper forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;filter&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFacesExtensionsFilter&amp;lt;/filter-name&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;display-name&amp;gt;Apache&amp;nbsp;Tomahawk&amp;nbsp;Filter&amp;lt;/display-name&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;description&amp;gt;Set&amp;nbsp;the&amp;nbsp;size&amp;nbsp;limit&amp;nbsp;for&amp;nbsp;uploaded&amp;nbsp;files.&lt;br/&gt;&lt;br /&gt;Format:&amp;nbsp;10&amp;nbsp;-&amp;nbsp;10&amp;nbsp;bytes&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10k&amp;nbsp;-&amp;nbsp;10&amp;nbsp;KB&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10m&amp;nbsp;-&amp;nbsp;10&amp;nbsp;MB&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1g&amp;nbsp;-&amp;nbsp;1&amp;nbsp;GB&lt;br/&gt;&lt;br /&gt;&amp;lt;/description&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-class&amp;gt;org.apache.myfaces.webapp.filter.ExtensionsFilter&amp;lt;/filter-class&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/filter&amp;gt;&lt;br/&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;and&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;filter-mapping&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFacesExtensionsFilter&amp;lt;/filter-name&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;Faces&amp;nbsp;Servlet&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/filter-mapping&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;filter-mapping&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFacesExtensionsFilter&amp;lt;/filter-name&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/myFacesExtensionsResource/*&amp;lt;/url-pattern&amp;gt;&lt;br/&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/filter-mapping&amp;gt;&lt;br/&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Add the taglib directive for the Tomahawk Tag Library to the top of your JSP page.&lt;/strong&gt; You can do this manually by dropping the taglib component from the JSP component palette or JDeveloper will add it for you when you drop the first Tomahawk component on the page.&lt;br /&gt;&lt;strong&gt;7. In your ViewController project Project Properties page, add the new libraries.&lt;/strong&gt; Add the Tomahawk and Commons FileUpload libraries to the Libraries list and the Tomahawk tag library to the JSP Tag Libraries list.&lt;br /&gt;&lt;strong&gt;8. Check your ViewController project WAR deployment profile.&lt;/strong&gt; Make sure the necessary libraries are included in the &lt;code&gt;WEB-INF/lib&lt;/code&gt; directory.&lt;br /&gt;&lt;br /&gt;Now you should be able to use the Tomahawk components on your JSP pages. They may not render correctly in the visual JSP editor, but when running your web application, they should be fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-5141278078063563178?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/5141278078063563178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/using-apache-tomahawk-with-adf-faces-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/5141278078063563178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/5141278078063563178'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/using-apache-tomahawk-with-adf-faces-in.html' title='Using Apache Tomahawk with ADF Faces in JDeveloper 10.1.3'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-7858306894472830209</id><published>2009-03-13T11:25:00.009-04:00</published><updated>2009-03-13T13:13:36.507-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='constraint'/><category scheme='http://www.blogger.com/atom/ns#' term='adf'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='oc4j'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='container'/><category scheme='http://www.blogger.com/atom/ns#' term='servlet'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='jaas'/><category scheme='http://www.blogger.com/atom/ns#' term='role'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Order of Security Constraints in web.xml for OC4J</title><content type='html'>&lt;span style="font-family:arial;"&gt;In the course of testing and debugging one of my ADF applications, deployed to an OC4J instance of Oracle's Application Server 10g, the security settings I configured were not behaving as I expected. User accounts were authenticating properly, but failing authorization in some circumstances, making it appear as though the login failed. Finding the real cause was very frustrating because I never found a way to log what was actually happening.&lt;br /&gt;&lt;br /&gt;I originally set up declarative J2EE security constraints to control access to certain pages, expecting the rules to be applied as specified in the &lt;a href="http://jcp.org/aboutJava/communityprocess/final/jsr053/"&gt;Java Servlet 2.3 specification&lt;/a&gt; that requires URL-matching rules to be applied in a given order. It turns out that in OAS 10g, the container-based security provider is still based on an earlier version. Prior to the 2.3 specification, following the rules for authorization was only a &lt;span style="font-style: italic;"&gt;suggestion&lt;/span&gt; rather than a &lt;span style="font-style: italic;"&gt;requirement&lt;/span&gt;, and implementers were free to apply the rules as they saw fit. Unfortunately for me, Oracle has not updated this facet of their OC4J container to comply with the specification. Reordering my constraints solved my problem.&lt;br /&gt;&lt;br /&gt;What happened? My application's welcome page is &lt;code&gt;home.jsp&lt;/code&gt;. My original constraints had some overlapping URLs, specifically a couple pages that should have been accessible by everyone within a directory that was inaccessible to lower-level users. An example from my &lt;code&gt;web.xml&lt;/code&gt; file showing pages secured by two roles, REPORTS (reports only) and USERS (everything else). The &lt;code&gt;/faces/pages/home.jsp&lt;/code&gt; and &lt;code&gt;/faces/pages/userprofile.jsp&lt;/code&gt; pages should be available, but resulted in a login error. Why? According to the way OC4J security implementation, &lt;code&gt;/faces/pages/*&lt;/code&gt; is restricted to the USERS role only.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;Users&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;USERS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;transport-guarantee&amp;gt;NONE&amp;lt;/transport-guarantee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/user-data-constraint&amp;gt;&lt;br /&gt;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;Common&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/common/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/common/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/home.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/home.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/menus/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/menus/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/userprofile.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/userprofile.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;USERS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;REPORTS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/auth-constraint&amp;gt;&lt;br /&gt;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When a REPORTS user tried to access &lt;code&gt;/faces/pages/home.jsp&lt;/code&gt;, the user would actually be logged in, but because authorization to the page failed, the user was presented with the login form again and could never get to the page. To compound the problem, there were no errors in the application server's log file.&lt;br /&gt;&lt;br /&gt;According to the specification, the &lt;code&gt;/faces/pages/home.jsp&lt;/code&gt; should have been given precedence because it was an exact URL match. Since OC4J security isn't compliant with the specification, it relies on ordering instead.&lt;br /&gt;&lt;br /&gt;My solution: by placing the REPORTS constraint first - and thus the exact URL - the security-constraint elements matched the &lt;code&gt;/faces/pages/home.jsp&lt;/code&gt; URL first, allowing the REPORTS user to navigate to that page successfully.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;Common&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/common/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/common/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/home.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/home.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/menus/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/menus/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/userprofile.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/userprofile.jsp&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;USERS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;REPORTS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/auth-constraint&amp;gt;&lt;br /&gt;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;Users&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/pages/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/faces/pages/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;USERS&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;transport-guarantee&amp;gt;NONE&amp;lt;/transport-guarantee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/user-data-constraint&amp;gt;&lt;br /&gt;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Simple fix, but hard to find. This was yet another example of extremely poor documentation for what is probably a very well-used operation. I hope this solves a mystery for someone else.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-7858306894472830209?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/7858306894472830209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/order-of-security-constraints-in-webxml.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/7858306894472830209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/7858306894472830209'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/order-of-security-constraints-in-webxml.html' title='Order of Security Constraints in web.xml for OC4J'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5623560103969328200.post-3476291619091345791</id><published>2009-03-13T06:38:00.001-04:00</published><updated>2009-03-13T11:25:29.418-04:00</updated><title type='text'>Introduction</title><content type='html'>&lt;span style="font-family:arial;"&gt;Hello and welcome. After hundreds of days spent scouring books and the web for information that should have been easy to find, I decided to create this blog to share some of the things I've found out about how Oracle's Application Development Framework, Sun's Java Server Faces, and related technologies really work. I am continually appalled at the lack of accurate documentation regarding ADF, and its parents, JSF and JSP, in general. This is my way of helping to fix that problem.&lt;br /&gt;&lt;br /&gt;I have spent innumerable hours hunting down some of these details. In a few cases, I have had to figure them out by trial and error, involving much cursing and gnashing of teeth. In an effort to spare others a little of the same agony I had to endure, and in no particular order, I offer to share my knowledge.&lt;br /&gt;&lt;br /&gt;My search was certainly not an individual effort. If not for the likes of Chris Muir, Steve Muench, Duncan Mills, Avrom Roy-Faderman, John Stegeman, Lucas Jellema, and others, I might have given up on this technology as being too cumbersome, overly complicated, and impractical. A big round of &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;"Thank You'ns"&lt;/span&gt; goes out to them and all who have shared their knowledge publically. In the Related Links list to the right are their blogs. I found them very valuable.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5623560103969328200-3476291619091345791?l=suncat-jsf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://suncat-jsf.blogspot.com/feeds/3476291619091345791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/3476291619091345791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5623560103969328200/posts/default/3476291619091345791'/><link rel='alternate' type='text/html' href='http://suncat-jsf.blogspot.com/2009/03/introduction.html' title='Introduction'/><author><name>Suncat2000</name><uri>http://www.blogger.com/profile/08651995727504385492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_6MpqTMPnF6M/SwXDWjbrOZI/AAAAAAAAAAg/mpXiK-tew7k/S220/EFE+80x80.jpg'/></author><thr:total>0</thr:total></entry></feed>
