<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Ashish Kulkarni</title>
	<atom:link href="http://www.ashishkulkarni.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ashishkulkarni.com</link>
	<description>Ashish Kulkarni's website on Java Technology, JBoss, Seam, Scotland, UK, Photography and more...</description>
	<pubDate>Tue, 28 Oct 2008 21:57:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>JBoss Seam 2.1.0.GA seam-gen bug</title>
		<link>http://www.ashishkulkarni.com/jboss-seam-210ga-seam-gen-bug/</link>
		<comments>http://www.ashishkulkarni.com/jboss-seam-210ga-seam-gen-bug/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 21:57:55 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<category><![CDATA[seam-gen]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=25</guid>
		<description><![CDATA[There are 2 bugs in seam-gen of JBoss Seam 2.1.0.GA in the following 2 files:
view/view.xhtml.ftl - Line 100
property=parentParentPojo.indentifierProperty -&#62; property=parentParentPojo.identifierProperty
view/edit.xhtml.ftl - Line 127
property=parentParentPojo.indentifierProperty -&#62; property=parentParentPojo.identifierProperty
Once you have made the above changes, you will need to run seam delete-project and seam create-project before progressing further.
]]></description>
			<content:encoded><![CDATA[<p>There are 2 bugs in seam-gen of JBoss Seam 2.1.0.GA in the following 2 files:</p>
<p><strong>view/view.xhtml.ftl - Line 100</strong></p>
<p><span style="text-decoration: line-through;">property=parentParentPojo.indentifierProperty</span> -&gt; property=parentParentPojo.identifierProperty</p>
<p><strong>view/edit.xhtml.ftl - Line 127</strong></p>
<p><span style="text-decoration: line-through;">property=parentParentPojo.indentifierProperty</span> -&gt; property=parentParentPojo.identifierProperty</p>
<p>Once you have made the above changes, you will need to run <strong>seam delete-project</strong> and <strong>seam create-project</strong> before progressing further.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/jboss-seam-210ga-seam-gen-bug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction to JBoss Seam - PDF</title>
		<link>http://www.ashishkulkarni.com/introduction-to-jboss-seam-pdf/</link>
		<comments>http://www.ashishkulkarni.com/introduction-to-jboss-seam-pdf/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 22:11:45 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=24</guid>
		<description><![CDATA[A copy of my presentation on JBoss Seam in PDF format is available here.
Feel free to mail me your feedback at ashish@ebizss.com.
]]></description>
			<content:encoded><![CDATA[<p>A copy of my presentation on JBoss Seam in PDF format is available <a href="http://www.ashishkulkarni.com/wp-content/uploads/2008/10/introduction-to-jboss-seam-notes.pdf">here</a>.</p>
<p>Feel free to mail me your feedback at <a href="mailto:ashish@ebizss.com">ashish@ebizss.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/introduction-to-jboss-seam-pdf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JBoss Seam 2.1.0.GA Released!!!</title>
		<link>http://www.ashishkulkarni.com/jboss-seam-210ga-released/</link>
		<comments>http://www.ashishkulkarni.com/jboss-seam-210ga-released/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 10:16:30 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=23</guid>
		<description><![CDATA[JBoss have released 2.1.0.GA release of JBoss Seam. The highlights include identity management framework with ACL style permissions, an Excel reporting module, an embellished and more flexible seam-gen, first class support for Wicket, built-in support for URL rewriting and a technology preview of JAX-RS (REST) support through the RESTeasy project.
It is important to mention that [...]]]></description>
			<content:encoded><![CDATA[<p>JBoss have released 2.1.0.GA release of JBoss Seam. The highlights include <a class="regularLink" href="http://shane.bryzak.com/blog/articles/seam_security_gets_an_upgrade">identity management framework with ACL style permissions</a>, <a class="regularLink" href="http://docs.jboss.org/seam/2.1.0.GA/reference/en-US/html/excel.html">an Excel reporting module</a>, <a class="regularLink" href="http://www.ashishkulkarni.com/Bloggers/SeamgenGetsAModestUpgrade">an embellished and more flexible seam-gen</a>, <a class="regularLink" href="http://www.ashishkulkarni.com/Bloggers/SeamlessWicketOrchestratingYourApplication">first class support for Wicket</a>, <a class="regularLink" href="http://docs.jboss.org/seam/2.1.0.GA/reference/en-US/html/events.html#d0e5013">built-in support for URL rewriting</a> and a <a class="regularLink" href="http://docs.jboss.org/seam/2.1.0.GA/reference/en-US/html/webservices.html#d0e21244">technology preview of JAX-RS (REST) support</a> through the <a class="regularLink" href="http://www.jboss.org/resteasy/">RESTeasy project</a>.</p>
<p>It is important to mention that Seam based web applications can be deployed to all major Application Servers such as WebSphere, WebLogic, OC4J and now Glassfish. It can also be deployed to Tomcat. Make sure you check out the examples.</p>
<p>Read more about the new release <a href="http://in.relation.to/Bloggers/Seam210GAReleased">here</a>.</p>
<p>Download it from <a href="http://www.seamframework.org/Download">here</a>.</p>
<p>Check out a screenshot-by-screenshot example <a href="http://www.ebizss.com/wiki/index.php/HelloWorldSeam">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/jboss-seam-210ga-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>svnant - Using SVN with ANT</title>
		<link>http://www.ashishkulkarni.com/svnant-using-svn-with-ant/</link>
		<comments>http://www.ashishkulkarni.com/svnant-using-svn-with-ant/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 10:26:58 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[ant]]></category>

		<category><![CDATA[SVN]]></category>

		<category><![CDATA[svnant]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=22</guid>
		<description><![CDATA[What you will need to get the ANT svn task to work is:
JDK 1.5/1.6 - You can get that here.
ANT - You can get that here.
SVN client - You can get that here. You will need to register for this.
SvnAnt zip file - You can get that here.
Here is what to do:
Install JDK if you [...]]]></description>
			<content:encoded><![CDATA[<p>What you will need to get the ANT svn task to work is:</p>
<p>JDK 1.5/1.6 - You can get that <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">here</a>.<br />
ANT - You can get that <a href="http://ant.apache.org/" target="_blank">here</a>.<br />
SVN client - You can get that <a href="http://www.collab.net/downloads/subversion/" target="_blank">here</a>. You will need to register for this.<br />
SvnAnt zip file - You can get that <a href="http://subclipse.tigris.org/svnant.html" target="_blank">here</a>.</p>
<p>Here is what to do:</p>
<p>Install JDK if you haven&#8217;t done so already.<br />
Install ANT (simply unzip the ANT zip file into an appropriate place) if you haven&#8217;t done so already.<br />
Install SVN Client.<br />
Install SvnAnt (simply unzip the SvnAnt zip file into an appropriate place).</p>
<p>To use the ANT svn task:</p>
<p><strong>build.properties:</strong><br />
<code># -----------------------------------------------------------------------------<br />
# build.properties<br />
# This file is referenced by the sample build.xml file.<br />
# -----------------------------------------------------------------------------</code></p>
<p>svnant.version=1.0.0</p>
<p># &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
# all jar needed<br />
# &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
lib.dir=C:/svnant-1.0.0/lib<br />
svnant.jar=${lib.dir}/svnant.jar<br />
svnClientAdapter.jar=${lib.dir}/svnClientAdapter.jar<br />
svnjavahl.jar=${lib.dir}/svnjavahl.jar</p>
<p>svnant.latest.url=http://subclipse.tigris.org/svn/subclipse/trunk/svnant/<br />
svnant.this.url=http://subclipse.tigris.org/svn/subclipse/tags/svnant/${svnant.version}/</p>
<p>svnant.repository.user=user1<br />
svnant.repository.passwd=&#8221;passwordUser1&#8243;</p>
<p><strong>build.xml:</strong><br />
<code>&lt;?xml version="1.0"?&gt;</code></p>
<p><code>&lt;project name="Update" basedir="." default="update"&gt;<br />
 <br />
  &lt;!--  all properties are in build.properties --&gt;<br />
  &lt;property file="build.properties" /&gt;<br />
  &lt;path id="project.classpath"&gt;<br />
    &lt;pathelement location="${svnjavahl.jar}" /&gt;<br />
    &lt;pathelement location="${svnant.jar}" /&gt;<br />
    &lt;pathelement location="${svnClientAdapter.jar}" /&gt;<br />
  &lt;/path&gt;<br />
  &lt;property name="project.svn.url" value="SVN_URL_HERE" /&gt;<br />
 <br />
  &lt;taskdef resource="svntask.properties" classpathref="project.classpath"/&gt;<br />
 <br />
  &lt;target name="update"&gt;<br />
    &lt;svn&gt;<br />
      &lt;checkout url="${project.svn.url}" revision="HEAD" destPath="." /&gt;<br />
    &lt;/svn&gt;<br />
  &lt;/target&gt;</p>
<p>&lt;/project&gt;</code></p>
<p>You can get detailed documentation on svn ANT task <a href="http://subclipse.tigris.org/svnant/svn.html" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/svnant-using-svn-with-ant/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing SubVersion on Fedora Linux</title>
		<link>http://www.ashishkulkarni.com/installing-subversion-on-fedora-linux/</link>
		<comments>http://www.ashishkulkarni.com/installing-subversion-on-fedora-linux/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 10:48:38 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Apache]]></category>

		<category><![CDATA[Fedora]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[SVN]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=21</guid>
		<description><![CDATA[This article describes how to install SubVersion on Fedora Linux and make it accessible via Apache.]]></description>
			<content:encoded><![CDATA[<p>To install subversion on Linux and make it available over Apache, I took the following steps:</p>
<h4>Install subversion on Fedora</h4>
<p><code>yum install subversion</code></p>
<h4>Install mod_dav_svn</h4>
<p><code>yum install mod_dav_svn</code></p>
<h4>Create the SVN Repository</h4>
<p><code>mkdir /svn/repos<br />
svnadmin create /svn/repos/sandbox<br />
</code></p>
<h4>Change ownership of the folder to Apache</h4>
<p><code>chown -R apache.apache /svn</code></p>
<h4>Create /svn/repos/sandbox/svnauth file</h4>
<p><code><br />
[/]<br />
user1 = rw<br />
user2 = r<br />
</code></p>
<p>Here, user <em>user1</em> will have read-write access while user <em>user2</em> will have read-only access to the entire repository.</p>
<h4>Create /svn/repos/sandbox/svnpass file</h4>
<p><code>htpasswd -bcm /svn/repos/sandbox/svnpass user1 passwordUser1<br />
htpasswd -bm /svn/repos/sandbox/svnpass user2 passwordUser2</code></p>
<p><strong>htpasswd</strong> has the following usage</p>
<p><code>Usage:<br />
htpasswd [-cmdpsD] passwordfile username<br />
htpasswd -b[cmdpsD] passwordfile username password<br />
 <br />
htpasswd -n[mdps] username<br />
htpasswd -nb[mdps] username password<br />
-c Create a new file.<br />
-n Don&#8217;t update file; display results on stdout.<br />
-m Force MD5 encryption of the password.<br />
-d Force CRYPT encryption of the password (default).<br />
-p Do not encrypt the password (plaintext).<br />
-s Force SHA encryption of the password.<br />
-b Use the password from the command line rather than prompting for it.<br />
-D Delete the specified user.<br />
On Windows, NetWare and TPF systems the &#8216;-m&#8217; flag is used by default.<br />
On all other systems, the &#8216;-p&#8217; flag will probably not work.<br />
</code></p>
<h4>Add the following to your apache config file</h4>
<p><code>&lt;Location /svn/sandbox&gt;<br />
DAV svn<br />
SVNPath /svn/repos/sandbox<br />
AuthType Basic<br />
AuthName "Subversion Repository"<br />
AuthUserFile /svn/repos/sandbox/svnpass<br />
Require valid-user<br />
AuthzSVNAccessFile /svn/repos/sandbox/svnauth<br />
&lt;/Location&gt;</code></p>
<h4>Restart Apache</h4>
<p><code>httpd restart</code></p>
<p>Now you can access the above repository using your browser. Simply visit <a href="http://www.yourserver.com/svn/sandbox">http://www.yourserver.com/svn/sandbox</a>. You will be asked for username and password. Use one of the user names and passwords you used above. For example, <strong>user1</strong> and <strong>passwordUser1</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/installing-subversion-on-fedora-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JBoss Seam 2.1.0.CR1 Released</title>
		<link>http://www.ashishkulkarni.com/jboss-seam-210cr1-released/</link>
		<comments>http://www.ashishkulkarni.com/jboss-seam-210cr1-released/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 22:12:44 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=20</guid>
		<description><![CDATA[JBoss have released version 2.1.0.CR1 of JBoss Seam.
This includes a lot of bug fixes and new features. Notably, it now has support for Wicket.
Download it or read the release notes here.
]]></description>
			<content:encoded><![CDATA[<p>JBoss have released version 2.1.0.CR1 of JBoss Seam.</p>
<p>This includes a lot of bug fixes and new features. Notably, it now has support for Wicket.</p>
<p>Download it or read the release notes <a href="http://www.seamframework.org/Download">here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/jboss-seam-210cr1-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RichFaces 3.2.2.GA Released</title>
		<link>http://www.ashishkulkarni.com/richfaces-322ga-released/</link>
		<comments>http://www.ashishkulkarni.com/richfaces-322ga-released/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 22:32:19 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[RichFaces]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=19</guid>
		<description><![CDATA[RichFaces 3.2.2.GA has been released. This release includes a lot of new components and a few bug fixes.
You can download this from here.
]]></description>
			<content:encoded><![CDATA[<p>RichFaces 3.2.2.GA has been released. This release includes a lot of new components and a few bug fixes.</p>
<p>You can download this from <a href="http://www.jboss.org/jbossrichfaces/downloads/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/richfaces-322ga-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JBoss Seam Presentation at UK Java User Group</title>
		<link>http://www.ashishkulkarni.com/jboss-seam-presentation-at-uk-java-user-group/</link>
		<comments>http://www.ashishkulkarni.com/jboss-seam-presentation-at-uk-java-user-group/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 08:37:28 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=17</guid>
		<description><![CDATA[I had the opportunity to talk on JBoss Seam at the UK Java User Group for Scotland (UK JUGS). Their events link is - http://ukjugs.org/display/main/Events
My presentation is available to download in PDF format - Introduction to JBoss Seam - Notes.pdf
You can get a glimpse of the demo that was a part of this presentation at [...]]]></description>
			<content:encoded><![CDATA[<p>I had the opportunity to talk on JBoss Seam at the UK Java User Group for Scotland (UK JUGS). Their events link is - <a href="http://ukjugs.org/display/main/Events">http://ukjugs.org/display/main/Events</a></p>
<p>My presentation is available to download in PDF format - <a href="http://www.ashishkulkarni.com/wp-content/uploads/2008/10/introduction-to-jboss-seam-notes.pdf">Introduction to JBoss Seam - Notes.pdf</a></p>
<p>You can get a glimpse of the demo that was a part of this presentation at - <a href="http://www.ebizss.com/wiki/index.php/HelloWorldSeam">http://www.ebizss.com/wiki/index.php/HelloWorldSeam</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/jboss-seam-presentation-at-uk-java-user-group/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JBoss AS 4.2.3.GA released</title>
		<link>http://www.ashishkulkarni.com/jboss-as-423ga-released/</link>
		<comments>http://www.ashishkulkarni.com/jboss-as-423ga-released/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 13:02:16 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=16</guid>
		<description><![CDATA[JBoss AS 4.2.3.GA released]]></description>
			<content:encoded><![CDATA[<p>JBoss have released version 4.2.3.GA of their JBoss Application Server.</p>
<p>This is the 3rd bug fixing release of the JBoss Application Server v4.2 series. The aim of this release is to provide fixes for bugs reported by the community against previous JBossAS v4.2.x releases. There were some backwards compatible component upgrades so switching to AS 4.2.3.GA from a previous 4.2.0/4.2.1/4.2.2 release should not present any problems.</p>
<p>For further details, please have a look at the detailed release notes at <a href="https://sourceforge.net/project/shownotes.php?release_id=614346&#038;group_id=22866">this location</a></p>
<p>Download it from <a href="https://sourceforge.net/project/showfiles.php?group_id=22866&#038;package_id=16942&#038;release_id=614346">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/jboss-as-423ga-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction to JBoss Seam Framework</title>
		<link>http://www.ashishkulkarni.com/introduction-to-jboss-seam-framework/</link>
		<comments>http://www.ashishkulkarni.com/introduction-to-jboss-seam-framework/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 13:24:21 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[JBoss]]></category>

		<category><![CDATA[JBoss Seam]]></category>

		<guid isPermaLink="false">http://www.ashishkulkarni.com/?p=15</guid>
		<description><![CDATA[This article gives a brief introduction to JBoss Seam Framework - Compiled by Ashish Kulkarni, Scotland, UK.]]></description>
			<content:encoded><![CDATA[<p>Before introducing JBoss SEAM Framework, I would like to put some background into perspective first.</p>
<p>Most Java Developers are aware of Model-View-Controller (MVC) frameworks such as Struts and more recently JavaServer Faces or JSF. JSF + Java Persistence API (JPA) combination have a lot of advantages over Struts + EJB 2 combination. These are as follows:</p>
<p><b>Fewer, finer grained artifacts</b></p>
<li>No Data Transfer Objects (DTOs) required</li>
<li>Clean MVC</li>
<p><b>Less noise</b></p>
<li>No Struts/EJB 2.x boilerplate code</li>
<li>No direct calls to HttpSession or HttpRequest</li>
<p><b>Simple Object-Relational Mapping (ORM)</b></p>
<li>Even simpler than the Hibernate API!</li>
<p><b>JSF is flexible and extensible</b></p>
<li>Custom UI widget suites (open source)</li>
<li>Good AJAX support</li>
<p><b>JPA</b></p>
<li>Powerful object/relational mapping, far beyond EJB 2.x CMP entity beans</li>
<li>All components are POJO so easily testable with TestNG or JUnit</li>
<p><b>Some disadvantages of using plain JSF are:</b></p>
<p><b>JSF</b></p>
<li>Backing bean couples layers and is just noise</li>
<li>Hard to refactor all the XML and String outcomes</li>
<li>No support for the business layer</li>
<li>Validation breaks DRY</li>
<li>XML is too verbose</li>
<p><b>How do we write our business layer</b></p>
<li>EJB3? - Unfortunately it can’t be used directly by JSF</li>
<li>EJB3? - It has no concept of scopes</li>
<p><b>And then there are some more challenges which are:</b></p>
<p><b>Workflow</b></p>
<li>Ad-hoc back buttoning not suppored</li>
<li>No stateful navigation</li>
<li>No support for long running business processes</li>
<p><b>Multi-tab/window support is not built in</b></p>
<li>All operations happen in the session - so there is memory leakage</li>
<li>No support for a conversation context - so wizards have to use Session Scoped objects</li>
<li>Memory leak - objects don’t get cleaned up quickly</li>
<p><b>However, JSF does provide certain advantages which are:</b></p>
<p><b>JSF</b></p>
<li>Validation code in the front-end - for example, required=&#8221;true&#8221; for input fields.</li>
<li>Provides converters for Dates, Amounts, etc.</li>
<li>Allows calling Business Layer functions directly.</li>
<li>Provides a way for outputting messages alongwith severity (error, info, etc.)</li>
<p>Let us now talk about what SEAM brings to the table.</p>
<p>SEAM allows us to Begin and End a conversation - State is maintained over multiple requests<br />
between Begin and End.</p>
<p>For example:</p>
<p><code><br />
@Name("itemEditor")<br />
@Scope(CONVERSATION)<br />
public class EditItemBean implements EditItem {</p>
<p>  @In EntityManager entityManager;<br />
  Long id;<br />
  Item item;</p>
<p>  // getter and setter pairs<br />
  @Begin public String find(Long id) {<br />
  item = entityManager.find(Item.class, id);<br />
  return item == null ? "notFound" : "success";<br />
  }</p>
<p>  @End public String save(Item item) {<br />
  item = entityManager.merge(item);<br />
  return "success";<br />
  }</p>
<p>}<br />
</code></p>
<p><b>Following Scopes are available when we make use of SEAM:</b></p>
<p><b>Event</b> - Same as Http Request Scope<br />
<b>Page</b> - New to SEAM - Used just for rendering output<br />
<b>Conversation</b> - New to SEAM - Spans several requests<br />
<b>Session</b><br />
<b>Application</b><br />
<b>Business Process</b> - New to SEAM - Spans several conversations and even survives Server restart</p>
<p>As you can see, SEAM makes a few new Scopes available to us which are Page, Conversation and Business Process.</p>
<p>How does SEAM store the state information? Well, that depends upon the context we are talking about.</p>
<p>In Page context, the state information is stored in the component tree of the JSF view (page). It can also be stored in HttpSession or serialized to client.</p>
<p>For conversation context, SEAM stores the state information in a Segmented HttpSession. This information times out if not used thus, preventing Memory Leaks.</p>
<p>In Business Process context, the state information is Persisted to database, and is handled by jBPM.</p>
<p><b>What is Bijection?</b></p>
<p>Unlike Spring Framework, which only allows Dependency Injection, SEAM allows Dependency Bijection.</p>
<p><code><br />
@Name("passwordChanger")<br />
public class PasswordChanger {</p>
<p>  @In EntityManager entityManager;<br />
  @In @Out User currentUser;</p>
<p>  public void changePassword() {<br />
    entityManager.merge(currentUser);<br />
  }</p>
<p>}<br />
</code></p>
<p>In the above example, entityManager is being Injected whereas, currentUser is both injected as well as outjected.</p>
<p>As a result, currentUser&#8217;s value will be first made available to changePassword() and then, once it is done, the objected will be made available to whoever needs it.</p>
<p>Scope of currentUser itself will be governed by the scope of the User class.</p>
<p><b>A brief explanation about JPA Persistence Context</b></p>
<p><b>What is the Persistence Context (PC)?</b></p>
<li>It is a HashMap of all the objects I’ve loaded and stored</li>
<li>It holds (at most) one in-memory object for each database row while the PC is active</li>
<li>It is a natural first-level cache</li>
<li>It can do dirty checking of objects and write SQL as late as possible (automatic or manual flushing)</li>
<p><b>The Persistence Context has a flexible scope</b></p>
<li><b>default:</b> same scope as the system transaction (JTA)</li>
<li><b>extended:</b> the PC is bound to a stateful session bean</li>
<p><b>Which PC scope to use in JPA?</b></p>
<p><b>Transaction scoped &#038; detached objects</b></p>
<li>LazyInitializationException</li>
<li>NonUniqueObjectException</li>
<li>Less opportunity for caching</li>
<p><b>An extended persistence context of a SFSB is</b></p>
<li>not available during view rendering (LIE again)</li>
<li>very complicated propagation rules</li>
<p><b>PC has no concept of a conversation</b></p>
<p><b>Advantage of SEAM managed persistence and transactions</b></p>
<li>SEAM managed PC is conversation scoped.</li>
<li>It remains active through conversation,</li>
<li>It is injected using @In - @In EntityManager entityManager</li>
<li>It allows use of manual flush mode</li>
<p><b>What else does SEAM give us?</b></p>
<li>Security - This can be configured to work at Page, Field, Class, Method or custom level.</li>
<li>Email templates</li>
<li>PDF templates</li>
<li>JavaScript Remoting</li>
<li>Asynchronicity (Java SE, EJB3 or Quartz)</li>
<li>Provide Google-style search in your app using Hibernate Search</li>
<li>Integration and Unit Testing</li>
<li>JSF components (deep integration into JPA)</li>
<li>Support for RichFaces, ICEFaces and Adobe Flex 3 RIA</li>
<li>Components in groovy</li>
<li>WebServices</li>
<li>More than 25 examples</li>
<li>Portal support</li>
<li>Validation</li>
<li>BPM support</li>
<li>Stateful navigation</li>
<p><b>SEAM 2.1 Roadmap - The near future</b></p>
<li>Providing Wicket as a view layer</li>
<li>Providing GWT as a view layer</li>
<li>First class support for other other containers (e.g. Websphere)</li>
<li>Identity Management</li>
<li>Single-Sign-On for security</li>
<li>Deeper integration with JBoss Portal (inter-portlet communication)</li>
]]></content:encoded>
			<wfw:commentRss>http://www.ashishkulkarni.com/introduction-to-jboss-seam-framework/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
