<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>jPOS.org</title>
	
	<link>http://jpos.org/blog</link>
	<description>jPOS rants, propaganda and some useful stuff.</description>
	<lastBuildDate>Sat, 31 Oct 2009 20:36:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/jpos" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>This is true</title>
		<link>http://jpos.org/blog/2009/10/this-is-true/</link>
		<comments>http://jpos.org/blog/2009/10/this-is-true/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 20:36:07 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=150</guid>
		<description><![CDATA[
Quick cross-post just to tell that I can assert this is quite true:
&#8220;Alejandro has told me the same thing – that when he does projects not related to OLS, he misses our documentation and attention to detail.&#8221;
Andy&#8217;s &#8220;Master Project Workbook&#8221; is a time saver, everything is there. Everything.
Original post here.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://andyorrock.typepad.com/.a/6a00d8341c507153ef0120a69a1fb0970c-pi" alt="docos" /><br />
Quick cross-post just to tell that I can assert this is quite true:</p>
<blockquote><p><em>&#8220;Alejandro has told me the same thing – that when he does projects not related to OLS, he misses our documentation and attention to detail.&#8221;</em></p></blockquote>
<p>Andy&#8217;s &#8220;Master Project Workbook&#8221; is a time saver, everything is there. Everything.</p>
<p>Original post <a href="http://www.andyorrock.com/2009/10/all-you-guys-ever-do-is-write-documents.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/10/this-is-true/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jPOS CMF</title>
		<link>http://jpos.org/blog/2009/08/jpos-cmf/</link>
		<comments>http://jpos.org/blog/2009/08/jpos-cmf/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 16:50:11 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=136</guid>
		<description><![CDATA[About a year ago I&#8217;ve blogged about jCard and jPTS (the jPOS-EE based Card Management System / Stored Value Engine and the jPOS Transaction Switch).
As part of the project, we defined what we called our IMF (internal message format) based on the ISO-8583 v2003 standard.

After several deployments and mapping exercises to different source (SS) and [...]]]></description>
			<content:encoded><![CDATA[<p>About a year ago I&#8217;ve blogged about <a href="http://jpos.org/blog/2008/06/jcard-and-jpts/">jCard and jPTS</a> (the jPOS-EE based Card Management System / Stored Value Engine and the jPOS Transaction Switch).</p>
<p>As part of the project, we defined what we called our IMF (internal message format) based on the ISO-8583 v2003 standard.</p>
<p><img src="http://static.jpos.org.s3.amazonaws.com/images/jPTS.jpg" alt="jPTS" width="75%" /></p>
<p>After several deployments and mapping exercises to different source (SS) and destination stations (DS), we believe that this extra message normalization layer was a good thing to do.</p>
<p><img src="http://static.jpos.org.s3.amazonaws.com/images/jPTS_Mapping.png" alt="jPTS Mapping" width="75%" /></p>
<p>We get to see jPOS based systems connected to other jPOS based systems all the time, which is a good thing and makes things easier (when the connecting parties don&#8217;t see their channel and packager configurations as some kind of secret sauce and get to kindly exchange them), but the packager/channel is just the low level plumbing, a lot of effort has to be done on the higher levels in order to get them to play nicely with each other.</p>
<p>Our jCard system already has a quite complete set of self tests that use this format, same goes for jPTS. As part of this message normalization effort we plan to morph our internal tests into a TCK.</p>
<p><a href="http://twitter.com/andyorrock">Andy</a> and <a href="http://twitter.com/dbergert">Dave</a> from <a href="http://www.olsdallas.com">Online Strategies</a> are already using<br />
<a href="http://www.andyorrock.com/2009/06/adopting-the-iso-8583-12003-standard.html">a similar format</a> and are keen to work together into merging the differences. <a href="http://twitter.com/marky1969">Mark</a> is also <a href="http://www.noded.biz">#noded</a> for this effort <img src='http://jpos.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>We are releasing this work under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0 License</a> and everybody is welcome to participate.</p>
<p>You can get the PDF version <a href="http://jpos.org/doc/jPOS-CMF.pdf">here</a> and you are very welcome to actively collaborate with the DocBook version (<a title="jPOS-CMF" href="http://github.com/ar/jPOS-CMF">http://github/ar/jPOS-CMF</a>).</p>
<p>This is by no means a perfect spec, there&#8217;s a lot of work to be done, but instead of reinventing a new spec, or coding to someone else&#8217;s proprietary spec, we encourage you to take this one as yours. You can even change the cover page (as long as you retain some due credit). Every new project will require some tweaks and addition to the spec and TCK, and we are here to make that happen fast. Feel free to <a href="http://jpos.org/contact?p=cmf-blog">contact us</a> or <a href="http://twitter.com/#search?q=%23jpos">send us a tweet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/08/jpos-cmf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s wrong with payment gateways?</title>
		<link>http://jpos.org/blog/2009/08/whats-wrong-with-payment-gateways/</link>
		<comments>http://jpos.org/blog/2009/08/whats-wrong-with-payment-gateways/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 19:49:21 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=133</guid>
		<description><![CDATA[/by apr on why-oh-why/

What&#8217;s wrong with Payment gateways?
I&#8217;ve seen this problem coming a long time ago; in my country there&#8217;s a local credit card association called POS2000. After a long long time they&#8217;ve settled on a single ISO-8583 v1987 based protocol that is a melange of several POS and host based protocols where every acquirer [...]]]></description>
			<content:encoded><![CDATA[<p><em>/by apr on why-oh-why/</em></p>
<p><img src="http://static.jpos.org.s3.amazonaws.com/images/insane.jpg" alt="" width="15%" /></p>
<p>What&#8217;s wrong with Payment gateways?</p>
<p>I&#8217;ve seen this problem coming a long time ago; in <a href="http://en.wikipedia.org/wiki/Uruguay">my country</a> there&#8217;s a local credit card association called POS2000. After a long long time they&#8217;ve settled on a single ISO-8583 v1987 based protocol that is a melange of several POS and host based protocols where every acquirer managed to bastardize the standard a little bit in order to make the POS implementor&#8217;s life a little bit worse. They did a pretty good job (at bastardizing us) and made jPOS quite better (we have now support for esoteric stuff such as the dynamic packagers that change the way we deal with a message for different message types, etc.).</p>
<p>But that&#8217;s nothing compared to web based payment gateways. The first craptastic  work I&#8217;ve got to see was presented by a local credit card acquirer/issuer. You know, the regular redirect-to-the-acquirer-site thing with OK and DECLINE URLs which were available in hidden fields, as if a malicious user couldn&#8217;t read the page source code and hand-craft the OK-url to continue shopping. Come on!</p>
<p>More acquirers followed the trend and provided similar pathetic implementations that very few merchants and less users actually use; but things get worst, thanks to the mouse and some visual tools, there&#8217;s a whole new group of people writing SOAP based services. <a href="http://www.omg.org">OMG!!</a> We are dealing with quite a few now, to support credit card transactions, prepaid top up applications, etc.</p>
<p>Decades of hard work by large financial institutions working on good standards go down the toilet, it&#8217;s easier to &#8220;invent&#8221; an API than read an ISO spec and do the right thing.</p>
<p>We are working now with a pre-paid phone company and you get to see things like no reversals, and one-second time-window for voids (come on!), and the results code are usually SQL syntax errors displayed to the client.</p>
<p>A similar thing happens with language-specific APIs, vendors think that developers are stupid and not capable enough to deal with a well specified protocol, so they create an API that is usually a bad and closed source implementation of a bad proprietary wire protocol.</p>
<p><b>Serenity now!</b></p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/08/whats-wrong-with-payment-gateways/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logging transactions in the new vdmspace</title>
		<link>http://jpos.org/blog/2009/08/logging-transaction-in-vdmspace/</link>
		<comments>http://jpos.org/blog/2009/08/logging-transaction-in-vdmspace/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 16:27:59 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=120</guid>
		<description><![CDATA[As a follow-up to the previous post about vdmspace, I&#8217;ve implemented a simple SpaceWriter TransactionParticipant that can be used to log all transaction contexts to the highly reliable VoldemortSpace (vdm:space).
It can be added to your transaction flow like this:

 &#60;participant class=&#34;org.jpos.transaction.SpaceWriter&#34; 
     logger=&#34;Q2&#34; realm=&#34;space-writer&#34;&#62;
    &#60;property name=&#34;space&#34; value=&#34;vdm:space&#34; /&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to the <a href="http://jpos.org/blog/2009/08/new-modules-voldemort-and-vdmspace/">previous post about vdmspace</a>, I&#8217;ve implemented a simple SpaceWriter <a href="http://jpos.org/doc/javadoc/org/jpos/transaction/TransactionParticipant.html">TransactionParticipant</a> that can be used to log all transaction contexts to the highly reliable VoldemortSpace (vdm:space).</p>
<p>It can be added to your transaction flow like this:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;participant</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.jpos.transaction.SpaceWriter&quot;</span> </span>
<span style="color: #009900;">     <span style="color: #000066;">logger</span>=<span style="color: #ff0000;">&quot;Q2&quot;</span> <span style="color: #000066;">realm</span>=<span style="color: #ff0000;">&quot;space-writer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;space&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;vdm:space&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;prefix&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;node00.txn.&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/participant<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>The code looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">org.jpos.transaction</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.Serializable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.space.Space</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.space.SpaceFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.core.Configurable</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.core.Configuration</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.core.ConfigurationException</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SpaceWriter <span style="color: #000000; font-weight: bold;">implements</span> AbortParticipant, Configurable <span style="color: #009900;">&#123;</span>
    Space sp<span style="color: #339933;">;</span>
    <span style="color: #003399;">String</span> prefix<span style="color: #339933;">;</span>
    Configuration cfg<span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> prepare <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> id, <span style="color: #003399;">Serializable</span> o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> PREPARED <span style="color: #339933;">|</span> READONLY<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> prepareForAbort <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> id, <span style="color: #003399;">Serializable</span> o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        <span style="color: #000000; font-weight: bold;">return</span> PREPARED <span style="color: #339933;">|</span> READONLY<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> commit <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> id, <span style="color: #003399;">Serializable</span> o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        outContext <span style="color: #009900;">&#40;</span>id, <span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span><span style="color: #009900;">&#41;</span> o<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> abort  <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> id, <span style="color: #003399;">Serializable</span> o<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        outContext <span style="color: #009900;">&#40;</span>id, <span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span><span style="color: #009900;">&#41;</span> o<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> outContext <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">long</span> id, <span style="color: #003399;">Context</span> ctx<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>sp <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
            sp <span style="color: #339933;">=</span> SpaceFactory.<span style="color: #006633;">getSpace</span> <span style="color: #009900;">&#40;</span>cfg.<span style="color: #006633;">get</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;space&quot;</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        sp.<span style="color: #006633;">out</span> <span style="color: #009900;">&#40;</span>prefix <span style="color: #339933;">+</span> <span style="color: #003399;">Long</span>.<span style="color: #006633;">toString</span> <span style="color: #009900;">&#40;</span>id<span style="color: #009900;">&#41;</span>, ctx<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setConfiguration <span style="color: #009900;">&#40;</span>Configuration cfg<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">cfg</span> <span style="color: #339933;">=</span> cfg<span style="color: #339933;">;</span>
        prefix <span style="color: #339933;">=</span> cfg.<span style="color: #006633;">get</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;prefix&quot;</span>, <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>You can add this participant to the very end of your transaction flow. All <b>persistent entries</b> in your <a href="http://jpos.org/doc/javadoc/org/jpos/transaction/Context.html#put%28java.lang.Object,%20java.lang.Object,%20boolean%29">Context</a> would get stored.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/08/logging-transaction-in-vdmspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New modules ‘voldemort’ and ‘vdmspace’</title>
		<link>http://jpos.org/blog/2009/08/new-modules-voldemort-and-vdmspace/</link>
		<comments>http://jpos.org/blog/2009/08/new-modules-voldemort-and-vdmspace/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 13:02:33 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=107</guid>
		<description><![CDATA[As a follow-up to the VoldemortSpace post and after one month of development and testing we are not proud (see caveats below) to announce the vdmspace module and its supporting voldemort module.
I&#8217;ve added two modules to jposee/opt, &#8216;voldemort&#8217; and &#8216;vdmspace&#8217; (r153). I splitted them in two different modules because I think there might be situations [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to the <a title="VoldemortSpace blog post" href="http://jpos.org/blog/2009/06/voldemortspace/">VoldemortSpace</a> post and after one month of development and testing we are not proud (<em>see caveats below</em>) to announce the <a title="jPOS-EE vdmspace module" href="http://code.google.com/p/jposee/source/browse/#svn/trunk/opt/vdmspace">vdmspace</a> module and its supporting <a title="jPOS-EE Voldemort module" href="http://code.google.com/p/jposee/source/browse/#svn/trunk/opt/voldemort">voldemort</a> module.</p>
<p>I&#8217;ve added two modules to jposee/opt, &#8216;voldemort&#8217; and &#8216;vdmspace&#8217; (r153). I splitted them in two different modules because I think there might be situations where accessing a Voldemort store directly could be desirable, without the Space implementation layer.</p>
<p>During the last month playing with this exciting technology I faced many problems and tried different implementations. I tried not to use a coordinator, but Voldemort provides no easy locking mechanism in its StoreClient interface other than optimistic locking, making some space operations difficult to implement.</p>
<p>So here are the caveats:</p>
<ul>
<li>Using the vdmspace for high concurrency input / output (in space terms, in/out) over the same keys will work, but could eventually fail.</li>
<li>An out with timeout works as expected, but requires an extra write in order to register the entry for later review by the garbage collector.</li>
<li>You want to make sure that you run just one garbage collector in the cluster (this is a temporary limitation that can be easily solved).</li>
</ul>
<p>Having said the cons, I believe the vdmspace is good for:</p>
<ul>
<li>Storing massive number of transactions, provided each transaction is stored under its own unique key (i.e. could be used to implement a <a href="http://dudehook.wordpress.com/2009/07/08/online-offline-and-the-sor/">SOR</a>).</li>
<li>Implementing a second level cache for configuration data that doesn&#8217;t change too often.</li>
</ul>
<p>In order to test this, you need to enable opt/commons, opt/voldemort and opt/vdmspace, then you can use simple code like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.space.*</span><span style="color: #339933;">;</span>
    Space sp <span style="color: #339933;">=</span> SpaceFactory.<span style="color: #006633;">getSpace</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;vdm:space&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    ...
    ...</pre></div></div>

<p>This needs a lot of test, so feedback is Welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/08/new-modules-voldemort-and-vdmspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jPOS in Naerobi</title>
		<link>http://jpos.org/blog/2009/07/jpos-kenya/</link>
		<comments>http://jpos.org/blog/2009/07/jpos-kenya/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 19:38:32 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=104</guid>
		<description><![CDATA[jPOS  business partners from Jethro LTD UK will be visiting several jPOS sites in Naerobi, Kenya next week. If you are interested to meet their crew, please contact us and we&#8217;ll make it happen.
NOTE: the blond pretty lady from  their front page is not coming, she needs to stay in the front page  [...]]]></description>
			<content:encoded><![CDATA[<p>jPOS  business partners from <a href="http://www.jethroltd.com/">Jethro LTD</a> UK will be visiting several jPOS sites in Naerobi, Kenya next week. If you are interested to meet their crew, please <a href="http://jpos.org/contact?p=naerobi">contact us</a> and we&#8217;ll make it happen.</p>
<p>NOTE: the blond pretty lady from  their front page is not coming, she needs to stay in the front page <img src='http://jpos.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/07/jpos-kenya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Space Move aka poor man space transactions</title>
		<link>http://jpos.org/blog/2009/07/space-move-aka-poor-man-space-transactions/</link>
		<comments>http://jpos.org/blog/2009/07/space-move-aka-poor-man-space-transactions/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 17:28:22 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=94</guid>
		<description><![CDATA[When we call:

Object obj = sp.in &#40;&#34;MyQueue&#34;&#41;;
   ...
   ....
   // do some processing using 'obj'
   ...
   ...

I always feel worried about what could happen between the point in time you take the object off the Space and you place it in a safe storage for [...]]]></description>
			<content:encoded><![CDATA[<p>When we call:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #003399;">Object</span> obj <span style="color: #339933;">=</span> sp.<span style="color: #006633;">in</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MyQueue&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   ...
   ....
   <span style="color: #666666; font-style: italic;">// do some processing using 'obj'</span>
   ...
   ...</pre></div></div>

<p>I always feel worried about what could happen between the point in time you take the object off the Space and you place it in a safe storage for further processing. There&#8217;s always some single point of failure toward the outer services, for instance, while you are reading a message from a socket, if that process dies, your message is lost, but in the case of a Space, specially a reliable one (such as the VoldemortSpace), it&#8217;s just too sad to loose a message that was previously carefully stored in a highly available fail-safe way, just because a client worker crashes.</p>
<p>The initial solutions that came to mind would involve passing around some kind of Transaction Object (like Jini&#8217;s Transaction or JTA) so we could make the Space participate in the transaction, but that&#8217;s something easy to say, but not that easy to implement.</p>
<p>Then sometime ago, I&#8217;ve read about how Amazon&#8217;s SQS nicely solves a problem like this with temporary reads, when you read from SQS, you get the object for a couple of minutes and you need to confirm that you actually got it, otherwise, the object would show up again in the queue.</p>
<p>I think an easy way to implement that using very simple space operations, would be to implement a temporary &#8216;move&#8217; operation. I think that a proper syntax would be something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
   K move <span style="color: #009900;">&#40;</span>K from, <span style="color: #000066; font-weight: bold;">long</span> timeout<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>You get the idea, you&#8217;d use something like:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #003399;">Object</span> tmpKey <span style="color: #339933;">=</span> sp.<span style="color: #006633;">move</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MyQueue&quot;</span>, 60000L<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">Object</span> value <span style="color: #339933;">=</span> sp.<span style="color: #006633;">rdp</span> <span style="color: #009900;">&#40;</span>tmpKey<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ...
      ... <span style="color: #006633;">process</span> the entry
  <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">finally</span> <span style="color: #009900;">&#123;</span>
      sp.<span style="color: #006633;">inp</span> <span style="color: #009900;">&#40;</span>tmpKey<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>If for some reason, you fail to &#8216;inp&#8217; from tmpKey in your 60 seconds time-window, the object would show up again in the &#8216;MyQueue&#8217; queue.</p>
<p>I&#8217;m not implementing this now, but I may add the method as a place holder in the Space interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/07/space-move-aka-poor-man-space-transactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VoldemortSpace</title>
		<link>http://jpos.org/blog/2009/06/voldemortspace/</link>
		<comments>http://jpos.org/blog/2009/06/voldemortspace/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:48:01 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=83</guid>
		<description><![CDATA[When I start writing a new Space implementation, a Friend&#8217;s episode where Phoebe&#8217;s brother tells Phoebe he &#8220;melts stuff&#8221; comes to mind (hilarious).
He melts stuff; I write Space implementations [nerdy laugh here].
Back in the late 90s I started reading about the Linda Coordination Language and loved it,  I deployed a 25 node Jini/JavaSpaces (Outrigger) based [...]]]></description>
			<content:encoded><![CDATA[<p>When I start writing a new Space implementation, a Friend&#8217;s episode where Phoebe&#8217;s brother tells Phoebe he &#8220;melts stuff&#8221; comes to mind (hilarious).</p>
<p>He melts stuff; I write Space implementations [nerdy laugh here].</p>
<p>Back in the late 90s I started reading about the Linda Coordination Language and loved it,  I deployed a 25 node Jini/JavaSpaces (Outrigger) based application (small supermarket chain, each node was a member of the Jini federation).</p>
<p>Due to the slow links, some early problems with OutRigger and a low memory budget on the nodes, we had to replace that implementation with a minimalistic one, and that&#8217;s why I wrote the first jPOS Space implementation.</p>
<p>But I always wanted to have a reliable, self-healing, highly scalable space, and guess what, I believe <a title="Project Voldemort" href="http://project-voldemort.com/" target="_blank">Project Voldemort</a> is a God send for that, a perfect fit.</p>
<p>We still need a couple of weeks in order to be able to provide a first release, we still have some locking problems and need to work on the garbage collector in order to efficiently reclaim space used by expired entries, but I thought it could be a good idea to share with you the fact that we are working with this new and exciting technology just in case you want to get yourself up to speed with it.</p>
<p>Meanwhile, you may want to read and play with <a title="Project Voldemort" href="http://project-voldemort.com/" target="_blank">Project Voldemort</a>, <a title="Amazon Dynamo" href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Amazon Dynamo</a> and the <a title="MiniSpace tutorial" href="http://uy.jpos.org/minispace/index.html" target="_blank">miniSpaces tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/06/voldemortspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedding Q2</title>
		<link>http://jpos.org/blog/2009/06/embedding-q2/</link>
		<comments>http://jpos.org/blog/2009/06/embedding-q2/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 11:24:50 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=69</guid>
		<description><![CDATA[New simplified way to start the jPOS Q2 micro container from your application.]]></description>
			<content:encoded><![CDATA[<p>People sometimes use jPOS as a library and do the wiring using Java code, something that Q2 already does in a clean and easy to maintain way. </p>
<p>In r2735 we&#8217;ve introduced a couple of changes to Q2 in order to simplify the way you can embed it in your application in order to get the best of both worlds.</p>
<p>You basically need to instantiate a Q2 object and call its start() method. That&#8217;s it.</p>
<p>At shutdown time, you call stop() on that instance.</p>
<p>There&#8217;s no reason not to use Q2 now, you just need to:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.jpos.q2.Q2</span><span style="color: #339933;">;</span>
...
...
  <span style="color: #006633;">Q2</span> q2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Q2<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;path/to/your/deploy/directory&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  q2.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...
...</pre></div></div>

<p>At stop time, you simply call:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  q2.<span style="color: #006633;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/06/embedding-q2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jPOS 1.6.4 has been released</title>
		<link>http://jpos.org/blog/2009/03/jpos-1-6-4/</link>
		<comments>http://jpos.org/blog/2009/03/jpos-1-6-4/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 18:02:44 +0000</pubDate>
		<dc:creator>apr</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jpos.org/blog/?p=67</guid>
		<description><![CDATA[Ditto, jPOS 1.6.4 has been released.
Here is the ChangeLog.
We are moving development to 1.6.5 now.
jPOS-EE modules/jpos/lib has been updated with a pre-compiled version of 1.6.4.
Please report problems to jpos-dev mailing list (see Resources).
]]></description>
			<content:encoded><![CDATA[<p>Ditto, jPOS 1.6.4 has been released.</p>
<p>Here is the <a title="ChangeLog" href="http://jpos.org/wiki/ChangeLog">ChangeLog</a>.</p>
<p>We are moving development to 1.6.5 now.</p>
<p>jPOS-EE modules/jpos/lib has been updated with a pre-compiled version of 1.6.4.</p>
<p>Please report problems to jpos-dev mailing list (see <a href="http://jpos.org/resources">Resources</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://jpos.org/blog/2009/03/jpos-1-6-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
