<?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-4728486807233007515</id><updated>2011-10-01T02:21:27.667-07:00</updated><category term='versioning'/><category term='jbutton'/><category term='joptionpane'/><category term='SOA Governance'/><category term='namespaces'/><category term='ADF Examples'/><category term='MyFaces Trinidad'/><category term='swing'/><category term='Web Services'/><category term='alignment'/><category term='jdialog'/><category term='ADF Faces'/><category term='SOA'/><category term='Best Practices'/><category term='Oracle SOA'/><title type='text'>Practice &amp; Knowledge of J2EE, Oracle, and SOA</title><subtitle type='html'>A great deal of work is done and time spent finding solutions and looking for best practices for enterprise wide technologies like J2EE, Oracle Database, Oracle Application Development Framework (ADF), and SOA (Web Services, ESB, BPEL). This blog is here to share this kind of knowledge with the community and discuss disputable topics.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-1414502305724840285</id><published>2011-10-01T02:16:00.000-07:00</published><updated>2011-10-01T02:21:27.685-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='jdialog'/><category scheme='http://www.blogger.com/atom/ns#' term='alignment'/><category scheme='http://www.blogger.com/atom/ns#' term='joptionpane'/><category scheme='http://www.blogger.com/atom/ns#' term='jbutton'/><title type='text'>Changing Buttons alignment in JOptionPane</title><content type='html'>Ever wondered how to change the alignment of options in Swing JOptionPage dialog?&lt;br /&gt;&lt;br /&gt;It's just one line of code:&lt;br /&gt;&lt;code&gt;UIManager.getDefaults().put("OptionPane.buttonOrientation", SwingConstants.RIGHT);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The list of all component properties is available here:&lt;br /&gt;&lt;a href="http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html"&gt;http://download.oracle.com/javase/1.5.0/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-1414502305724840285?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/1414502305724840285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=1414502305724840285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1414502305724840285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1414502305724840285'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2011/10/changing-buttons-alignment-in.html' title='Changing Buttons alignment in JOptionPane'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-5475643541321007738</id><published>2010-11-17T00:27:00.000-08:00</published><updated>2010-11-17T00:52:55.573-08:00</updated><title type='text'>Setting Correlation Id in the JMS Service Client with IBM WebSphere 7.0 WSFP</title><content type='html'>For those who are interested in how to set Correlation Id in SOAP over JMS Service client for IBM WebSphere Web Service Feature Pack it might be set using RequestContext of the Proxy (See below). &lt;br /&gt;&lt;br /&gt;According to IBM documentation, transport headers should be set using Constants.REQUEST_TRANSPORT_PROPERTIES as a key name for RequestContext and the value should be a HashMap with name/value pairs for each Transport header, however, if you will try to set JMSCorrelationID property with that HashMap, you will get JMSCC0050 error, as this JMS header property should only be set using the setter method on the Message object (setJMSCorrelationId).&lt;br /&gt;&lt;br /&gt;However, the Correlation Id may be set to the RequestContext using JMSConstants.ASYNC_CORRELATION_ID as the key and the the value of the correlation id as the value. Then, the WSFP implementation will set the value on the JMS Message using a setter, as it suppose to be done.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;String correlationId = java.util.UUID.randomUUID();&lt;br /&gt;BindingProvider bp = (BindingProvider) port;&lt;br /&gt;bp.getRequestContext().put(JMSConstants.ASYNC_CORRELATION_ID, correlationId);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-5475643541321007738?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/5475643541321007738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=5475643541321007738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5475643541321007738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5475643541321007738'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2010/11/setting-correlation-id-in-jms-service.html' title='Setting Correlation Id in the JMS Service Client with IBM WebSphere 7.0 WSFP'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-8292837584687296749</id><published>2009-05-28T06:52:00.000-07:00</published><updated>2009-05-28T07:01:45.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='namespaces'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA Governance'/><category scheme='http://www.blogger.com/atom/ns#' term='versioning'/><title type='text'>Service versioning based on namespace considerations</title><content type='html'>The approach should be based on the granularity and design of your service and it capabilities.&lt;br /&gt;&lt;br /&gt;You never consume a service - you consume it particular capability, so you versioning approach should be defined keeping that in mind.&lt;br /&gt;&lt;br /&gt;If you designed coarse-grained, document-centric entity service (which means that all capabilities (operations) has the same input - the entity document, and almost the same output), you should definitely define you namespace per document, which in most cases would be one schema per service (e.g. http://www.sample.org/xmlns/service/v1.0).&lt;br /&gt;&lt;br /&gt;However, if you designed fine-grained, parameter-centric capabilities, then you should decouple capabilities one from another by defining separate namespaces for each capability to leverage better versioning and easier governance (e.g. http://www.sample.org/xmlns/service/ServiceCapability/v1.0).&lt;br /&gt;&lt;br /&gt;You should also consider externalizing common shared schema components (data domains or any other components) to the secondary schema, which should be maintained and versioned by its own.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-8292837584687296749?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/8292837584687296749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=8292837584687296749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8292837584687296749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8292837584687296749'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2009/05/service-versioning-based-on-namespace.html' title='Service versioning based on namespace considerations'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-7935648460277881310</id><published>2009-01-18T00:38:00.000-08:00</published><updated>2009-01-18T00:44:07.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA Governance'/><title type='text'>“Get” is not a Service</title><content type='html'>The major factor in SOA success is governance. And good governance could not be done without a systematic approach to a service definition and inventory organization. &lt;br /&gt;&lt;br /&gt;From "A methodology for Service Architectures" [OASIS]: &lt;br /&gt;A common mistake when defining services is to have “services” called “GetCustomer” “UpdateCustomer” etc, these are not services, they are just invocation points “The why” elements on the services. The service is “Customer”, which has an interaction point of “Get”. Services are collections of processes, not individual processes themselves, hence the reason that “Get” is not a service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-7935648460277881310?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/7935648460277881310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=7935648460277881310' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/7935648460277881310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/7935648460277881310'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2009/01/get-is-not-service.html' title='“Get” is not a Service'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-6314432648066503764</id><published>2008-02-19T23:13:00.000-08:00</published><updated>2008-12-25T03:31:48.195-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MyFaces Trinidad'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><title type='text'>MyFaces Trinidad: Working with large tables - sorting, paging, data on demand.</title><content type='html'>During all my development practice with JSF  time to time issue with large data tables arises - how to fetch the data on demand and to not  load the whole RecordSet to memory?&lt;br /&gt;&lt;br /&gt;When I started to use ADF Faces with ADF BC problem dissapered, however there are still projects where we use just ADF Faces part (now MyFaces Trinidad) and there are no out-of-the-box solution to fetch the data on demand. &lt;br /&gt;&lt;br /&gt;Recently I found one example, which is  describing the solution to use with classic JSF DatModel, on MyFaces wiki site - http://wiki.apache.org/myfaces/WorkingWithLargeTables. &lt;br /&gt;&lt;br /&gt;I have adopted this example to  be more universal and to work with ADF Faces table sorting and paging.&lt;br /&gt;&lt;br /&gt;Example consists of three classes - &lt;pre&gt;CollectionModel&lt;/pre&gt; implementation, &lt;pre&gt;DataPage&lt;/pre&gt;, and data fetch listener interface which should be implemented in the model binding/service layer.&lt;br /&gt;&lt;br /&gt;Whenever new page is needed, listener will be called.&lt;br /&gt;&lt;br /&gt;There is also one additional interface &lt;pre&gt;Identifiable&lt;/pre&gt; which is used to better leverage ADF Table rowKey conception. This interface could be implemented by the Entity class (single table row) in order to provide rowKey to the ADF Table. &lt;br /&gt;&lt;br /&gt;You can download complete example JDeveloper workspace from here:&lt;br /&gt;&lt;a href="http://blog.vesperis.lt/files/DataOnDemandExample.zip"&gt;DataOnDemandExample.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update: Broken link has been fixed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To use the example you will need to setup MyFaces Trinidad 1.0.X libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-6314432648066503764?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/6314432648066503764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=6314432648066503764' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/6314432648066503764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/6314432648066503764'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2008/02/myfaces-trinidad-working-with-large.html' title='MyFaces Trinidad: Working with large tables - sorting, paging, data on demand.'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-3102687543393724381</id><published>2008-02-14T02:07:00.001-08:00</published><updated>2008-02-14T03:22:23.008-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle SOA'/><title type='text'>ADF: Using ISO 8601 date (XSD) with Web Service DataControl</title><content type='html'>JavaBean mapping, generated by JDeveloper from the Web Service return type contains &lt;span style="font-family:courier new;"&gt;java.util.Date&lt;/span&gt; type for the XSD date based attributes, however &lt;span style="font-family:courier new;"&gt;java.util.Date&lt;/span&gt; can not handle ISO 8601 format (yyyy-MM-dd'T'HH:mm:ss) date.&lt;br /&gt;&lt;br /&gt;What you need to do is to create a simple Java class extending &lt;span style="font-family:courier new;"&gt;java.util.Date&lt;/span&gt; which can handle ISO 8601 date format and specify it instead of standard &lt;span style="font-family:courier new;"&gt;java.util.Date&lt;/span&gt; in the JavaBean mapping file (to find the file you can use mapping file namespace: http://xmlns.oracle.com/adfm/beanmodel).&lt;br /&gt;&lt;br /&gt;Here is the sample of simple Java ISODate class:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class ISODate extends java.util.Date {&lt;br /&gt; public ISODate(String value) {&lt;br /&gt;     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");&lt;br /&gt;     Date d;&lt;br /&gt; &lt;br /&gt;     try {&lt;br /&gt;         d = sdf.parse(value);&lt;br /&gt;     } catch (ParseException e) {&lt;br /&gt;         throw new RuntimeException(e);&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt;     setTime(d.getTime());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-3102687543393724381?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/3102687543393724381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=3102687543393724381' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/3102687543393724381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/3102687543393724381'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2008/02/adf-using-iso-8601-date-xsd-with-web.html' title='ADF: Using ISO 8601 date (XSD) with Web Service DataControl'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-1968762914661077634</id><published>2008-02-14T01:11:00.000-08:00</published><updated>2008-12-10T22:58:03.409-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle SOA'/><title type='text'>ADF: Enabling sorting on Web Service based DataControl</title><content type='html'>Sorting is disabled by default in the ADF Table when using Web Service DataControl based Iterator, however you can enable it by changing &lt;span style="font-family:courier new;"&gt;AdapterDataControl&lt;/span&gt; element's &lt;span style="font-family:courier new;"&gt;SupportsSortCollection&lt;/span&gt; property to &lt;span style="font-family:courier new;"&gt;true&lt;/span&gt; in the &lt;span style="font-family:courier new;"&gt;DataControls.dcx&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;Same could be achieved using JDeveloper UI. See screenshot below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_p2zQdxJi57g/R7VEdbfEEBI/AAAAAAAAADA/ww0LppagmYQ/s1600-h/enagleSorting.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_p2zQdxJi57g/R7VEdbfEEBI/AAAAAAAAADA/ww0LppagmYQ/s320/enagleSorting.png" alt="" id="BLOGGER_PHOTO_ID_5167111419862454290" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-1968762914661077634?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/1968762914661077634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=1968762914661077634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1968762914661077634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1968762914661077634'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2008/02/adf-enabling-sorting-on-web-service.html' title='ADF: Enabling sorting on Web Service based DataControl'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_p2zQdxJi57g/R7VEdbfEEBI/AAAAAAAAADA/ww0LppagmYQ/s72-c/enagleSorting.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-1693081036318590377</id><published>2007-02-21T00:29:00.000-08:00</published><updated>2007-02-21T00:34:37.382-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><title type='text'>ADF: Invalidating Web session in Apache Tomcat based container</title><content type='html'>I saw a lot of posts in the JDeveloper Forum on &lt;span style="font-weight: bold;"&gt;IllegalStateException&lt;/span&gt; exception while trying to call &lt;span style="font-weight: bold;"&gt;HttpSession.invalide()&lt;/span&gt; in the application deployed to Apache Tomcat based J2EE containers. I also had this problem and recently found a solution - try to call &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;ADFContext.getCurrent().removeScope(ADFContext.SESSION_SCOPE); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;right before calling HttpSession.invalide().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-1693081036318590377?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/1693081036318590377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=1693081036318590377' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1693081036318590377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1693081036318590377'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2007/02/adf-invalidating-web-session-in-apache.html' title='ADF: Invalidating Web session in Apache Tomcat based container'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-8154884715232581860</id><published>2007-01-28T23:49:00.000-08:00</published><updated>2007-01-29T00:03:44.399-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><title type='text'>Selecting af:tableSelectOne by clicking anywhare in the table row</title><content type='html'>There is a nice feature in the HTML to specify &amp;lt;label for=&amp;quot;...&amp;quot;&amp;gt; tag  for the &amp;lt;input type=&amp;quot;radio&amp;quot; ...&amp;gt; to be able to click on the text/image provided inside the &amp;lt;label&amp;gt; tag to select the radio button. Same feature is available in the JSF. You can use &amp;lt;af:tableSelectOne&amp;gt; in combination with the &amp;lt;h:outputLabel&amp;gt; tag for the &amp;lt;af:column&amp;gt; contents to archive same functionality.&lt;br /&gt;&lt;br /&gt;Here is a short example:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;af:table value=&amp;quot;#{bindings.TableBinding.collectionModel}&amp;quot;&lt;br /&gt;                    var=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;              &amp;lt;af:tableSelectOne id=&amp;quot;radioButton&amp;quot; required=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;af:commandButton text=&amp;quot;Choose&amp;quot;&lt;br /&gt;                                  action=&amp;quot;choose&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;/af:commandButton&amp;gt;&lt;br /&gt;              &amp;lt;/af:tableSelectOne&amp;gt;&lt;br /&gt;            &amp;lt;af:column headerText=&amp;quot;My Column&amp;quot;&amp;gt;&lt;br /&gt;              &amp;lt;h:outputLabel for=&amp;quot;radioButton&amp;quot; style=&amp;quot;display: block;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;                  &amp;lt;af:outputText value=&amp;quot;This is a column contents&amp;quot; /&amp;gt;&lt;br /&gt;              &amp;lt;/h:outputLabel&amp;gt;&lt;br /&gt;            &amp;lt;/af:column&amp;gt;&lt;br /&gt;&amp;lt;/af:table&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-8154884715232581860?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/8154884715232581860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=8154884715232581860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8154884715232581860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8154884715232581860'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2007/01/selecting-aftableselectone-by-clicking.html' title='Selecting af:tableSelectOne by clicking anywhare in the table row'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-1212861129634153566</id><published>2007-01-10T07:07:00.000-08:00</published><updated>2007-01-10T07:09:44.795-08:00</updated><title type='text'>Passing parameters from JSF to backing beans</title><content type='html'>For all JSF developer sooner or later raises a question "How should I pass some value from the page to the managed bean?"&lt;br /&gt;&lt;br /&gt;Take a look on this article to find out several ways to do this: &lt;span style="font-size:85%;"&gt;&lt;a name="PassingParametersFromJSFToBackingBeans" href="http://balusc.xs4all.nl/srv/dev-jep-com.html#PassingParametersFromJSFToBackingBeans"&gt;Passing parameters from JSF to backing beans&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-1212861129634153566?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/1212861129634153566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=1212861129634153566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1212861129634153566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/1212861129634153566'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2007/01/passing-parameters-from-jsf-to-backing.html' title='Passing parameters from JSF to backing beans'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-5420743737993016602</id><published>2006-12-20T01:12:00.000-08:00</published><updated>2006-12-20T06:34:09.352-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><title type='text'>ADF Faces: Declarative way for submit a form with the Enter key</title><content type='html'>The following is required to create a form for submit with the Enter key in declarative way:&lt;br /&gt;&lt;br /&gt;1. Replace generated &lt;span&gt;by default&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; h:form&lt;/span&gt; with the &lt;span style="font-weight: bold;"&gt;af:form&lt;/span&gt;&lt;br /&gt;2. Specify the &lt;span style="font-weight: bold;"&gt;id&lt;/span&gt; attribute for the &lt;span style="font-weight: bold;"&gt;af:commandButton&lt;/span&gt;&lt;br /&gt;3. Set the &lt;span style="font-weight: bold;"&gt;af:commandButton&lt;/span&gt;'s id in the &lt;span style="font-weight: bold;"&gt;af:form&lt;/span&gt;'s &lt;span style="font-weight: bold;"&gt;defaultCommand&lt;/span&gt; attribute&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-5420743737993016602?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/5420743737993016602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=5420743737993016602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5420743737993016602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5420743737993016602'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/adf-faces-declarative-way-for-submit.html' title='ADF Faces: Declarative way for submit a form with the Enter key'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-7750285461563192060</id><published>2006-12-20T00:45:00.000-08:00</published><updated>2007-01-26T13:09:53.541-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><title type='text'>Another option for "ADF Faces: Anchors with goLink"</title><content type='html'>Recently I saw a post by Frank Nimphius on using &lt;a href="http://www.orablogs.com/fnimphius/archives/001872.html"&gt;anchors with goLink&lt;/a&gt;. Frank suggestion is to use h:form id to specify anchor. It is one option. Another option is to use af:form instead of h:form. af:form is not a NamingContainer and different from the h:form will not add any prefixes to a "goLink 2" id.&lt;br /&gt;&lt;br /&gt;Modified Frank's Sample:&lt;br /&gt;  &amp;lt;af:form&amp;gt;&lt;br /&gt;     &amp;lt;af:golink text="goLink 1"&amp;gt;destination="#anchor1id"/&amp;gt;&lt;br /&gt;    -------------------- page content here ------------------------&lt;br /&gt;     &amp;lt;af:golink text="goLink 2" id="anchor1id"&amp;gt;&lt;br /&gt;   &amp;lt;/af:form&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-7750285461563192060?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/7750285461563192060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=7750285461563192060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/7750285461563192060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/7750285461563192060'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/another-option-for-adf-faces-anchors.html' title='Another option for &quot;ADF Faces: Anchors with goLink&quot;'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-3131107043154869129</id><published>2006-12-19T08:20:00.000-08:00</published><updated>2006-12-19T08:27:23.767-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Examples'/><title type='text'>My Oracle ADF Examples Summary Post</title><content type='html'>This post is created to summarize all the Oracle ADF examples I have posted in my blog.&lt;br /&gt;I will try to keep this post up-to-date as frequent as new examples will be posted to the blog.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://vgoldin.blogspot.com/2006/12/using-magnetic-stripe-reader-with.html"&gt;Using magnetic stripe reader with Oracle ADF Faces&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-3131107043154869129?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/3131107043154869129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=3131107043154869129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/3131107043154869129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/3131107043154869129'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/my-oracle-adf-examples-summary-post.html' title='My Oracle ADF Examples Summary Post'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-4577601549768781417</id><published>2006-12-12T04:30:00.000-08:00</published><updated>2006-12-12T04:35:30.678-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><title type='text'>RPC/Literal/Encoded, Document/Literal/Wrapped. Who is who?</title><content type='html'>Sometimes there is confusion in Web Services world about which Web Services style to use and which not, what exactly each of the style for and etc. Read the article below to get clear about WSDL bindings styles and message formats.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://jax-rpc.dev.java.net/docs/wsdl-bindings.html"&gt;wsdl:binding "style", "use", and message format&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-4577601549768781417?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/4577601549768781417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=4577601549768781417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/4577601549768781417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/4577601549768781417'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/rpcliteralencoded-documentliteralwrappe.html' title='RPC/Literal/Encoded, Document/Literal/Wrapped. Who is who?'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-5065765279333146590</id><published>2006-12-12T04:19:00.000-08:00</published><updated>2006-12-12T04:24:25.265-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>Most common mistake about Use Cases</title><content type='html'>"Most people go astray right from the start with use cases. Perhaps it is the&lt;br /&gt;similarity between use case diagrams and dataflow diagrams which leads&lt;br /&gt;people to define use cases that are simply functions or menu items.&lt;br /&gt;Whatever the reason may be, it is notably the most prevalent mistake that&lt;br /&gt;novices make."  - by Kurt Bittner&lt;br /&gt;General Manager&lt;br /&gt;Rational Unified Process Business Unit&lt;br /&gt;&lt;a href="http://smv.unige.ch/tiki-download_file.php?fileId=545"&gt;http://smv.unige.ch/tiki-download_file.php?fileId=545&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kurt Bittner in very simple manner describe why Use Cases are not a functions and what they are exactly. Unfortunately there is no original link from Rational Software (IBM) available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-5065765279333146590?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/5065765279333146590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=5065765279333146590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5065765279333146590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/5065765279333146590'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/most-common-mistake-about-use-cases.html' title='Most common mistake about Use Cases'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-8303557718837669073</id><published>2006-12-12T03:01:00.000-08:00</published><updated>2007-09-07T07:56:58.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>Best practices of logging and exception handling in Java and J2EE</title><content type='html'>In todays enterprise applications supportability and maintainability is one of the most critical quality attributes. Read the links provided below to get  some information on how to achieve  best results in this challenge.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-exception.html?page=1"&gt;Exception management and error tracking in J2EE&lt;br /&gt;&lt;/a&gt;also take a look at the links provided at the end of the article&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1"&gt;Best Practices for Exception Handling&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.apache.org/myfaces/Handling_Server_Errors"&gt;Handling Server Errors&lt;/a&gt;&lt;br /&gt;Common and simple ways to handle server side errors&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-128.ibm.com/developerworks/library/j-ejbexcept.html"&gt;Best practices in EJB exception handling&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update: &lt;/span&gt;&lt;span style="font-style: italic;"&gt;see also alternative approach in these publications:&lt;br /&gt;&lt;a href="http://www.sanabel-solutions.com/index.php?option=com_content&amp;task=blogcategory&amp;amp;id=14&amp;Itemid=41"&gt;http://www.sanabel-solutions.com/index.php?option=com_content&amp;amp;task=blogcategory&amp;id=14&amp;amp;Itemid=41&lt;/a&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-8303557718837669073?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/8303557718837669073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=8303557718837669073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8303557718837669073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/8303557718837669073'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/best-practices-of-logging-and-exception.html' title='Best practices of logging and exception handling in Java and J2EE'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4728486807233007515.post-6619637367013115941</id><published>2006-12-12T02:41:00.000-08:00</published><updated>2006-12-20T01:23:46.095-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADF Faces'/><title type='text'>ADF Faces: Using magnetic stripe reader with Oracle ADF Faces</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;In nova days no enterprise application can suffer without industry hardware like Magnetic Stripe and Barcode Readers. In this article I will try to provide a sample how we made Magnetic Stripe Reader work with ADF Faces application providing best user experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;Most of card readers (MSR’s) manufactured today are working like a regular keyboard sending sequence of characters stored on the magnetic stripe of the card to the OS layer. Getting information from the card using such a readers are very easy however providing good user experience is a sort of challenge. To be more concrete let’s look at the example.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Use Case: User wants to serve a customer. To start providing services first a whole user needs to find a customer in the system. One option (a) is to enter social security number (or other ID number) in the search field and press submit button, the other option (b) is to swipe the card and get the information displayed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;In the option “a” user need to type the number manually and then press the button. A lot of work to be done. In the option “b” user just swipes the card and gets the information. Without making any special peculiarities in ADF page your Use Case for the option “b” will be: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;1) Place the cursor to the search field. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;2) Swipe the card.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;3) Press submit button&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;This is also not bad, however does not provide sufficient usability and user experience. Let’s see how we can “tune” ADF page to fulfill option “b” of the use case provided.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Simple ADF Faces Customer Search Page:&lt;/span&gt;&lt;/p&gt;  &amp;lt;f:view&amp;gt;&lt;br /&gt;  &amp;lt;af:document title="Title 1" initialFocusId="searchField"&amp;gt;&lt;br /&gt;      &amp;lt;af:form defaultCommand="searchButton"&amp;gt; &lt;br /&gt;        &amp;lt;af:panelBox&amp;gt;&lt;br /&gt;          &amp;lt;af:panelForm&amp;gt;&lt;br /&gt;            &amp;lt;af:inputText id="searchField" label="SSN:"/&amp;gt;&lt;br /&gt;            &amp;lt;f:facet name="footer"&amp;gt;&lt;br /&gt;            &amp;lt;af:panelButtonBar&amp;gt;&lt;br /&gt;              &amp;lt;af:commandButton id="searchButton" text="Search"/&amp;gt;&lt;br /&gt;            &amp;lt;/af:panelButtonBar&amp;gt;&lt;br /&gt;          &amp;lt;/f:facet&amp;gt;&lt;br /&gt;          &amp;lt;/af:panelForm&amp;gt;&lt;br /&gt;        &amp;lt;/af:panelBox&amp;gt;&lt;br /&gt;      &amp;lt;/af:form&amp;gt;   &lt;br /&gt;  &amp;lt;/af:document&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Pay attention to a two special attributes: “initialFocusId” for the &lt;af:document&gt; tag and “defaultCommand” for the &lt;af:form&gt; tag. In the first attribute you should specify the id of the search field. This will set place the cursor (set the focus) on page load to the search field. In the second attribute you should specify the id of the “Search” button. This will emulate press of the “Search” button on “Enter” keystroke received.&lt;o:p&gt;&lt;/o:p&gt;&lt;/af:form&gt;&lt;/af:document&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Another important thing to do is to tell the MSR device to add “Enter” to every sequence of characters read from the card. On exact instructions how to do that consult to the manual of the MSR device you have got. Most of MSR devices do support that.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;And now we are done! You can provide user with best experience with no additional line of Java or ActiveX code.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4728486807233007515-6619637367013115941?l=vgoldin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vgoldin.blogspot.com/feeds/6619637367013115941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4728486807233007515&amp;postID=6619637367013115941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/6619637367013115941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4728486807233007515/posts/default/6619637367013115941'/><link rel='alternate' type='text/html' href='http://vgoldin.blogspot.com/2006/12/using-magnetic-stripe-reader-with.html' title='ADF Faces: Using magnetic stripe reader with Oracle ADF Faces'/><author><name>Veniamin Goldin</name><uri>http://www.blogger.com/profile/01681616181105728907</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
