<?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/"
	>

<channel>
	<title>Nils Preusker</title>
	<atom:link href="http://www.nilspreusker.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.nilspreusker.de</link>
	<description>pragmatic technologist</description>
	<lastBuildDate>Mon, 22 Oct 2012 12:42:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Lightweight BPM and SOA</title>
		<link>http://www.nilspreusker.de/?p=420</link>
		<comments>http://www.nilspreusker.de/?p=420#comments</comments>
		<pubDate>Fri, 28 Sep 2012 13:16:54 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=420</guid>
		<description><![CDATA[Here is the presentation from my &#8220;Lightweight BPM and SOA&#8221; talk at the SOA, Cloud and Service Technology Symposium in London this Monday: http://nilspreusker.de/lightweight-bpm-and-soa Use the space bar or arrow keys to navigate. Enjoy! &#160;]]></description>
				<content:encoded><![CDATA[<p>Here is the presentation from my &#8220;Lightweight BPM and SOA&#8221; talk at the SOA, Cloud and Service Technology Symposium in London this Monday: <a title="http://nilspreusker.de/lightweight-bpm-and-soa" href="http://nilspreusker.de/lightweight-bpm-and-soa" target="_blank">http://nilspreusker.de/lightweight-bpm-and-soa</a></p>
<p>Use the space bar or arrow keys to navigate.</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=420</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript &#8220;EE&#8221;</title>
		<link>http://www.nilspreusker.de/?p=408</link>
		<comments>http://www.nilspreusker.de/?p=408#comments</comments>
		<pubDate>Mon, 23 Apr 2012 08:38:05 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[JAX-RS]]></category>
		<category><![CDATA[jax2012]]></category>
		<category><![CDATA[publications]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=408</guid>
		<description><![CDATA[Just published an article on JavaScript in professional software projects at http://it-republik.de/jaxenter/news/JavaScript-EE-062649.html. It&#8217;s in German, but hopefully still an interesting read for some of you!]]></description>
				<content:encoded><![CDATA[<p>Just published an article on JavaScript in professional software projects at <a title="JavaScript EE" href="http://it-republik.de/jaxenter/news/JavaScript-EE-062649.html" target="_blank">http://it-republik.de/jaxenter/news/JavaScript-EE-062649.html</a>. It&#8217;s in German, but hopefully still an interesting read for some of you!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=408</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TextMate shortcuts for HTML and Javascript</title>
		<link>http://www.nilspreusker.de/?p=394</link>
		<comments>http://www.nilspreusker.de/?p=394#comments</comments>
		<pubDate>Wed, 24 Aug 2011 10:40:44 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=394</guid>
		<description><![CDATA[Since I keep forgetting them&#8230; here is a list of the shortcuts I find most useful when editing HTML and Javascript documents in TextMate: Creating a HTML document: type &#8220;doctype&#8221; and hit tab, you&#8217;ll see a dropdown to select the doctype type html and hit ctrl + shift + &#60; inside the html tags, type [...]]]></description>
				<content:encoded><![CDATA[<p>Since I keep forgetting them&#8230; here is a list of the shortcuts I find most useful when editing HTML and Javascript documents in TextMate:</p>
<p><strong>Creating a HTML document:</strong></p>
<ul>
<li>type &#8220;doctype&#8221; and hit tab, you&#8217;ll see a dropdown to select the doctype</li>
<li>type html and hit ctrl + shift + &lt;</li>
<li>inside the html tags, type &#8220;head&#8221; and hit tab</li>
<li>inside the generated &#8220;head&#8221; element and after the title, type &#8220;link&#8221; and hit tab to generate a stylesheet reference</li>
<li>then type &#8220;scriptsrc&#8221; and hit tab, this will generate a link to an external script</li>
<li>for a regular script tag inside the HTML body, type &#8220;script&#8221; and hit tab</li>
</ul>
<p>To be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=394</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone location data</title>
		<link>http://www.nilspreusker.de/?p=373</link>
		<comments>http://www.nilspreusker.de/?p=373#comments</comments>
		<pubDate>Sat, 30 Apr 2011 16:22:14 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[maps]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=373</guid>
		<description><![CDATA[Most of you have probably read about the fact that the iPhone stores location related information in a local file. The file is transferred to the computer every time the iPhone is connected and synced via iTunes. If you&#8217;re interested in visualizing the data, there is an application called iPhone tracker available at http://petewarden.github.com/iPhoneTracker. The [...]]]></description>
				<content:encoded><![CDATA[<p>Most of you have probably read about the fact that the iPhone stores location related information in a local file. The file is transferred to the computer every time the iPhone is connected and synced via iTunes. If you&#8217;re interested in visualizing the data, there is an application called iPhone tracker available at <a href="http://petewarden.github.com/iPhoneTracker" target="_blank">http://petewarden.github.com/iPhoneTracker</a>. The authors of the software, Alasdair Allan and Pete Warden, didn&#8217;t only decide to open source their work, but also wrote up quite a bit of documentation about the data and how to access it. They promise that &#8220;<strong>none</strong> of your data ever leaves your machine&#8221; but go on to &#8220;recommend inspecting the source code if you&#8217;re a developer, or even just relying on <a href="http://petewarden.github.com/iPhoneTracker/#2" target="_blank">the directions that allow you to inspect the data</a> using standard database tools.&#8221;</p>
<p>So I thought hey, I&#8217;m a developer, so let&#8217;s see what I can do with those directions and a bit of java code&#8230; I documented the result in the little video below and also created a small google code project at <a href="http://code.google.com/p/java-location-data-converter" target="_blank">http://code.google.com/p/java-location-data-converter</a>. Right now it is just a JUnit test that generates a CSV file which you can then use to e.g. visualize the data with OpenHeatMap (<a href="http://www.openheatmap.com" target="_blank">http://www.openheatmap.com</a>). If you have an iPhone and are curious to inspect your location data, check out the <a href="http://petewarden.github.com/iPhoneTracker/#2" target="_blank">the directions to inspect the data</a>.</p>
<p>And if you&#8217;re also a java developer, check out <a href="http://code.google.com/p/java-location-data-converter/source/checkout" target="_blank">my code</a> as a starting point.</p>
<p>Have fun!</p>
<p><iframe src="http://player.vimeo.com/video/23059432?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="300"></iframe></p>
<p><a href="http://vimeo.com/23059432">iPhone location data visualized</a> from <a href="http://vimeo.com/user6924050">Nils Preusker</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=373</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POST Attributes with Restlet 2</title>
		<link>http://www.nilspreusker.de/?p=366</link>
		<comments>http://www.nilspreusker.de/?p=366#comments</comments>
		<pubDate>Thu, 28 Apr 2011 11:59:29 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[restlet]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=366</guid>
		<description><![CDATA[Since I keep forgetting how to do this, here is a code snippet to POST parameters to some URL using Restlet 2: Client restletClient = new Client(new Context(), Protocol.HTTP); Reference resourceRef = new Reference("THE URL..."); resourceRef.addQueryParameter("key", "value"); Request request = new Request(Method.POST, resourceRef); Response response = restletClient.handle(request); String responseAsText = response.getEntityAsText(); Oh, and you&#8217;ll want [...]]]></description>
				<content:encoded><![CDATA[<p>Since I keep forgetting how to do this, here is a code snippet to POST parameters to some URL using Restlet 2:</p>
<pre>Client restletClient = new Client(new Context(), Protocol.HTTP);
Reference resourceRef = new Reference("THE URL...");
resourceRef.addQueryParameter("key", "value");
Request request = new Request(Method.POST, resourceRef);

Response response = restletClient.handle(request);
String responseAsText = response.getEntityAsText();</pre>
<p>Oh, and you&#8217;ll want to add the following dependencies to your maven pom.xml (if you&#8217;re using maven&#8230;):</p>
<pre>...
&lt;dependency&gt;
  &lt;groupId&gt;org.restlet.jee&lt;/groupId&gt;
  &lt;artifactId&gt;org.restlet&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.restlet.jee&lt;/groupId&gt;
  &lt;artifactId&gt;org.restlet.ext.json&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.restlet.jee&lt;/groupId&gt;
  &lt;artifactId&gt;org.restlet.ext.httpclient&lt;/artifactId&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.restlet.jee&lt;/groupId&gt;
  &lt;artifactId&gt;org.restlet.ext.xstream&lt;/artifactId&gt;
  &lt;version&gt;2.0.1&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
  &lt;groupId&gt;org.restlet.jee&lt;/groupId&gt;
  &lt;artifactId&gt;org.restlet.ext.xml&lt;/artifactId&gt;
&lt;/dependency&gt;
...</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=366</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mail Server on Snow Leopard</title>
		<link>http://www.nilspreusker.de/?p=349</link>
		<comments>http://www.nilspreusker.de/?p=349#comments</comments>
		<pubDate>Wed, 05 Jan 2011 13:20:56 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=349</guid>
		<description><![CDATA[Sometimes it comes in handy to have a mail server running on your development machine. Since OS X 10.6 Snow Leopard actually comes with a built-in and pre-configured postfix, here is a quick how-to on starting it and making sure it runs automatically when the system boots. First we&#8217;ll launch postfix by typing the following [...]]]></description>
				<content:encoded><![CDATA[<p>Sometimes it comes in handy to have a mail server running on your development machine. Since OS X 10.6 Snow Leopard actually comes with a built-in and pre-configured postfix, here is a quick how-to on starting it and making sure it runs automatically when the system boots.</p>
<p>First we&#8217;ll launch postfix by typing the following in a terminal:</p>
<pre>sudo postfix start
</pre>
<p>To verify it runs, you can use telnet:</p>
<pre>telnet localhost 25
</pre>
<p>You should then see some output like this</p>
<pre>...
Connected to localhost.
Escape character is '^]'.
...
</pre>
<p>Hit Ctrl-] to get to the telnet&gt; prompt and type &#8220;quit&#8221; to exit. Next, we&#8217;ll make sure postfix starts when the system boots by calling launchctl load with the -w option:</p>
<pre>sudo launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist
</pre>
<p>To undo, you can simply use launchctl unload -w. You will probably get an output like</p>
<pre>org.postfix.master: Already loaded
</pre>
<p>because postfix is already running. However, postfix should now always be launched at start-up. Finally, we should add the following lines to the /System/Library/LaunchDaemons/org.postfix.master.plist file:</p>
<pre>&lt;key&gt;RunAtLoad&lt;/key&gt;
&lt;true/&gt;
&lt;key&gt;OnDemand&lt;/key&gt;
&lt;false/&gt;
</pre>
<p>That&#8217;s it, you&#8217;re done. Hope someone found this post useful!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=349</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Activiti 5.0 is here!</title>
		<link>http://www.nilspreusker.de/?p=343</link>
		<comments>http://www.nilspreusker.de/?p=343#comments</comments>
		<pubDate>Wed, 01 Dec 2010 21:37:00 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[bpmn]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=343</guid>
		<description><![CDATA[After months of intense work, Activiti 5.0 is here. Check out Tom Bayens&#8217; blog or our blog post at BPM-Guide for more details or simply go to http://activiti.org/download.html and get started right away. While you&#8217;re at it, make sure to have a look at activiti-cycle, which we&#8217;ve spent a lot of our time on at [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.activiti.org"><img class="alignnone" title="Activiti" src="http://activiti.org/images/activiti_logo.png" alt="Activiti" width="183" height="47" /></a></p>
<p>After months of intense work, Activiti 5.0 is here. Check out Tom Bayens&#8217; <a title="Tom Bayens" href="http://processdevelopments.blogspot.com/2010/12/prepare-for-impact-activiti-50-ga.html" target="_blank">blog</a> or our blog post at <a href="http://www.bpm-guide.de/2010/11/28/pimp-your-product-with-activiti/">BPM-Guide</a> for more details or simply go to <a href="http://activiti.org/download.html">http://activiti.org/download.html</a> and get started right away.</p>
<p>While you&#8217;re at it, make sure to have a look at activiti-cycle, which we&#8217;ve spent a lot of our time on at camunda lately.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=343</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN + OS X + &#8220;Umlaute&#8221;</title>
		<link>http://www.nilspreusker.de/?p=333</link>
		<comments>http://www.nilspreusker.de/?p=333#comments</comments>
		<pubDate>Tue, 23 Mar 2010 10:44:19 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=333</guid>
		<description><![CDATA[The Mac OS file system —Mac OS Extended (Journaled)— stores umlaut characters as two separate letters (i.e. &#8216;a&#8217; and &#8216;¨&#8217;). This is referred to as NFD or Normalization Form D with canonical decomposition (see &#8220;Unicode Standard Annex #15 &#8211; Unicode Normalization Forms&#8221;, http://unicode.org/reports/tr15/#Norm_Forms). This behavior can have unfortunate side effects in applications. Especially remote applications that [...]]]></description>
				<content:encoded><![CDATA[<p>The Mac OS file system —Mac OS Extended (Journaled)— stores umlaut characters as two separate letters (i.e. &#8216;a&#8217; and &#8216;¨&#8217;). This is referred to as NFD or Normalization Form D with canonical decomposition (see &#8220;Unicode Standard Annex #15 &#8211; Unicode Normalization Forms&#8221;, <a href="http://unicode.org/reports/tr15/#Norm_Forms" target="_blank">http://unicode.org/reports/tr15/#Norm_Forms</a>).</p>
<p>This behavior can have unfortunate side effects in applications. Especially remote applications that work path based and interact with different operating systems can run into problems here.</p>
<p>I came across this when I tried to access a subversion repository that contained file names with German umlauts from my Mac. I am running subversion 1.6.5 and when I check out a file with an umlaut in its name, executing &#8220;svn stat&#8221; will list the file twice, once as missing (with an &#8216;!&#8217;) and once as unversioned (with a &#8216;?&#8217;). A search in the collabnet discussion forums finally confirmed that this is a know issue. The following links provide some documentation:<br />
<a href="http://www.opensimwiki.net/index.php/SVN" target="_blank">http://www.opensimwiki.net/index.php/SVN</a><br />
<a href="http://svn.apache.org/repos/asf/subversion/trunk/notes/unicode-composition-for-filenames" target="_blank">http://svn.apache.org/repos/asf/subversion/trunk/notes/unicode-composition-for-filenames</a></p>
<p>However, the subversion issues are just one specific bug. For application developers it is important to know that Unicode equivalence is a term to keep in mind. The wikipedia article (<a href="http://en.wikipedia.org/wiki/Unicode_equivalence" target="_blank">http://en.wikipedia.org/wiki/Unicode_equivalence</a>) mentions a bug in the samba protocol due to different representations of Unicode characters.</p>
<p>So, next time you come across an issue that involves a Mac and umlauts, <strong>Unicode equivalence</strong> might be the term to look for.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=333</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Serializable and serialVersionUID</title>
		<link>http://www.nilspreusker.de/?p=317</link>
		<comments>http://www.nilspreusker.de/?p=317#comments</comments>
		<pubDate>Thu, 14 Jan 2010 12:32:13 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=317</guid>
		<description><![CDATA[Here&#8217;s a question: Is a serialVerionUID required on abstract classes? My first thought: No way! If the serialVersionUID is used by the serialization mechanism to check whether some serialized data is compatible with a serializable class, abstract classes (that will never be instantiated, and thus, never be serialized directly) don&#8217;t need one! The problem is [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a question:</p>
<blockquote><p>Is a serialVerionUID required on abstract classes?</p></blockquote>
<p>My first thought: No way! If the serialVersionUID is used by the serialization mechanism to check whether some serialized data is compatible with a serializable class, abstract classes (that will never be instantiated, and thus, never be serialized directly) don&#8217;t need one! The problem is that the entire inheritance tree is checked when a class is de-serialized — and that includes abstract base classes. A simple example illustrates the problem:</p>
<p>If we have an abstract base class &#8230;</p>
<pre>import java.io.Serializable;

public abstract class Base
implements Serializable {}</pre>
<p>&#8230; and a sub-class that declares a serialVersionUID &#8230;</p>
<pre>public class Sub extends Base {
    private static final long serialVersionUID =
      -7913545780181427623L;
}</pre>
<p>&#8230; and we create an instance of the sub-class and serialize it to a file &#8230;</p>
<pre>...
Sub sub1 = new Sub();
try {
    FileOutputStream fout = new FileOutputStream("sub.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fout);
    oos.writeObject(sub1);
    oos.close();
} catch (Exception e) {
    e.printStackTrace();
}</pre>
<p>&#8230; and then we change the base class by e.g. adding an int field &#8230;</p>
<pre>import java.io.Serializable;

public abstract class Base
implements Serializable {
    int a = 0;
}</pre>
<p>&#8230; and try to de-serialize the sub-class &#8230;</p>
<pre>Sub sub2 = null;
// Load the file and de-serialize the object
try {
    FileInputStream fin = new FileInputStream("sub.dat");
    ObjectInputStream ois = new ObjectInputStream(fin);
    sub2 = (Sub) ois.readObject();
    ois.close();
} catch (Exception e) {
    e.printStackTrace();
}</pre>
<p>&#8230; we&#8217;ll get a &#8220;java.io.InvalidClassException&#8221;.</p>
<p>If we do the same thing, but define a serialVersionUID in the abstract base class, the exception would not occur. The reason for this is, that if a serialVersionUID is not explicitly declared, the JVM will calculate a default one, &#8220;based on various aspects of the class&#8221; [1]. This is a great mechanism, at first glance it even seems to be better than creating the id manually — if the class changes, these changes are automatically reflected in the generated id. But, this mechanism can differ based on the VM If you would run this example on one VM and then try to de-serialize the same &#8220;sub.dat&#8221; file with a different VM, without modifying the base class, it is possible that you would get an &#8220;InvalidClassException&#8221;, simply because the VM uses a different mechanism to calculate the default serialVersionUID. This is why it is recommended to manually declare the serialVersionUID.</p>
<p>However, this also means that, if we change a serializable class and thereby make it incompatible with previously serialized instances, we have to update the serialVersionUID!</p>
<p>Now if we think about software maintenance and data integrity, there should be a way to migrate existing serialized data to new versions of the serializable class. I&#8217;d be interested to know if there is an official recommendation for this, but didn&#8217;t investigate further yet.</p>
<p>It would also be interesting to see how OR-mapping frameworks fit into the picture. There is an interesting thread on using Serializable and what to do with the serialVersionUID in the hibernate JIRA: <a title="Hibernate JIRA issue" href="http://opensource.atlassian.com/projects/hibernate/browse/HBX-964" target="_blank">http://opensource.atlassian.com/projects/hibernate/browse/HBX-964</a></p>
<p>I&#8217;d be interested to know what others think about this, so please feel free to comment!</p>
<p>[1] <a title="Java 6 API Docs - Serializable" href="http://java.sun.com/javase/6/docs/api/java/io/Serializable.html" target="_blank">http://java.sun.com/javase/6/docs/api/java/io/Serializable.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=317</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jBPM 4.3 and Spring</title>
		<link>http://www.nilspreusker.de/?p=310</link>
		<comments>http://www.nilspreusker.de/?p=310#comments</comments>
		<pubDate>Wed, 06 Jan 2010 19:24:25 +0000</pubDate>
		<dc:creator>nils</dc:creator>
				<category><![CDATA[jBPM 4]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jBPM4]]></category>

		<guid isPermaLink="false">http://www.nilspreusker.de/?p=310</guid>
		<description><![CDATA[jBPM has just been released in version 4.3 and the spring integration has been changed. If you used to have an application that uses the spring integration of previous versions of jBPM, this might lead to exceptions like this: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'repositoryService': Requested bean is currently in creation: Is there an [...]]]></description>
				<content:encoded><![CDATA[<p>jBPM has just been released in version 4.3 and the spring integration has been changed. If you used to have an application that uses the spring integration of previous versions of jBPM, this might lead to exceptions like this:</p>
<pre>org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'repositoryService': Requested bean
is currently in creation: Is there an unresolvable circular
reference?</pre>
<p>The problem is that rather than having to declare all of jBPM&#8217;s services in your application context — like it used to be up to jBPM 4.2 —, the new spring integration provides access to them through the Process Engine. All you need in your application context is this:</p>
<pre>&lt;bean id="springHelper"&gt;
  &lt;property name="jbpmCfg" value="PATH TO YOUR jbpm.cfg.xml"&gt;
&lt;/property&gt;
&lt;/bean&gt;
&lt;bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" /&gt;</pre>
<p>Now you can inject the processEngine into your classes and retrieve jBPM&#8217;s services like this:</p>
<pre>processEngine.getExecutionService() …
processEngine.getRepositoryService() …
…</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nilspreusker.de/?feed=rss2&#038;p=310</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
