<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Stephanodesign&#039;s Blog</title>
	<atom:link href="http://stephanodesign.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://stephanodesign.wordpress.com</link>
	<description>Find your solutions</description>
	<lastBuildDate>Tue, 17 Nov 2009 08:32:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='stephanodesign.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Stephanodesign&#039;s Blog</title>
		<link>http://stephanodesign.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://stephanodesign.wordpress.com/osd.xml" title="Stephanodesign&#039;s Blog" />
	<atom:link rel='hub' href='http://stephanodesign.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Jar defs and Java libraries</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/jar-defs-and-java-libraries/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/jar-defs-and-java-libraries/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:54:08 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[BOF]]></category>
		<category><![CDATA[composer]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=26</guid>
		<description><![CDATA[The jars that you use in BOF modules can be delivered in Jar Defs or in Java Libraries. Let’s look at the differences, real and conventional. Jar Defs (dmc_jar instances in the docbase) are just jar wrappers. They have a nature – implementation or interface – that determines to which class loader they belong. Here’s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=26&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p>The jars that you use in BOF modules can be delivered in Jar Defs or in Java Libraries. Let’s look at the differences, real and conventional.</p>
<p>Jar Defs (dmc_jar instances in the docbase) are just jar wrappers. They have a nature – implementation or interface – that determines to which class loader they belong. Here’s something that is not obvious – you should <strong>not</strong> share Jar Defs across modules. We don’t enforce this restriction well enough, but we don’t support this usage. If you want to share jars across modules you should use a Java Library. Read on.</p>
<p>Java Libraries (dmc_java_library instances) are collections of one or more jars. Each Java Library is flagged as being sandboxed or not. All jars in a sandboxed Java Library will belong to the module class loader, just like regular implementation jars. All jars in a non-sandboxed Java Library will belong to the <a href="http://donr7n.wordpress.com/2008/07/03/bof-jars-and-class-loading/">Shared Class Loader</a>. Java Libraries <strong>can</strong> be shared across modules. So they have two purposes:</p>
<ul>
<li>Sharing jars across modules</li>
<li>Collecting jars into an administrable unit</li>
</ul>
<p>Some good uses for Java Libraries are:</p>
<ul>
<li>third party libraries</li>
<li>shared logic across a <strong>cohesive</strong> set of modules</li>
</ul>
<p>Be very very careful about marking a Java Library non-sandboxed. Because this associates the jars with the Shared Class Loader <strong>all</strong> BOF modules will have visibility to these classes. The original plan was not to allow this at all, but the Architect broke under pressure. This is back to the kind of jar hell that BOF tries so hard to eliminate.</p>
<p>If you decide to share jars (via Java Libraries) across modules be sure to understand that a sandboxed Java Library will be associated with the module class loaders. If you intend to communicate between your modules then any interfaces that exist in your shared jars will have a separate identity in each class loader, so if you try to use them across modules you <strong>will</strong> get <a href="http://donr7n.wordpress.com/2008/07/03/i-got-an-exception-i-hate-bof/">ClassCastExceptions</a>. If you want to do this then you need to separate out your shared interfaces from the other classes in your shared jars and put them in a distinct non-sandboxed Java Library. This will allow the interfaces to be used by all of your modules. This is a much better idea than just marking your existing Java Library as non-sandboxed which will have the effect of introducing all your implementation classes into the Shared Class Loader too.</p>
<p>Both Jar Defs and Java Libraries can be hot deployed. Because a Jar Def is associated with only one module its hot deployment has a localized effect. If a Java Library is shared, on the other hand, its hot deployment affects all modules that share the Java Library.</p>
<p>Jar Defs should always belong to the containing module so they will appear in the same Composer project as the module itself.</p>
<p>Java Libraries can be shared and so projects containing consuming modules might need to reference another Composer project in order to access the Java Library. That referenced project might be a “primary” module project, or conceivably a project that contains only the Java Library – the choice is yours. The important thing is that the Java Library must exist in only <strong>one</strong> Composer project.</p>
<p>The things to consider when making choices are hot deployment issues, class visibility issues, and avoiding redundant jars wherever possible.</p>
<p>Source: <a href="http://donr7n.wordpress.com/2009/01/20/jar-defs-and-java-libraries/">http://donr7n.wordpress.com/2009/01/20/jar-defs-and-java-libraries/</a></p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/26/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/26/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/26/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=26&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/jar-defs-and-java-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>An aspect implementation template</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/an-aspect-implementation-template/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/an-aspect-implementation-template/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:49:51 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[Aspects]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=23</guid>
		<description><![CDATA[A few points to note: Use @Override whenever you override a method. Unrecognized typos (meaning no override!) are difficult to debug. Stateful aspects must have a name that follows Documentum type naming conventions. Do not use constructor logic – use onObjectReinit (after aspects are attached or detached) or init (after initial object loading). import com.documentum.fc.client.*; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=23&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few points to note:</p>
<ul>
<li>Use @Override whenever you override a method. Unrecognized typos (meaning no override!) are difficult to debug.</li>
<li>Stateful aspects must have a name that follows Documentum type naming conventions.</li>
<li>Do not use constructor logic – use onObjectReinit (after aspects are attached or detached) or init (after initial object loading).</li>
</ul>
<p><code><br />
import com.documentum.fc.client.*;<br />
import com.documentum.fc.common.*;<br />
import java.util.*;</p>
<p>@SuppressWarnings("serial")<br />
public class MyAspect extends DfSysObject implements IDfDynamicInheritance [, ]<br />
{<br />
// If your aspect could never be stateful it should begin with a reverse domain name,<br />
// otherwise it should conform to type naming rules.<br />
private final static String ASPECT_NAME = "my_aspect";</p>
<p>public MyAspect() {<br />
    // Do NOT use any constructor logic. Instead initialize your instance in<br />
    // the private constructor method, which will be called just after actual construction.<br />
}</p>
<p>@Override<br />
protected void init() throws DfException {<br />
    super.init();<br />
    constructor();<br />
}</p>
<p>@Override<br />
public void onObjectReinit(Set&lt;String&gt; attached, Set&lt;String&gt; detached) throws DfException {<br />
    super.onObjectReinit(attached, detached);<br />
    if (attached.contains(ASPECT_NAME))<br />
        onAttach();<br />
    if (detached.contains(ASPECT_NAME))<br />
        onDetach();<br />
}</p>
<p>private void constructor() {<br />
    // TODO: Perform constructor-like behavior here<br />
}</p>
<p>private void onAttach() throws DfException {<br />
    constructor();</p>
<p>    // TODO: Add code appropriate for when your aspect has just been attached.<br />
    // The object is in a valid initialized state at this point.<br />
    DfLogger.debug(this, "{0}::onAttach", new String[] { ASPECT_NAME }, null);<br />
}</p>
<p>private void onDetach() throws DfException {<br />
    // TODO: Add code appropriate for when your aspect has just been detached.<br />
    // The object is in a valid initialized state at this point.<br />
    DfLogger.debug(this, "{0}::onDetach", new String[] { ASPECT_NAME }, null);<br />
}</p>
<p>    // TODO: implement your interface methods here.</p>
<p>    // TODO: implement your sysobject overrides here.<br />
}</p>
<p></code></p>
<p>Source:<a href="http://donr7n.wordpress.com/2008/07/07/an-aspect-implementation-template/">http://donr7n.wordpress.com/2008/07/07/an-aspect-implementation-template/</a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=23&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/an-aspect-implementation-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>Attaching and detaching aspects</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/attaching-and-detaching-aspects/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/attaching-and-detaching-aspects/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:47:47 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[Aspects]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=21</guid>
		<description><![CDATA[The first thing you need to understand is that the Java object you get from IDfSession.getObject or IDfSession.newObject is not the actual persistent object – it is a proxy object (google Java dynamic proxies for more info). It looks like a regular old persistent object to you, but it isn’t. Whenever you attach (or detach) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=21&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The first thing you need to understand is that the Java object you get from IDfSession.getObject or IDfSession.newObject is not the actual persistent object – it is a proxy object (google Java dynamic proxies for more info). It looks like a regular old persistent object to you, but it isn’t.</p>
<p>Whenever you attach (or detach) an aspect you might end up changing the prototype of the persistent object. This would be the case if an aspect implemented an orthogonal interface. DFC will actually rebuild the class files (yes, the byte code) that relates to the type [+aspects] in question. This is an expensive operation and there are optimizations to minimize the number of times this is done.</p>
<p>Of course, your existing persistent object is already loaded from the old class definition and this can’t change, so you end up with a “stale” persistent object reference.</p>
<p>So, after attaching or detaching an aspect you <strong>must</strong> refetch the object immediately. The refetched object will implement any new interfaces and will not implement any removed interfaces. Any unsaved changes you made will be preserved. The sequence should be something like this …</p>
<p><code><br />
if (obj instanceof IDfAspects) {<br />
    (IDfAspects) obj).attachAspect(“foo”, null);<br />
    obj = session.getObject(obj.getObjectId());<br />
    ((IFoo) obj).foo();<br />
}<br />
</code></p>
<p>The above code fragment is suitable when you are a regular client (eg. application code). However, if you are executing in the context of a TBO or aspect method on obj itself when you try to attach or detach the aspect, then you are executing on the “old” object that is about to become stale, and the new object has not been built yet, so getObject just returns the same old disappointing Java object. You then have to use callbacks. Callbacks are invoked just before the original entry point to the outermost TBO or aspect method invocation returns and have a kind of implicit getObject associated with them. You can think of them as delayed client code. Do not do getObject within a callback – the object reference your callback is given is the new, beautiful, predictable Java object. The code sequence would then look something like this …</p>
<p><code><br />
this.attach/detachAspect(“foo”, myCallback); // myCallback invokes foo()<br />
// You cannot use foo here – the Java object is not ready. Refetch won’t help either.<br />
</code></p>
<p>The callback implementation would look something like this …</p>
<p><code><br />
void doPostAttach/Detach(IDfPersistentObject obj) {<br />
    ((IFoo) obj).foo(); // ok, obj is fully cooked here<br />
}<br />
</code></p>
<p>Also note that not all objects can have aspects attached. All sysobjects and its subclasses can, but most non-sysobjects don’t support aspects. Any object that does, however, will implement the IDfAspects interface (DFC sees to this automatically). A non-sysobject type would only support aspects if it were created with the DQL syntax …</p>
<p><code><br />
alter type ... allow aspects</p>
<p></code></p>
<p>Source:<a href="http://donr7n.wordpress.com/2008/07/07/attaching-and-detaching-aspects/">http://donr7n.wordpress.com/2008/07/07/attaching-and-detaching-aspects/</a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=21&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/attaching-and-detaching-aspects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>Implementing Java server methods as BOF modules</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/implementing-java-server-methods-as-bof-modules/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/implementing-java-server-methods-as-bof-modules/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:45:21 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[BOF]]></category>
		<category><![CDATA[methodserver]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=19</guid>
		<description><![CDATA[There are a couple of reasons you might want to deploy Java server methods as BOF modules. You want to deploy the implementation in the same dar/docapp as the dm_method definition You want to avoid jar hell by avoiding the java_methods directory You want hot deployment for your method implementation In order to deploy your [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=19&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p>There are a couple of reasons you might want to deploy Java server methods as BOF modules.</p>
<ul>
<li>You want to deploy the implementation in the same dar/docapp as the dm_method definition</li>
<li>You want to avoid jar hell by avoiding the java_methods directory</li>
<li>You want hot deployment for your method implementation</li>
</ul>
<p>In order to deploy your method as a module you have to do the following:</p>
<ul>
<li>Define a module by subclassing DfSingleDocbaseModule or have your module implement the marker interface IDfModule directly</li>
<li>Have your module implement IDfMethod – <strong>not</strong> IDmMethod (no interface jar)</li>
<li>Put the module name – <strong>not</strong> the class name – in the command_verb of the dm_method object</li>
<li>Make your module self-contained. You have no visibility to classes in the java_methods directory so you must be able to find anything you need in one or more BOF modules.</li>
</ul>
<p>That’s it.</p>
<p>Source: <a href="http://donr7n.wordpress.com/2008/10/20/methods-as-bof-modules/">http://donr7n.wordpress.com/2008/10/20/methods-as-bof-modules/</a></p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=19&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/implementing-java-server-methods-as-bof-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>Writing Java server methods that invoke DFS services</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/writing-java-server-methods-that-invoke-dfs-services/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/writing-java-server-methods-that-invoke-dfs-services/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:42:59 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[dfs]]></category>
		<category><![CDATA[methodserver]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=17</guid>
		<description><![CDATA[Sometimes you want to invoke DFS services from within a Java Method Server method implementation. First you should understand how to implement a method as a BOF module. What remains is to package your module correctly for DFS service invocation. In order to do this we suggest the following: Create a sandboxed Java library containing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=17&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to invoke DFS services from within a Java Method Server method implementation.</p>
<p>First you should understand <a href="http://donr7n.wordpress.com/2008/10/20/methods-as-bof-modules/">how to implement a method as a BOF module</a>.</p>
<p>What remains is to package your module correctly for DFS service invocation. In order to do this we suggest the following:</p>
<ol>
<li>Create a sandboxed Java library containing the minimum classpath for your chosen DFS client, as described in the DFS SDK doc. This library can be included in all method modules that invoke DFS services.</li>
<li>Create a sandboxed Java library containing your generated client classes for each service that you consume. Each library can be included in all method modules that invoke the corresponding DFS service. If you only have one or two methods then these classes could be folded into your implementation jar instead.</li>
<li>Create an implementation jar for your method implementation.</li>
</ol>
<p>Be sure that your method implementation observes <a href="http://donr7n.wordpress.com/2008/11/25/calling-dfs-from-within-a-bof-module/">the correct thread context class loader handling</a> and you should be good to go. Here’s a little base class that takes care of that for you (note that this class <strong>must</strong> be in either your implementation jar or a sandboxed java library or it just won’t work).</p>
<p><code><br />
package com.emc.examples;<br />
import com.documentum.fc.client.DfSingleDocbaseModule;<br />
import java.util.Map;<br />
import java.io.PrintWriter;<br />
public abstract class AbstractMethod extends DfSingleDocbaseModule implements IDfMethod<br />
{<br />
    public final int execute(Map parameters, PrintWriter writer) throws Exception {<br />
        ClassLoader tccl = Thread.currentThread().getContextClassLoader();<br />
        try {<br />
            ClassLoader moduleLoader = AbstractMethod.class.getClassLoader();<br />
            Thread.currentThread().setContextClassLoader(moduleLoader);<br />
            return doMethod(parameters, writer);<br />
        }<br />
        finally {<br />
            Thread.currentThread().setContextClassLoader(tccl);<br />
        }<br />
    }<br />
    public abstract int doMethod(Map parameters, PrintWriter writer) throws Exception;<br />
}</p>
<p></code></p>
<p>Source: <a href="http://donr7n.wordpress.com/category/methodserver/">http://donr7n.wordpress.com/category/methodserver/</a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=17&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/writing-java-server-methods-that-invoke-dfs-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>Does Documentum BPM 6.5 Offer Anything New?</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/does-documentum-bpm-6-5-offer-anything-new/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/does-documentum-bpm-6-5-offer-anything-new/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:40:19 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Documentum]]></category>
		<category><![CDATA[bpm]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=15</guid>
		<description><![CDATA[We recently created a Healthcare application on Documentum Process Suite 6.5. We used the latest versions of Taskspace, Process Builder, Process Integrator, Process Engine, Business Activity Monitor, and the new Composer. Here’s my review of Process Suite D6.5… As the former Group Product Manager for the Documentum Process Suite, I was pleased to see the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=15&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We recently created a Healthcare application on Documentum Process Suite 6.5. We used the latest versions of Taskspace, Process Builder, Process Integrator, Process Engine, Business Activity Monitor, and the new Composer. Here’s my review of Process Suite D6.5…</p>
<p>As the former Group Product Manager for the Documentum Process Suite, I was pleased to see the improvements in the product. Of course, I was disappointed with some shortfalls on the quality of the BAM (formerly Proactivity) products, which until now, to my opinion, has not met the quality required by its customers and the industry.</p>
<p>My favorite addition to the package was the high-fidelity forms. For those who have used previous versions of the Documentum Forms Builder, I’m sure you have the scars to prove it.  The good news is, in Forms Builder D6.5, a lot of bugs have been finally fixed and works much better with the latest version of Taskspace. With the high-fidelity forms capability, Forms Builder is now a much better product. So if you’re wondering if you should attempt to use Forms Builder D6.5 or migrate your current Webtop to Taskspace with Forms, I strongly suggest you do it. You’ll be pleasantly surprised. What used to take us days &amp; even weeks to develop on WDK with Webtop, only took minutes of configuration on Taskspace.</p>
<p>Just like any other software though, Taskspace D6.5 has its limitations. Some of which, I will attempt to discuss in this blog. So still expect to get some challenges if you do not know the pitfalls of this version.</p>
<p>With Taskspace, you can easily configure the search, folder view, file view, attribute display, and content image display components. In addition, Taskspace has a much better transactional perspective versus Webtop. Some of the limitations that you must be aware of is its lack of menu options. The fly-over menu options are very limited and do not really fit well in the overall usability perspective. As for the toolbar menu options…it does not exist. You’re better off customizing the folder and node structure to launch custom components. There is a built-in Adobe Reader, which automatically displays the content images. With the built-in viewer, you’ll be limited to viewing PDF and TIFF images only. All other content formats will be viewed using the application assigned to the document format, which is launched outside Taskspace. You do have the option to buy one of the supported viewers &#8211; Brava and Snowbound where you have additional features like annotations and viewing various content formats. For our healthcare application, we created a custom interface to support a shareware viewer for DICOM images.</p>
<p>One of my favorite feature with the high-fidelity form is the ability to use a paper form images as the interface for data entry and review. By using this high-fidelity feature, adaptability to the new application is improved. If you’re converting a paper-based application, you can use high-fidelity forms to have the exact image of your paper forms. This allows you to convert your paper-based system onto a mirrored system in a more efficient electronic application. Another cool feature with high fidelity forms is the ability to print it, use it offline and re-import (or scan) it using a built-in barcode to automatically categorize it. Per my experience, these features greatly reduces the total cost of ownership and accelerates your ROI on your investment.</p>
<p>The Process Builder now allows multiple entry points. For those who have tried Process Builder D6.5, you’ll notice that the Start activity template is still there. Unfortunately, even if you do not need it, it cannot be removed. It is a product bug, which I believe will eventually be fixed in the succeeding SP releases. The new builder also has the ability to group activities. This is a feature that you’ll see in other BPM products with Oracle and IBM. With D6.5, the builder also provides better error handling for integration problems such as connecting via Web Service. The queue management feature now has skill set capabilities. In the previous versions, skill level was available allowing you to set controls based on the user’s skill levels like beginner, intermediate, and professional levels. With skill sets, you have a better feature with matching skills against tasks. Configuring queue management needs a lot of work but the feature is extremely powerful.</p>
<p>Managing rules is still a limitation of the Documentum Process Suite. It supports rules engine products like Ilog (which is now owned by IBM), Corticon, and <a title="RulesMachine" href="http://www.trendsglobal.com/products.html#rulesmachine" target="_blank">RulesMachine</a>. There is the basic if-then-else capability and built-in policy configurations for managing queues, content, automated tasks, and people tasks. However, for handling complex rules (such as bank fees, loan rules, and insurance policies) with multiple permutations, you will need one of the rules engines.</p>
<p>As for the BAM products (which were an acquisition from Proactivity),  the new version has fixed a lot of bugs from the 5.3 versions. The 5.3 version was developed with a loosely-coupled design to help get the products integrated at the fastest possible time. Unfortunately, for those who attempted to use the 5.3 and D6 versions, you would (like me) have really deep cuts…some of which are still bleeding. The good news is, BAM D6.5 removed the need for the unreliable Jboss Portal, often failing Documentum publishing job, poorly designed Process Analyzer and report designer, the problematic Observation Point activity template. With the new version, the reports are viewable on Taskspace with an easier configuration tool that actually works. The reports can be easily be configured with the updated report builder and built-in Crystal Report. Unfortunately, the installation and configuration is still difficult, synchronization of transactions still fail and creation of custom business reports are still limited. Perhaps in the SP versions, most of these bugs are eventually fixed. The Process Analyzer, Simulator, and Navigator were not upgraded and do not really work in harmony to provide a complete Process Lifecycle model. Until then, do not expect much from Documentum BAM.</p>
<p>The biggest challenge you need to address though is to determine the type of business reports that makes sense for you. Chances are, most of your reports are often immature in design and are constantly refined using tools like Excel. This begs the question…what is the TOC and ROI of using BAM versus good old fashion Excel? I would love to hear your opinion… Perhaps, Documentum BAM can eventually address that challenge correctly.</p>
<p>As for my wish list, I would like to see Taskspace upgrade to a Web 2.0 interface, which is the direction CenterStage and DAM 6.5 have taken. I would also like to have Documentum workflow web services that can be integrated with other applications.</p>
<p>Source: Erwin Chiong <a href="http://bpmchat.com/2008/11/08/does-documentum-bpm-65-offer-anything-new/">http://bpmchat.com/2008/11/08/does-documentum-bpm-65-offer-anything-new/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=15&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/does-documentum-bpm-6-5-offer-anything-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>Hibernate Sessions in Two Tier Rich Client Applications</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/hibernate-sessions-in-two-tier-rich-client-applications/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/hibernate-sessions-in-two-tier-rich-client-applications/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:34:52 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=12</guid>
		<description><![CDATA[  One of the most populare articles in this blog so far ist the one about, well: Hibernate Sessions in Two Tier Rich Client Applications. Although the original article is writen in german I keep refering to this article, even in english communities. Therefore I decided to break my habit of writing articles in german [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=12&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2><a title="Hibernate Sessions in Two Tier Rich Client Applications" href="http://blog.schauderhaft.de/2008/09/28/hibernate-sessions-in-two-tier-rich-client-applications/"></a> </h2>
<div>
<p>One of the most populare articles in this blog so far ist the one about, well: <a href="http://blog.schauderhaft.de/2007/12/17/hibernate-sessions-in-fat-client-anwendungen/">Hibernate Sessions in Two Tier Rich Client Applications</a>. Although the original article is writen in german I keep refering to this article, even in english communities. Therefore I decided to break my habit of writing articles in german only and provide a english version which you are reading right now.</p>
<p>This is NOT a direct translation so there might be some differnces in scope, focus and detail.</p>
<p>Everybody working with Java and Databases is probably aware of Hibernate. It is a great solution for mapping a database schema to a object model. It is used in hundreds of applications. So on my current project we decided to use it as well. But big surprise. While Support in the user forum of hibernate is pretty good most of the time we hit one kind of a problem which had no apropriate solution available: How to handle Sessions in a Two Tier Hibernate Application (Swing or SWT typically).</p>
<p>How could such a essential problem be unsolved? Well Rich Client Applications are not hip anymore. Everybody goes for web applications and in that context the session handling is well understood and there is a easy straight forward solution that works in most cases: On each request open a session, do all your work including constructing the result (e.g. JSP) , close the session. But there is no equivalent for a request in a swing application. And since Rich Client Applications are kind of old fashioned nobody bothers to find (and write about) a clean solution for this problem.</p>
<p>We tried a lot of things, starting with the antipattern of a single session per application. This doesn’t work at all for any kind of serious app for the following reasons:</p>
<ul>
<li>No transaction control between different parts of the application. When you flush/commit a session, everything gets flushed. So imagine a application with two open edit frames. The user hits save in one frame and surprise, her half done changes in the other frame get saved as well. Not good.</li>
<li>Memory Leak. The Hibernate Session keeps track of every entity ever loaded by that session. So if you don’t close the session from time to time the session will grow until the application blows up or the whole database is contained in the session. If nothing else this will cause performance issues.</li>
</ul>
<p>Of course if you write a really small simple application this might work, but not for us. As said before we tried a lot of things to solve our problem in the assumption that our requirements are so common that it can’t be hard to find the solution. We were wron. So if the solution to a problem isn’t easy to find, what should be your first step? Wrong (probably)! Your first step should be to exactly identify the problem. In this case this meant: What are the requirements we had? What are the relevant features/limitations of Hibernate? The requirements were:</p>
<ul>
<li>We want Lazy Loading: Lazy Loading is a real powerfull feature whe working with a rich domain model (as we did) especially in a Swing Application. You just display what every attribute you can reach by any kind of object navigation, hibernate will ensure the data is there. Awesome. This was one of the main selling points for Hibernate vs. plain JDBC. So it wasn’t realy an option to loose it.</li>
<li>Different views of the same entity should show the same state. So if you edit an Object the same Object shown in some kind of list-view should show the updated state immediatly.</li>
<li>It should be obvious for the user what is going to be saved when she hits the save button.</li>
<li>The whole mechanism must be fairly easy to use, since the team was growing and not everybody was a hibernate expert. Also lazy loading problems are sometimes hard to debug and fix.</li>
</ul>
<p>The relevant properties of the Hibernate session are</p>
<ul>
<li>For lazy loading to work an entity must be attached to a open session.</li>
<li>A entity wich contains at least one collection (which are well above 50% of our class) can only be attached to one session at a time.</li>
<li>A session keeps a reference to any entity it loads, until the entity get evicted or the session gets closed.</li>
<li>A Hibernate session guarantees to return the same instance everytime a specific entity is requested.</li>
</ul>
<p>If you look at it in this compact form it is rather obvious that you can’t have your cake and eat it too. The automatic refresh in all views of an object would be easily implemented, when there is only one session. But we simply couldn’t do this. So the decision was made that the automatic refresh is (obviously) not as important as clean transactional control plus lazy loading. So we will have more then one session. But which part of the application is using which session? The Hibernate site uses the term ‘Unit-of-Work’. Each unit of work should be contained in its own session. But this is basically back to step one. A request in a webapp ist a unit of work, but where is a unit of work in a rich client app? Imagine this example: The user fires up the application and opens a search dialog resulting in a list of objects. Clearly we are accessing the database, so we just startet a unit of work. Now she double clicks an item in the list. The entity gets opened in a editor, she edits it and hits save. Work commited, transaction closed, unit of work ended. Wow, thats easy, isn’t it? No it isn’t: She clicks on a different item, edits it, saves it. So now we have opened one session and closed two sessions. Not good.</p>
<p>The answer is actually fairly easy once found: Use one session per frame/internal frame/dialog. Modal dialogs use the session of the frame the got starteted from. Background tasks get their own session. The critical point is the transfer of objects from one frame to another. It is tempting to just pass the object but then you have a object from the wrong session in the frame. Instead pass just the Id (the primary key) and use that to load the object in the new session. This approach solved most of our problems nicely.</p>
<p>Most problems? Yes and no. We have some things that we don’t like to much. I think I know how to solve them but I haven’t implemented them yet. So I can’t really promis anything.</p>
<ul>
<li>Instant refresh in other (readonly) views. When editing a object the changed state is not represented in other views of the same object. This could be fixed by a hibernate interceptor or event listener. It would listen for update events, then check if this entity is contained in any other session, check if that session is read only and if so trigger a refresh of that object. We haven’t implemented that simple due to time constraints.</li>
<li>Saving in background. Most of the stuff we do is simple object editing, but on fairly complex object graphs. So saving an object to DB may take some time. Due to the tight integration of Frames and session we can’t easily delegate this work to a background thread. The same is true of lazy loading. In long lists of complex objects scrolling to new cells for the first time might cause some lag, because lazy loading happens in the Event Handling Thread. The first part should be fairly easy to fix:Open a new Session, find the dirty Objects, merge the dirty Objects in the new Session, do a flush of the new session in a background thread. One just has to make sure the background thread uses its own instances, not the same instances as the original frame/session. The lazy loading in background is more difficult to solve. For almost everything in the GUI we use a <a href="http://www.jgoodies.com/index.html">JGoodies</a> PresentationModel and the associated ValueModels, so the swing objects don’t access directly any attributes of our Hibernate entities. These ValueModel could be used to implement a seperation of two differnt threads: The Swing Event Handling Thread on one side and a seperate thread for all the model work, including lazy loading. But this would mean the whole application is split in two threads, instead of the normal aproach of having one main thread and a couple of worker threads for special work. I think it should be feasibly and actually enforces a very strict and clean architecture, and result in a highly responsive gui, but it would also be a lot of (debugging) work and as everybody knows: Concurrency is hard. So we decided that we don’t need it in this application.</li>
</ul>
<p>If you are going to implement this kind of session handling I strongly suggest to use a director/mediator pattern for all your frames. While always a good idea, it becomes important in this case because it gives you a well defined spot to do your session handling. And of course you should be aware of the alternatives:</p>
<ul>
<li>Go with a single long living session. Only feasable with smallish applications</li>
<li>Kick Lazy Loading and close your session after retrieving your objects. This loses many of the interesting benefits hibernate offers.</li>
</ul>
<p>In any case I how this write up shed some light on the issues and helped to make a informed decission.</p>
<p>Source : <a href="http://blog.schauderhaft.de/2008/09/28/hibernate-sessions-in-two-tier-rich-client-applications/">http://blog.schauderhaft.de/2008/09/28/hibernate-sessions-in-two-tier-rich-client-applications/</a></p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=12&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/hibernate-sessions-in-two-tier-rich-client-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>
	</item>
		<item>
		<title>IceFaces 2.0 Alpha</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/icefaces-2-0-alpha/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/icefaces-2-0-alpha/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:28:34 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[ajaxpush]]></category>
		<category><![CDATA[icefaces]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[jsf2]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=7</guid>
		<description><![CDATA[I&#8217;m very pleased to announce that ICEfaces 2.0 &#8211; Alpha 1 is now available for download. This inaugural development milestone release of ICEfaces 2.0 provides the fundamental capability of running the next-generation ICEfaces core on the Mojarra JSF 2.0.1 runtime. You can plug the icefaces.jar into your existing JSF2 application and immediately receive some of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=7&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce that ICEfaces 2.0 &#8211; Alpha 1 is now available for <a href="http://www.icefaces.org/main/downloads/os-downloads.iface">download</a>.</p>
<p>This inaugural development milestone release of ICEfaces 2.0 provides the fundamental capability of running the next-generation ICEfaces core on the Mojarra JSF 2.0.1 runtime. You can plug the icefaces.jar into your existing JSF2 application and immediately receive some of the benefits of ICEfaces Direct-to-Dom rendering, such as providing incremental page updates without the need to specify the JSF 2 &#8220;f:ajax&#8221; tag. A sample application is included demonstrating ICEfaces 2 with JSF 2 (&#8220;h:&#8221;) standard components, and Ajax Push.</p>
<p>Also included in this release is the initial implementation of the ICEfaces 1.x compatibility libraries, along with sample applications that demonstrate this capability. The ICEfaces 1.x compatibility libraries are used to readily port your existing JSF 1.2 / ICEfaces 1.8 applications to JSF 2.0 / ICEfaces 2.</p>
<p>See the <a href="http://www.icefaces.org/releasenotes/ICEfaces-2.0.0-Alpha1-RN.html">Release Notes</a> for all the details.</p>
<p>We are planning to have another significant ICEfaces 2 milestone release, featuring the beginnings of our all-new ICEfaces 2 component suite, before the end of this year, so stay tuned!</p>
<p>Source: <a href="http://www.icefaces.org">www.icefaces.org</a> <a href="www.icefaces.org"><img class="alignnone size-full wp-image-8" title="icefaces" src="http://stephanodesign.files.wordpress.com/2009/11/icefaces1.jpg?w=450" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=7&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/icefaces-2-0-alpha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>

		<media:content url="http://stephanodesign.files.wordpress.com/2009/11/icefaces1.jpg" medium="image">
			<media:title type="html">icefaces</media:title>
		</media:content>
	</item>
		<item>
		<title>IceFaces 1.8.2</title>
		<link>http://stephanodesign.wordpress.com/2009/11/16/icefaces-1-8-2/</link>
		<comments>http://stephanodesign.wordpress.com/2009/11/16/icefaces-1-8-2/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:25:23 +0000</pubDate>
		<dc:creator>Stefan</dc:creator>
				<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[icefaces]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://stephanodesign.wordpress.com/?p=4</guid>
		<description><![CDATA[ICEfaces 1.8.2 is now available for download, SVN repository checkout, or via Maven public repository. ICEfaces 1.8.2 is an official maintenance release that includes 165 fixes and improvements. Notable changes include: All-new support for &#8220;cookieless&#8221; mode operation for synchronous ICEfaces applications (deployed to browsers with cookies disabled). Enhanced keyboard navigation for the menuBar, menuPopup, panelCollapsible, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=4&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ICEfaces 1.8.2 is now available for <a href="http://downloads.icefaces.org/" target="_new">download</a>, <a href="http://www.icefaces.org/main/community/svninfo.iface" target="_new">SVN repository</a> checkout, or via <a href="http://www.icefaces.org/JForum/posts/list/14793.page" target="_new">Maven public repository</a>.</p>
<p>ICEfaces 1.8.2 is an official maintenance release that includes 165 fixes and improvements. Notable changes include:</p>
<li>All-new support for &#8220;cookieless&#8221; mode operation for synchronous ICEfaces applications (deployed to browsers with cookies disabled).</li>
<li>Enhanced keyboard navigation for the menuBar, menuPopup, panelCollapsible, panelTabSet, and tree components.</li>
<li>The panelTab component now supports an optional label facet for defining arbitrarily complex labels.</li>
<li>Enhanced dataExporter: define which columns &amp; rows to export, seamless operation with dataPaginator, portlet support, and improved robustness.</li>
<li>Improved panelTooltip: smarter positioning, mouse tracking, and customizable display event triggers (hover, click, etc.).</li>
<li>Support for nested modal panelPopups.</li>
<li>The inputFile component now supports optional &#8220;autoUpload&#8221; mode.</li>
<li>The graphicImage component now supports all ICEfaces Resource APIs for specifying image resources.</li>
<li>The outputResource component now has improved special character support for resource file-names.</li>
<li>Rendering performance optimizations have been made to the dataTable, panelGroup, panelSeries, and menuBar components.</li>
<li>Updated Component Showcase sample application illustrating new component capabilities.Please read the <a href="http://www.icefaces.org/releasenotes/icefaces-1.8.2-RN.html" target="_new">Release Notes</a> (also included in the release bundle) for details on new features, known issues, and other notes.</li>
<p>Source: <a href="http://www.icefaces.org">www.icefaces.org</a><a href="www.icefaces.org"><img class="alignnone size-full wp-image-5" title="icefaces" src="http://stephanodesign.files.wordpress.com/2009/11/icefaces.jpg?w=450" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stephanodesign.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stephanodesign.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stephanodesign.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stephanodesign.wordpress.com&amp;blog=10531519&amp;post=4&amp;subd=stephanodesign&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stephanodesign.wordpress.com/2009/11/16/icefaces-1-8-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/833555b455de564d87a387ad5c7e0b46?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">stephanodesign</media:title>
		</media:content>

		<media:content url="http://stephanodesign.files.wordpress.com/2009/11/icefaces.jpg" medium="image">
			<media:title type="html">icefaces</media:title>
		</media:content>
	</item>
	</channel>
</rss>
