<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Dejan Bosanac</title>
    <link>/posts/</link>
    <description>Recent content in Posts on Dejan Bosanac</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
    <lastBuildDate>Wed, 29 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="/posts/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Master your skills</title>
      <link>/posts/2026-07-29-master-your-skills/</link>
      <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>
      
      <guid>/posts/2026-07-29-master-your-skills/</guid>
      <description>&lt;p&gt;We put a lot of effort into building context for our coding agents, but we rarely treat that context with the same engineering rigor as the rest of the project. I wanted to explore what it looks like when we do. Starting with the basics: what AGENTS.md and Agent Skills are and why they matter.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://developers.redhat.com/articles/2026/07/27/standardize-project-context-agentsmd-and-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;https://developers.redhat.com/articles/2026/07/27/standardize-project-context-agentsmd-and-agent-skills&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Next up, I&amp;rsquo;ll dive into topics like authoring, testing, evals, CI integration, etc.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Messaging for IoT</title>
      <link>/posts/2015-08-17-messaging-for-iot/</link>
      <pubDate>Mon, 17 Aug 2015 00:00:00 +0000</pubDate>
      
      <guid>/posts/2015-08-17-messaging-for-iot/</guid>
      <description>&lt;p&gt;Deploying message broker for an IoT use case introduces some new challenges to the broker scalability. We&amp;rsquo;re talking now about thousands of connections, consumers and destinations, which make us think of how we provision, configure and monitor our messaging infrastructure much more carefully. In this post I&amp;rsquo;ll try to sum up some of techniques that can be used with the current Apache ActiveMQ in terms to scale it better for IoT deployment. I&amp;rsquo;ll also describe some of the new features we developed for the 5.12.0 release to make it a better fit in this new world. And finally I&amp;rsquo;ll try to explain where we can go from here and what can we work on in the future.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ and HawtIO</title>
      <link>/posts/2014-04-29-activemq-and-hawtio/</link>
      <pubDate>Tue, 29 Apr 2014 00:00:00 +0000</pubDate>
      
      <guid>/posts/2014-04-29-activemq-and-hawtio/</guid>
      <description>&lt;p&gt;We introduced &lt;a href=&#34;http://hawt.io/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;HawtIO&lt;/a&gt; console as a tech preview in 5.9.0 &lt;a href=&#34;http://activemq.apache.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; release, with an idea to replace the old and rusty web console in the distribution. Unfortunately, that idea didn&amp;rsquo;t go well with the rest of Apache community so it&amp;rsquo;s voted out and 5.9.1 is released without it. You can read more on the topic of distributing non-Apache developed web consoles in Apache projects in &lt;a href=&#34;http://activemq.2283324.n4.nabble.com/DISCUSS-Remove-the-old-ActiveMQ-Console-td4675925.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;this (lengthy) thread&lt;/a&gt; if you&amp;rsquo;re interested.&lt;/p&gt;&#xA;&lt;p&gt;Anyhow, there&amp;rsquo;s a lot of people out there who liked HawtIO and are asking questions on how to use it with the future (and some old) releases. So here, I&amp;rsquo;ll try to sum up different ways of how ActiveMQ and HawtIO can be used together.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>MQTT over WebSocket transport in ActiveMQ</title>
      <link>/posts/2013-07-05-mqtt-over-websocket-transport-in-activemq/</link>
      <pubDate>Fri, 05 Jul 2013 00:00:00 +0000</pubDate>
      
      <guid>/posts/2013-07-05-mqtt-over-websocket-transport-in-activemq/</guid>
      <description>&lt;p&gt;So, we have more and more users want to connect to ActiveMQ directly from the browser using WebSockets. &lt;a href=&#34;http://activemq.apache.org/websockets.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;For quite a while now&lt;/a&gt; we support &lt;a href=&#34;http://stomp.github.io/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp&lt;/a&gt; clients which are really easy to use from JavaScript. Now, as more mobile users trying the same approach, we added support for very efficient binary &lt;a href=&#34;http://mqtt.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;MQTT protocol&lt;/a&gt; to the mix for upcoming &lt;strong&gt;5.9.0&lt;/strong&gt; version.&lt;/p&gt;&#xA;&lt;p&gt;The good thing is that you really don&amp;rsquo;t have to change anything on the broker side to support it. Both Stomp and MQTT can work over the same connector, as clients identify the protocol they want to use when they initialize the connection. We also provided a nice little demo using &lt;a href=&#34;http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eclipse Paho JavaScript client&lt;/a&gt;. You can play with the demo if you start the broker with &lt;code&gt;activemq-demo.xml&lt;/code&gt; config like&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Lightweight Messaging For Web And Mobile With Apache ActiveMQ</title>
      <link>/posts/2013-05-14-lightweight-messaging-for-web-and-mobile-with-apache-activemq/</link>
      <pubDate>Tue, 14 May 2013 00:00:00 +0000</pubDate>
      
      <guid>/posts/2013-05-14-lightweight-messaging-for-web-and-mobile-with-apache-activemq/</guid>
      <description>&lt;p&gt;Messaging once was a thing of &amp;ldquo;enterprises&amp;rdquo; but times are changing fast and devs now want to use it from virtually any environment. I thought it&amp;rsquo;s important to talk about messaging technologies available for web and mobile, so I&amp;rsquo;ll give a talk about it at &lt;a href=&#34;http://www.camelone.com/apache-camel-conference-2013/camelone_agenda_2013&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;CamelOne&lt;/a&gt; and &lt;a href=&#34;http://www.oscon.com/oscon2013/public/schedule/detail/28103&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;OSCON&lt;/a&gt;. If you&amp;rsquo;re attending one of those give me a ping, so we can have a chat over some beers.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache ActiveMQ 5.7.0 released</title>
      <link>/posts/2012-10-08-apache-activemq-5-7-0-released/</link>
      <pubDate>Mon, 08 Oct 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-10-08-apache-activemq-5-7-0-released/</guid>
      <description>&lt;p&gt;We managed to keep our goal of making more frequent releases and today we&amp;rsquo;re happy to announce &lt;a href=&#34;http://activemq.apache.org/activemq-570-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache ActiveMQ 5.7.0&lt;/a&gt;. The main goal of this release was Java 7 compatibility. The project is built using JDK 6, but it&amp;rsquo;s tested to work properly with Java 7. This was needed as we now use &lt;a href=&#34;http://camel.apache.org/camel-2100-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Camel 2.10&lt;/a&gt;, which also added support for Java 7.&lt;/p&gt;&#xA;&lt;p&gt;Besides this, there&amp;rsquo;s a couple of new features and close to two hundred bug fixes in this release. Some of the prominent new features are:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Pluggable ActiveMQ Storage Lockers</title>
      <link>/posts/2012-09-13-pluggable-activemq-storage-lockers/</link>
      <pubDate>Thu, 13 Sep 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-09-13-pluggable-activemq-storage-lockers/</guid>
      <description>&lt;p&gt;Shared storage master slave broker topologies depend on successful storage locking. Meaning that only a single broker (the master) is active and use the message database. So far locking was tied to a specific message store, so KahaDB was using shared file locking while JDBC store was using a specialized database table to keep slaves from starting. This work fine for the most use cases, but sometimes folks need to use a custom locker (like when the standard file locking doesn&amp;rsquo;t work on their NFS) or tune existing solutions.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Messaging Anti-Patterns: Part 3</title>
      <link>/posts/2012-09-05-messaging-anti-patterns-part-3/</link>
      <pubDate>Wed, 05 Sep 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-09-05-messaging-anti-patterns-part-3/</guid>
      <description>&lt;p&gt;OK, after basic anti-patterns discussed in &lt;a href=&#34;/posts/2012-07-31-messaging-anti-patterns-part-1/&#34; &gt;part 1&lt;/a&gt; and &lt;a href=&#34;/posts/2012-08-17-messaging-anti-patterns-part-2/&#34; &gt;2&lt;/a&gt; of this series, it&amp;rsquo;s time to discuss a bit more sophisticated messaging anti-patterns and how to write better messaging-oriented applications.&lt;/p&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Using appropriate message type&#xA;    &lt;div id=&#34;using-appropriate-message-type&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#using-appropriate-message-type&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;So let&amp;rsquo;s start with the first principles of messaging. Why we want to use a message broker in our architecture? The most probable answer is to exchange &lt;strong&gt;data&lt;/strong&gt; in &lt;strong&gt;asynchronous&lt;/strong&gt; and &lt;strong&gt;lously-coupled&lt;/strong&gt; way between our systems. In that terms we should see how our data are best represented in terms of messages. JMS specification defines a few types of message types to be used which I&amp;rsquo;d classify in two groups. In the first group I&amp;rsquo;ll put &lt;code&gt;TextMessages&lt;/code&gt; and &lt;code&gt;ByteMessages&lt;/code&gt; which provides a kind of a plain-sheet in terms of what kind of data is carried in the message body. I think that you should strongly consider using only these message types as they provide a framework for loosely-coupled data exchange without introducing unnecessary complexity. Let&amp;rsquo;s cover briefly other message types and discuss what they bring to the picture:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Messaging Anti-Patterns: Part 2</title>
      <link>/posts/2012-08-17-messaging-anti-patterns-part-2/</link>
      <pubDate>Fri, 17 Aug 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-08-17-messaging-anti-patterns-part-2/</guid>
      <description>&lt;p&gt;OK, now that you promised that you won&amp;rsquo;t &lt;strong&gt;store&lt;/strong&gt; your messages in the broker (&lt;a href=&#34;/posts/2012-07-31-messaging-anti-patterns-part-1/&#34; &gt;see part one of this post series&lt;/a&gt;), let&amp;rsquo;s consider one more thing that you should avoid when dealing with messaging systems.&lt;/p&gt;&#xA;&#xA;&lt;h1 class=&#34;relative group&#34;&gt;Short-lived connections&#xA;    &lt;div id=&#34;short-lived-connections&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#short-lived-connections&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h1&gt;&#xA;&lt;p&gt;One thing that reoccur regularly is folks (knowingly or unknowingly) creating and tearing connections to the broker for every message they produce and consume.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Messaging Anti-Patterns: Part 1</title>
      <link>/posts/2012-07-31-messaging-anti-patterns-part-1/</link>
      <pubDate>Tue, 31 Jul 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-07-31-messaging-anti-patterns-part-1/</guid>
      <description>&lt;p&gt;If you have a hammer everything looks like a nail, right? So we all witnessed that people sometimes try to solve the problem with wrong technology. Heck we probably all did it at one point or another. Common reasons are familiarity with an exiting technology stack we have at hand or perception that some of the features will justify it all. But using any technology in a way it&amp;rsquo;s not designed for, will lead to all kind of problems and you&amp;rsquo;ll eventually be forced to do it properly (probably cursing at the project in question because it hasn&amp;rsquo;t met you wrong expectations).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Conference week wrap-up</title>
      <link>/posts/2012-05-19-conference-week-wrap-up/</link>
      <pubDate>Sat, 19 May 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-05-19-conference-week-wrap-up/</guid>
      <description>&lt;p&gt;I had a blast of a week at &lt;a href=&#34;http://www.camelone.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;CamelOne&lt;/a&gt; and &lt;a href=&#34;http://www.jeeconf.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JEEConf&lt;/a&gt;. Both organized perfectly and awesome crowd all around.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.flickr.com/photos/54898272@N07/7216436854/&#34; title=&#34;davidfoxphotographer-196 by FuseSource, on Flickr&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;davidfoxphotographer-196&#34;&#xA;    src=&#34;http://farm8.staticflickr.com/7211/7216436854_c0fd95c8a0.jpg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;CamelOne was packed with FuseSource customers and users with a great feedback on the things we do. There were a lot of interest in &lt;a href=&#34;http://fuse.fusesource.org/fabric/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse Fabric&lt;/a&gt; which should help folks provision their integration infrastructure with ease. I covered how Fabric can help with complex ActiveMQ deployments and you can find the slides embedded below.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.6.0 and other news</title>
      <link>/posts/2012-05-08-activemq-560-and-other-news/</link>
      <pubDate>Tue, 08 May 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-05-08-activemq-560-and-other-news/</guid>
      <description>&lt;p&gt;We just released Apache ActiveMQ 5.6.0. It was a long-awaited maintenance release, but however there are a few very significant new features that was worth waiting for. Those include a new &lt;a href=&#34;https://github.com/fusesource/fuse-extra/tree/master/fusemq-leveldb&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;LevelDB store&lt;/a&gt;, MQTT and Stomp 1.1 protocols support and self-balancing cluster clients, to name a few. I already written about clustering &lt;a href=&#34;http://www.nighttale.net/activemq/new-activemq-failover-and-clustering-goodies.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt; and there sure will be a lot of things to write about these other features as well in coming days.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in the cloud</title>
      <link>/posts/2012-04-10-activemq-in-cloud/</link>
      <pubDate>Tue, 10 Apr 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-04-10-activemq-in-cloud/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://fusesource.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;FuseSource&lt;/a&gt; just announced a public beta of new Enterprise products (&lt;a href=&#34;http://rajdavies.blogspot.com/2012/04/beta-release-of-fusesource-enteprise.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Read more about it in Rob&amp;rsquo;s post&lt;/a&gt;). So it&amp;rsquo;s time to give you a bit more details on what we were working on for the past few months. One thing I want to emphasize in this post is how this project improves the experience of deploying and managing ActiveMQ brokers. &lt;a href=&#34;http://fuse.fusesource.org/fabric/index&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse Fabric&lt;/a&gt; (the central engine behind Fuse Enterprise) can help you provision and manage your brokers better and additionally help with cloud deployments.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>New ActiveMQ failover and clustering goodies</title>
      <link>/posts/2012-02-14-new-activemq-failover-and-clustering-goodies/</link>
      <pubDate>Tue, 14 Feb 2012 00:00:00 +0000</pubDate>
      
      <guid>/posts/2012-02-14-new-activemq-failover-and-clustering-goodies/</guid>
      <description>&lt;p&gt;For the last two weeks I&amp;rsquo;ve been working on some interesting use cases for the good ol&amp;rsquo; failover transport. I finally have some time at my hands, so here&amp;rsquo;s a brief recap of what&amp;rsquo;s coming in 5.6 release in this area.&lt;/p&gt;&#xA;&lt;p&gt;First there&amp;rsquo;s a new feature, called &lt;em&gt;Priority Backup&lt;/em&gt;. It&amp;rsquo;s described in details &lt;a href=&#34;http://activemq.apache.org/failover-transport-reference.html#FailoverTransportReference-PriorityBackup&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;, but in a nutshell it provides you with the mechanism of prioritizing your failover urls and keep your clients connected to them as soon as they are available. The most obvious use case for this is to keep your clients connected to the broker in local data center whenever you can. By doing this, you can both have better performances and stability of your clients, but also save on your bandwidth bills.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ networks and advisory messages explained</title>
      <link>/posts/2011-12-21-activemq-networks-and-advisory-messages-explained/</link>
      <pubDate>Wed, 21 Dec 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-12-21-activemq-networks-and-advisory-messages-explained/</guid>
      <description>&lt;p&gt;Recently &lt;a href=&#34;http://www.jakubkorab.net/2011/11/understanding-activemq-broker-networks.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jakub wrote an excellent blog post&lt;/a&gt; explaining more on how ActiveMQ networks work. The one thing that somehow always got unexplained and confused users over time is the connection between network of brokers and advisory messages. I finally took some time to document it and introduce some enhancements we have in this area for the upcoming 5.6 broker release. &lt;a href=&#34;http://activemq.apache.org/networks-of-brokers.html#NetworksofBrokers-Networksofbrokersandadvisories&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Read more here&lt;/a&gt; on how network connectors use advisory messages and how you can tune all that in complex and high load environments.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Advanced messaging with Apache ActiveMQ slides</title>
      <link>/posts/2011-05-23-advanced-messaging-with-apache-activemq-slides/</link>
      <pubDate>Mon, 23 May 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-05-23-advanced-messaging-with-apache-activemq-slides/</guid>
      <description>&lt;p&gt;Slides are available at slideshare now:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;http://www.slideshare.net/dejanb/advanced-messaging-with-apache-activemq&#34; title=&#34;Advanced messaging with Apache ActiveMQ&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Advanced messaging with Apache ActiveMQ&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;iframe src=&#34;http://www.slideshare.net/slideshow/embed_code/8069475&#34; width=&#34;425&#34; height=&#34;355&#34; frameborder=&#34;0&#34; marginwidth=&#34;0&#34; marginheight=&#34;0&#34; scrolling=&#34;no&#34;&gt;&lt;/iframe&gt;&#xA;&lt;p&gt;View more &lt;a href=&#34;http://www.slideshare.net/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;presentations&lt;/a&gt; from &lt;a href=&#34;http://www.slideshare.net/dejanb&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;dejanb&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>JEEConf Session</title>
      <link>/posts/2011-05-11-jeeconf-session/</link>
      <pubDate>Wed, 11 May 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-05-11-jeeconf-session/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be speaking on &amp;ldquo;Advanced Messaging with ActiveMQ&amp;rdquo; at &lt;a href=&#34;http://jeeconf.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JEEConf in Kiev, Ukraine&lt;/a&gt; on Saturday May 21st.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Just arrived!</title>
      <link>/posts/2011-03-28-just-arrived/</link>
      <pubDate>Mon, 28 Mar 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-03-28-just-arrived/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;books&#34;&#xA;    src=&#34;http://www.nighttale.net/Images/books.jpg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in Action released</title>
      <link>/posts/2011-03-21-activemq-in-action-released/</link>
      <pubDate>Mon, 21 Mar 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-03-21-activemq-in-action-released/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;cover&#34;&#xA;    src=&#34;http://www.nighttale.net/Images/amqina.jpg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;Book projects always (at least for me) takes quite longer to finish than you anticipate at the beginning. But unlike everything we do in software development, when it is finally finished, you get the real physical thing you can hold in your hands. And that&amp;rsquo;s always a great feeling.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m happy to announce that &lt;a href=&#34;http://manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ in Action&lt;/a&gt; is released. You can already get final eBook, while the print version will hit the shelfs on March 24th.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.5: Audit Logging</title>
      <link>/posts/2011-01-20-activemq-55-audit-logging/</link>
      <pubDate>Thu, 20 Jan 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-01-20-activemq-55-audit-logging/</guid>
      <description>&lt;p&gt;The PCI DSS (Payment Card Industry (PCI) Data Security Standard) v2.0, specifies that all user actions must be audited, so they can be inspected later if needed. To be deployable in such environments, we added audit logging to ActiveMQ. In this &lt;a href=&#34;http://activemq.apache.org/audit-logging.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;article&lt;/a&gt; you can find the basics on how to configure and use it. Here, I&amp;rsquo;d like to expand the topic a bit and talk about add-ons you can find in &lt;a href=&#34;http://fusesource.com/products/enterprise-activemq/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse Message Broker&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Software scalability &amp;#124; Belgrade meetup 04</title>
      <link>/posts/2011-01-14-software-scalability-belgrade-meetup-04/</link>
      <pubDate>Fri, 14 Jan 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-01-14-software-scalability-belgrade-meetup-04/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Slides are available at &lt;a href=&#34;http://www.slideshare.net/fusesource/introduction-to-apache-camel&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://www.slideshare.net/fusesource/introduction-to-apache-camel&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll be introducing &lt;a href=&#34;http://camel.apache.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache Camel&lt;/a&gt; at next Software Scalability | Belgrade – meetup on January 29th. The full announcement can be found &lt;a href=&#34;http://scalability.rs/369/software-scalability-belgrade-meetup-04&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>How to monitor ActiveMQ networks</title>
      <link>/posts/2011-01-05-how-to-monitor-activemq-networks/</link>
      <pubDate>Wed, 05 Jan 2011 00:00:00 +0000</pubDate>
      
      <guid>/posts/2011-01-05-how-to-monitor-activemq-networks/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re running ActiveMQ in a distributed setup using &lt;a href=&#34;http://activemq.apache.org/networks-of-brokers.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;network of brokers&lt;/a&gt;, you&amp;rsquo;re probably interested in techniques available to monitor your network. This usually implies viewing the status of the network bridges and generating events when the status changes. There were some improvements in this area for the next 5.5 release and here I&amp;rsquo;ll try to explain this topic a bit more.&lt;/p&gt;&#xA;&lt;p&gt;To demonstrate these techniques we need a simple network, so take a look at the one shown in the following diagram.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in Action in Production</title>
      <link>/posts/2010-10-28-activemq-in-action-in-production/</link>
      <pubDate>Thu, 28 Oct 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-10-28-activemq-in-action-in-production/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;cover&#34;&#xA;    src=&#34;http://www.nighttale.net/Images/amqina.jpg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;It&amp;rsquo;s always a good feeling when the book project goes into the production, and that&amp;rsquo;s what happened to &lt;strong&gt;ActiveMQ in Action&lt;/strong&gt; this week.&lt;/p&gt;&#xA;&lt;p&gt;If you already bought &lt;a href=&#34;http://manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;MEAP access plus printed version of the book&lt;/a&gt;, you can expect your printed version in the next few months. If not, it&amp;rsquo;s still not too late as we&amp;rsquo;re offering 40% discount to celebrate going into the production. Just use &lt;strong&gt;activemq40&lt;/strong&gt; coupon code at the time of checkout.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.4.1: Encrypted passwords</title>
      <link>/posts/2010-09-03-activemq-541-encrypted-passwords/</link>
      <pubDate>Fri, 03 Sep 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-09-03-activemq-541-encrypted-passwords/</guid>
      <description>&lt;p&gt;While configuring ActiveMQ for a production use, you usually need to store passwords in your configuration files. Passwords are usually needed for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Simple authentication plugin&lt;/li&gt;&#xA;&lt;li&gt;JDBC/LDAP passwords&lt;/li&gt;&#xA;&lt;li&gt;Accessing secured brokers by Web Console, Camel, etc&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Naturally, people don&amp;rsquo;t want to keep plain passwords in the configuration files. ActiveMQ 5.4.1 comes with a solution for that. Thanks to the integration with &lt;a href=&#34;http://www.jasypt.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jasypt&lt;/a&gt; library, your passwords can be now stored encrypted.&lt;/p&gt;&#xA;&lt;p&gt;For a full description of this new feature see &lt;a href=&#34;http://activemq.apache.org/encrypted-passwords.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://activemq.apache.org/encrypted-passwords.html&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>What&#39;s new in Apache ActiveMQ 5.4.0</title>
      <link>/posts/2010-08-17-whats-new-in-apache-activemq-540/</link>
      <pubDate>Tue, 17 Aug 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-08-17-whats-new-in-apache-activemq-540/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://activemq.apache.org/activemq-540-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache ActiveMQ 5.4.0&lt;/a&gt; is out. Beside our usual dedication to making it bullet-proof by adding a lot of test cases and resolving issues reported by our vibrant community, this release contains a lot of new features (some of which has already been covered here). In this post I&amp;rsquo;ll try to sum up the new features that we included in this release. As the development pace was very rapid, some of them haven&amp;rsquo;t been documented yet, but that&amp;rsquo;ll change soon too. So let&amp;rsquo;s start:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fast producer failover with ActiveMQ</title>
      <link>/posts/2010-08-16-fast-producer-failover-with-activemq/</link>
      <pubDate>Mon, 16 Aug 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-08-16-fast-producer-failover-with-activemq/</guid>
      <description>&lt;p&gt;When you&amp;rsquo;re sending messages to a cluster of ActiveMQ brokers using failover protocol and the current broker dies, the transport will try to connect and send messages to the next one. If that one is unavailable it will try next and so on and so on. So what happens when all brokers in the cluster are down? You&amp;rsquo;ll get the feeling that send call is hanging. At least until one of the brokers gets up again.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.4: Seamless OSGi Integration</title>
      <link>/posts/2010-08-02-activemq-54-seamless-osgi-integration/</link>
      <pubDate>Mon, 02 Aug 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-08-02-activemq-54-seamless-osgi-integration/</guid>
      <description>&lt;p&gt;For upcoming ActiveMQ 5.4.0 release we did a lot of work to make it a better citizen in OSGi land. Let&amp;rsquo;s walk through some of the stuff you can do now. First of all download and install recently released &lt;a href=&#34;http://karaf.apache.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache Karaf 2.0.0&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Now if you want to play with all these stuff before the ActiveMQ 5.4.0 is officially released, you need to edit&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;${KARAF_HOME}/etc/org.ops4j.pax.url.mvn.cfg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;and add&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;https://repository.apache.org/content/repositories/snapshots/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;to the list of available repositories.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Software scalability &amp;#124; Belgrade meetup</title>
      <link>/posts/2010-07-01-software-scalability-belgrade-meetup/</link>
      <pubDate>Thu, 01 Jul 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-07-01-software-scalability-belgrade-meetup/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be speaking on &amp;ldquo;Enterprise ActiveMQ&amp;rdquo; at &amp;ldquo;Software Scalability | Belgrade&amp;rdquo; first meetup on Saturday, July 03 2010. The full announcement could be found &lt;a href=&#34;http://scalability.rs/286/software-scalability-belgrade-meetup-1&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Securing ActiveMQ 5.3.1 console</title>
      <link>/posts/2010-05-21-securing-activemq-531-console/</link>
      <pubDate>Fri, 21 May 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-05-21-securing-activemq-531-console/</guid>
      <description>&lt;p&gt;In many environments, users want to restrict access to ActiveMQ web server (Jetty) and web console application in particular. Here&amp;rsquo;s how to do it for ActiveMQ 5.3.1 version of broker.&lt;/p&gt;&#xA;&lt;p&gt;In 5.3.1, the whole web server configuration is placed in the &lt;code&gt;${ACTIVEMQ_HOME}/conf/jetty.xml&lt;/code&gt; file. The configuration file you can find at &lt;a href=&#34;http://github.com/dejanb/activemq-util/blob/master/config/5.3.1/jetty/jetty.xml&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt; is a drop-in replacement for a default jetty configuration and you should place it in your configuration folder.&lt;/p&gt;&#xA;&lt;p&gt;Besides that you&amp;rsquo;ll need to create a &lt;code&gt;${ACTIVEMQ_HOME}/conf/jetty-realm.properties&lt;/code&gt; with the following content:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.3.1 Released</title>
      <link>/posts/2010-03-23-activemq-531-released/</link>
      <pubDate>Tue, 23 Mar 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-03-23-activemq-531-released/</guid>
      <description>&lt;p&gt;Apache ActiveMQ 5.3.1 has just been released. It&amp;rsquo;s primarily the maintenance release, including nearly 100 bug fixes and improvements over the previous 5.3.0 version. The full list of improvements and bug fixes, as well as the download link, can be found at the &lt;a href=&#34;http://activemq.apache.org/activemq-531-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;release page&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;JDBC message store&lt;/strong&gt; - a big effort has been made to make JDBC store as reliable as other file-based stores for use in complex high-load use cases.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;nio&lt;/code&gt; and &lt;code&gt;stomp+nio&lt;/code&gt; transports&lt;/strong&gt; - initial implementation of &lt;code&gt;stomp+nio&lt;/code&gt; transport, introduced in 5.3.0 version contained some resource leaks, but also revealed some problems with the &lt;code&gt;nio&lt;/code&gt; transport. All these are now fixed, thoroughly tested and ready for production use&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OSGi integration&lt;/strong&gt; - a lot of small improvements in this area should provide much better integration of the broker in OSGi environments. Especially, we provided resources for seamless deployment in &lt;a href=&#34;http://felix.apache.org/site/apache-felix-karaf.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache Karaf&lt;/a&gt; OSGi runtime. This will be the topic of the following blog post (so stay tuned!)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Web console security&lt;/strong&gt; - Web console is now secured against XSS and XSRF attacks, so it&amp;rsquo;s safe to be deployed publicly (of course with proper authentication set in place)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Enjoy this release, while we work on delivering 5.4.0 in coming months (or even weeks) with more bug fixes and features, such as &lt;a href=&#34;http://rajdavies.blogspot.com/2010/02/activemq-54-jms-timer-and-cron.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;scheduled messages&lt;/a&gt; and &lt;a href=&#34;http://www.nighttale.net/activemq/activemq-54-stomp-over-web-sockets.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;web socket support&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ 5.4: Stomp over Web Sockets</title>
      <link>/posts/2010-02-22-activemq-54-stomp-over-web-sockets/</link>
      <pubDate>Mon, 22 Feb 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-02-22-activemq-54-stomp-over-web-sockets/</guid>
      <description>&lt;p&gt;Exchanging messages with the broker directly from the web browser was always interesting use case (and used by many developers). That&amp;rsquo;s why ActiveMQ was supporting &lt;a href=&#34;http://activemq.apache.org/ajax.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Ajax API&lt;/a&gt; for the long time. It uses &lt;a href=&#34;http://wiki.eclipse.org/Jetty/Feature/Continuations&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jetty Continuations&lt;/a&gt; to implement threadless waiting and asynchronous delivery of messages to the web page.&lt;/p&gt;&#xA;&lt;p&gt;HTML 5 introduced web sockets, as a standardized way to communicate asynchronously with the server from a web page. This is practically an ideal channel for implementing asynchronous messaging for web pages, so it&amp;rsquo;s no surprise we had it on a todo list for a long time. Also, since JavaScript easily handles text and JSON formatted data, &lt;a href=&#34;http://activemq.apache.org/stomp/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp protocol&lt;/a&gt; is a natural choice for the wire protocol to be used over web sockets.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ producer flow control with timeout</title>
      <link>/posts/2010-01-29-activemq-producer-flow-control-with-timeout/</link>
      <pubDate>Fri, 29 Jan 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-01-29-activemq-producer-flow-control-with-timeout/</guid>
      <description>&lt;p&gt;ActiveMQ producer flow control feature allows you to prevent overflowing the broker by slowing down fast producers. Thus far you had two options, the producer &lt;code&gt;send()&lt;/code&gt; method will either wait until space becomes available, or fail if it&amp;rsquo;s configured through &lt;code&gt;sendFailIfNoSpace&lt;/code&gt; property, like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;systemUsage&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &amp;lt;systemUsage sendFailIfNoSpace=&amp;#34;true&amp;#34;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &amp;lt;memoryUsage&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &amp;lt;memoryUsage limit=&amp;#34;20 mb&amp;#34;/&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &amp;lt;/memoryUsage&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &amp;lt;/systemUsage&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;/systemUsage&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;For 5.3.1 version of the broker we added a third option. You can now configure the broker to do the producer flow control with timeout. If you configure &lt;code&gt;&amp;lt;systemUsage&amp;gt;&lt;/code&gt; like this (using &lt;code&gt;sendFailIfNoSpaceAfterTimeout&lt;/code&gt; property),&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Jettison 1.2 Released</title>
      <link>/posts/2010-01-18-jettison-12-released/</link>
      <pubDate>Mon, 18 Jan 2010 00:00:00 +0000</pubDate>
      
      <guid>/posts/2010-01-18-jettison-12-released/</guid>
      <description>&lt;p&gt;Jettison version 1.2 has been released. The highlights of this release are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Refactored MappedXMLStreamWriter - which solved many issues with serializing arrays&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Plugable type converters and support for 64-bit long conversion&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You can find the full change log for this release on the &lt;a href=&#34;http://jettison.codehaus.org/Download&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Download&lt;/a&gt; page. Enjoy&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Handling IOException in ActiveMQ</title>
      <link>/posts/2009-11-20-handling-ioexception-in-activemq/</link>
      <pubDate>Fri, 20 Nov 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-11-20-handling-ioexception-in-activemq/</guid>
      <description>&lt;p&gt;When you encounter IOException trying to persist a message on the disk, you know something has gone wrong. One of two things usually happen:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Either your disk is dead, or disconnected in case you use network disks&lt;/li&gt;&#xA;&lt;li&gt;Or you just don&amp;rsquo;t have more space on the disk&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Depending on the type of the exception you may encounter, you might want to take a different action. For upcoming 5.3.1 release we implemented fully configurable IOException handling which can be tuned to your need.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Stomp project</title>
      <link>/posts/2009-10-29-fuse-stomp-project/</link>
      <pubDate>Thu, 29 Oct 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-10-29-fuse-stomp-project/</guid>
      <description>&lt;p&gt;In our attempt to provide better future for Stomp protocol, we already &lt;a href=&#34;http://www.nighttale.net/stomp/stomp-future.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;moved specification under ActiveMQ project umbrella&lt;/a&gt;, where all future specification improvements will be done. Another necessary step is to provide high-quality Stomp clients for use in different development environments. For that purpose, we created &lt;a href=&#34;http://stomp.fusesource.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp project on FUSE Forge&lt;/a&gt;. It should provide a project hosting environment for various Stomp clients.&lt;/p&gt;&#xA;&lt;p&gt;For starters I released &lt;a href=&#34;http://stomp.fusesource.org/documentation/php/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;PHP Stomp Client 1.0.0&lt;/a&gt;. It&amp;rsquo;s a natural extension of all the work previously hosted on &lt;a href=&#34;http://stomp.codehaus.org/php&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Codehaus + Google Code&lt;/a&gt;. It is now stabilized, with a lot of bug fixes and released as 1.0.0. All future development will be continued on the FUSE Forge as it provides much better hosting environment than we used thus far.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Python messaging: ActiveMQ and RabbitMQ</title>
      <link>/posts/2009-10-20-python-messaging-activemq-and-rabbitmq/</link>
      <pubDate>Tue, 20 Oct 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-10-20-python-messaging-activemq-and-rabbitmq/</guid>
      <description>&lt;p&gt;I found myself recently with a task of testing various Python messaging clients. In this article I&amp;rsquo;ll present my findings regarding performance and scalability on two Python clients connecting to &lt;a href=&#34;http://activemq.apache.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; and &lt;a href=&#34;http://www.rabbitmq.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;RabbitMQ&lt;/a&gt; message brokers.&lt;/p&gt;&#xA;&lt;p&gt;For ActiveMQ Python client, I used &lt;a href=&#34;http://code.google.com/p/pyactivemq/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pyactivemq&lt;/a&gt; library version 0.1.0. It&amp;rsquo;s basically a Python wrapper for &lt;a href=&#34;http://activemq.apache.org/cms/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ-CPP&lt;/a&gt; library, allowing Python clients to communicate with the broker using both &lt;a href=&#34;http://activemq.apache.org/openwire.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;OpenWire&lt;/a&gt; (ActiveMQ specific binary protocol) and &lt;a href=&#34;http://activemq.apache.org/stomp/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp&lt;/a&gt; (Simple text-oriented protocol) protocols. Since it uses ActiveMQ-CPP, installation requires special attention and some of those details you can find in a related &lt;a href=&#34;http://www.nighttale.net/activemq/pyactivemq-on-ubuntu.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;blog post&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache ActiveMQ 5.3.0 Released</title>
      <link>/posts/2009-10-13-apache-activemq-530-release/</link>
      <pubDate>Tue, 13 Oct 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-10-13-apache-activemq-530-release/</guid>
      <description>&lt;p&gt;After more than a year in development, we finally released 5.3.0 version of ActiveMQ. It contains over 300 bug fixes, but also some of the neat new features. The full list of features and bug fixes, as well as the download link can be found at &lt;a href=&#34;http://activemq.apache.org/activemq-530-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;the release page&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here, I would like to emphasize just some of the new features:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;New KahaDB persisten store, which improves recovery times and scalability in a great deal&lt;/li&gt;&#xA;&lt;li&gt;A default configuration now focused more on production then demoing all features. You can also find some useful configuration examples for different scenarios, like vertical scaling or throughput&lt;/li&gt;&#xA;&lt;li&gt;Camel 2.0.0 integrated along with it&amp;rsquo;s web console for managing endpoints and routes&lt;/li&gt;&#xA;&lt;li&gt;&amp;hellip; and much, much more&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You can expect more useful resources on ActiveMQ 5.3.0 in coming days.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>XML to JSON</title>
      <link>/posts/2009-09-21-xml-to-json/</link>
      <pubDate>Mon, 21 Sep 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-09-21-xml-to-json/</guid>
      <description>&lt;p&gt;While working on &lt;a href=&#34;http://jettison.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jettison&lt;/a&gt;, I often have need to convert XML to JSON. Here&amp;rsquo;s a simple method that uses &lt;a href=&#34;http://xstream.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;XStream&lt;/a&gt; and &lt;a href=&#34;http://jettison.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jettison&lt;/a&gt; to do this conversion.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import java.io.StringReader;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import java.io.StringWriter;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import com.thoughtworks.xstream.io.HierarchicalStreamReader;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import com.thoughtworks.xstream.io.copy.HierarchicalStreamCopier;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;import com.thoughtworks.xstream.io.xml.XppReader;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;public class Test {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;public static void main(String[] args) throws Exception {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;String xml = &amp;#34;ToveJaniReminder&amp;#34; +&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&#x9;&#x9;&amp;#34;Don&amp;#39;t forget me this weekend!&amp;#34;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        HierarchicalStreamReader sourceReader = new XppReader(new StringReader(xml));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        StringWriter buffer = new StringWriter();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        JettisonMappedXmlDriver jettisonDriver = new JettisonMappedXmlDriver();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        jettisonDriver.createWriter(buffer);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        HierarchicalStreamWriter destinationWriter = jettisonDriver.createWriter(buffer);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        HierarchicalStreamCopier copier = new HierarchicalStreamCopier();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        copier.copy(sourceReader, destinationWriter);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        System.out.println(buffer.toString());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;All conversion problems, like lists representation are handled by Jetttison. This example uses Mapped convention, but of course, BadgerFish notation can be used as well.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Wire format negotiation timeout and log4j jms appender FAQs</title>
      <link>/posts/2009-08-11-wire-format-negotiation-timeout-log4j-jms-appender-and/</link>
      <pubDate>Tue, 11 Aug 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-08-11-wire-format-negotiation-timeout-log4j-jms-appender-and/</guid>
      <description>&lt;p&gt;Some folks have been experiencing problems with wire format negotiation timeouts. Sometimes it was due to overloaded brokers or lousy networks, but misconfiguration of log4j jms appender could also be one of the causes. So, I wrote two FAQ entries that covers this topic:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://activemq.apache.org/how-do-i-use-log4j-jms-appender-with-activemq.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Using log4j appender with ActiveMQ&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://activemq.apache.org/javaxjmsjmsexception-wire-format-negociation-timeout-peer-did-not-send-his-wire-format.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Wire format negotiation timeout exception&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Enjoy&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Stomp Future</title>
      <link>/posts/2009-07-21-stomp-future/</link>
      <pubDate>Tue, 21 Jul 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-07-21-stomp-future/</guid>
      <description>&lt;p&gt;While thinking about the future of Stomp protocol, we concluded that the best place for future maintenance of the specification is under umbrella of &lt;a href=&#34;http://activemq.apache.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; project. There are a couple reasons for this, but it basically boils down to two facts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Apache infrastructure is much better suited for this task than the one currently used at Codehaus&lt;/li&gt;&#xA;&lt;li&gt;Most of the Stomp contributors are also ActiveMQ committers, so this transition feels natural in this respect.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;As a starting point, we created an ActiveMQ sub-project &lt;a href=&#34;http://activemq.apache.org/stomp/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://activemq.apache.org/stomp/&lt;/a&gt; which will be the home of the all future work on the protocol. At the moment, we only ported information related to Stomp version 1.0 (specification and related articles) to this new project. Soon, we&amp;rsquo;ll start working on protocol specification version 1.1, using the current &lt;a href=&#34;http://stomp.codehaus.org/Stomp&amp;#43;v1.1&amp;#43;Ideas&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;idea pool&lt;/a&gt; as a base.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>pyactivemq on Ubuntu</title>
      <link>/posts/2009-07-07-pyactivemq-on-ubuntu/</link>
      <pubDate>Tue, 07 Jul 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-07-07-pyactivemq-on-ubuntu/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/pyactivemq/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pyactivemq&lt;/a&gt; is a Python library that enables Python clients to communicate with &lt;a href=&#34;http://activemq.apache.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; using both OpenWire and Stomp protocols. To do that it wraps &lt;a href=&#34;http://activemq.apache.org/cms/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ-CPP&lt;/a&gt; library, so it involves some compiling to make it all work. While building instructions for both ActiveMQ-CPP and pyactivemq and clear and concise, I found some additional steps were need to make it all work on Ubuntu box. I&amp;rsquo;ll post it here for my future reference and hopefully it can be useful to other folks.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in Action MEAP update</title>
      <link>/posts/2009-06-12-activemq-in-action-meap-update/</link>
      <pubDate>Fri, 12 Jun 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-06-12-activemq-in-action-meap-update/</guid>
      <description>&lt;p&gt;There are new chapters available on &lt;em&gt;ActiveMQ in Action&lt;/em&gt; book in &lt;a href=&#34;http://www.manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Manning Early Access Program (MEAP)&lt;/a&gt;. This time you can read:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;Chapter 12 - Tuning ActiveMQ for performance&lt;/em&gt; - gives detailed explanation on various techniques you can use to improve your brokers&amp;rsquo; performances&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;Chapter 14 - Administering and managing ActiveMQ&lt;/em&gt; - explains how to monitor your broker using JMX, advisory messages and such&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Enjoy reading!&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.0.0.28 released</title>
      <link>/posts/2009-06-12-fuse-message-broker-50028-released/</link>
      <pubDate>Fri, 12 Jun 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-06-12-fuse-message-broker-50028-released/</guid>
      <description>&lt;p&gt;Another month, another &lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.0&amp;#43;Release&amp;#43;Notes&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse message broker 5.0 branch update&lt;/a&gt;. This time, it comes with HTTP transport and a message consumer improvements.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ OSGi integration</title>
      <link>/posts/2009-06-10-activemq-osgi-integration/</link>
      <pubDate>Wed, 10 Jun 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-06-10-activemq-osgi-integration/</guid>
      <description>&lt;p&gt;OSGi containers are becoming a deployment platform of choice for many developers these days. That&amp;rsquo;s why nearly all server-side Java software is packaged as OSGi bundles and ActiveMQ is not an exception. I wrote &lt;a href=&#34;http://activemq.apache.org/osgi-integration.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;an article&lt;/a&gt; that goes into the details on how to deploy and use ActiveMQ broker and web console in &lt;a href=&#34;http://felix.apache.org/site/apache-felix-karaf.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache Karaf&lt;/a&gt; (and &lt;a href=&#34;http://servicemix.apache.org/home.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ServiceMix&lt;/a&gt;) OSGi environments. I hope you&amp;rsquo;ll enjoy reading it.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.3.0.2 released</title>
      <link>/posts/2009-06-01-fuse-message-broker-5302-released/</link>
      <pubDate>Mon, 01 Jun 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-06-01-fuse-message-broker-5302-released/</guid>
      <description>&lt;p&gt;We&amp;rsquo;ve cut and thoroughly tested another &lt;a href=&#34;http://fusesource.com/products/enterprise-activemq/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse Message Broker&lt;/a&gt; 5.3 release. If you need a stable 5.3 ActiveMQ version, try it out. You can find more info about this release &lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.3&amp;#43;Release&amp;#43;Notes&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.0.0.27 released</title>
      <link>/posts/2009-05-19-fuse-message-broker-50027-released/</link>
      <pubDate>Tue, 19 May 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-05-19-fuse-message-broker-50027-released/</guid>
      <description>&lt;p&gt;Another incremental improvement of the ActiveMQ 5.0 branch. Check &lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.0&amp;#43;Release&amp;#43;Notes&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;release notes&lt;/a&gt; for more details.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.3.0.1 released</title>
      <link>/posts/2009-04-23-fuse-message-broker-5301-released/</link>
      <pubDate>Thu, 23 Apr 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-04-23-fuse-message-broker-5301-released/</guid>
      <description>&lt;p&gt;While waiting for Apache ActiveMQ 5.3, you can try our latest cut of &lt;a href=&#34;http://fusesource.com/products/enterprise-activemq/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse Message Broker 5.3.0.1&lt;/a&gt;. A lot of issues are &lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.3&amp;#43;Release&amp;#43;Notes&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;already merged&lt;/a&gt; and thoroughly tested. Also, it very easy to do a switch back and forth (take a look at &lt;a href=&#34;http://www.nighttale.net/activemq/fuse-message-broker-5202-released.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;this article&lt;/a&gt; for more details).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Jettison 1.1 released</title>
      <link>/posts/2009-04-23-jettison-11-released/</link>
      <pubDate>Thu, 23 Apr 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-04-23-jettison-11-released/</guid>
      <description>&lt;p&gt;Jettison 1.1 has been released. New features in this release are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;DOM API&lt;/li&gt;&#xA;&lt;li&gt;Type converters&lt;/li&gt;&#xA;&lt;li&gt;OSGi bundle packaging&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You can find the full change log for this release on the &lt;a href=&#34;http://jettison.codehaus.org/Download&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Download page&lt;/a&gt;. Enjoy!&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ continuos intergration</title>
      <link>/posts/2009-04-17-activemq-continuos-intergration/</link>
      <pubDate>Fri, 17 Apr 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-04-17-activemq-continuos-intergration/</guid>
      <description>&lt;p&gt;ActiveMQ has been added to &lt;a href=&#34;http://hudson.dev.java.net/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Hudson continuous-integration server&lt;/a&gt; instance at Apache &lt;a href=&#34;http://hudson.zones.apache.org/hudson/job/ActiveMQ/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://hudson.zones.apache.org/hudson/job/ActiveMQ/&lt;/a&gt;. Now you can have more insight into test runs and snapshot builds. Hudson will also send failure reports to our dev mailing list, making us address them promptly. As a part of this change, the snapshots location and Maven repository has changed. If you&amp;rsquo;re using ActiveMQ snapshots in your projects, be sure to add the following repository to your Maven configuration:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Asynchronous messaging for web sites</title>
      <link>/posts/2009-04-07-asynchronous-messaging-for-web-sites/</link>
      <pubDate>Tue, 07 Apr 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-04-07-asynchronous-messaging-for-web-sites/</guid>
      <description>&lt;p&gt;Nice explanation of importance of asynchronous messaging by &lt;a href=&#34;http://www.dopplr.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Dooplr&lt;/a&gt; CTO &lt;a href=&#34;http://www.hackdiary.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Matt Biddulph&lt;/a&gt; at &lt;a href=&#34;http://2008.dconstruct.org/podcast/transcript-BiddulphJones.php&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;dConstruct 2008&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;And I am not going to any update, but I just want to say to every developer in the room that you need to be playing with asynchronous messaging right now on your servers. You need to grab Apache ActiveMQ or Beanstalk, or play with Amazon&amp;rsquo;s Simple Queue system. And start building a different sort of gearing into your website.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in Action discount</title>
      <link>/posts/2009-03-11-activemq-in-action-discount/</link>
      <pubDate>Wed, 11 Mar 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-03-11-activemq-in-action-discount/</guid>
      <description>&lt;p&gt;If you were planning to buy &lt;a href=&#34;http://manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ in Action&lt;/a&gt; (ebook, print or both), you&amp;rsquo;re in luck. Until March 23rd, you can use coupon code &lt;strong&gt;activemq40&lt;/strong&gt; at Manning site and get 40% off the regular price.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.0.0.26 released</title>
      <link>/posts/2009-02-25-fuse-message-broker-50026-released/</link>
      <pubDate>Wed, 25 Feb 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-02-25-fuse-message-broker-50026-released/</guid>
      <description>&lt;p&gt;Fuse Message Broker 5.0.0.26 is just released. It&amp;rsquo;s mostly a work towards better stability, but there is also a couple of important bug fixes (&lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.0&amp;#43;Release&amp;#43;Notes#FUSEMessageBrokerv5.0ReleaseNotes-ReleaseNotesFUSEMessageBrokerVersion5.0.0.26fuseFebruary25,2009&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;release notes&lt;/a&gt;). If you&amp;rsquo;re still on ActiveMQ 5.0 branch, be sure to give it a try.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Unacking messages with Stomp</title>
      <link>/posts/2009-02-17-unacking-messages-with-stomp/</link>
      <pubDate>Tue, 17 Feb 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-02-17-unacking-messages-with-stomp/</guid>
      <description>&lt;p&gt;Quite often people ask how to &amp;ldquo;unacknowledge&amp;rdquo; the message using Stomp. I wrote a brief FAQ entry (with an example):&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://activemq.apache.org/how-do-i-unack-the-message-with-stomp.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://activemq.apache.org/how-do-i-unack-the-message-with-stomp.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Also, be sure to use 5.3-SNAPSHOT (or later), since there were some improvements in that area recently.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Fuse Message Broker 5.2.0.2 released</title>
      <link>/posts/2009-02-09-fuse-message-broker-5202-released/</link>
      <pubDate>Mon, 09 Feb 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-02-09-fuse-message-broker-5202-released/</guid>
      <description>&lt;p&gt;Fuse Message Broker 5.2.0.2 has just been released, with a couple of issues fixed. You can find release notes &lt;a href=&#34;http://fusesource.com/wiki/display/ProdInfo/FUSE&amp;#43;Message&amp;#43;Broker&amp;#43;v5.2&amp;#43;Release&amp;#43;Notes&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I would like to take this chance to explain &lt;a href=&#34;http://fusesource.com&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Fuse releases&lt;/a&gt; a bit and how you can easily switch between Apache and Fuse releases of ActiveMQ. Apache ActiveMQ and Fuse Message Broker are practically the same software (created from the same code base), but while you can expect Apache ActiveMQ releases every six months or so we try to have a monthly release cycle at Fuse. So, if you wait for version 5.3 to be released and you don&amp;rsquo;t want to use snapshot releases, you can use Fuse Message Broker releases 5.2.0.x which every month include a couple of new fixes. Fuse releases are thoroughly tested, so you can safely use it in your production environment.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>New chapters of ActiveMQ in Action are available online</title>
      <link>/posts/2009-02-05-new-chapters-of-activemq-in-action-are-available-online/</link>
      <pubDate>Thu, 05 Feb 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-02-05-new-chapters-of-activemq-in-action-are-available-online/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re looking for ActiveMQ documentation, you can try reading online chapters of &amp;ldquo;ActiveMQ in Action&amp;rdquo; using Manning Early Access Program (MEAP) - &lt;a href=&#34;http://www.manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://www.manning.com/snyder/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;New chapters has just been added:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chapter 2 provides a detailed overview of ActiceMQ&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chapter 4 explains ActiveMQs message persistence options&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chapter 7 addresses the aspects related to providing messaging services to different platforms&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chapter 12 explains performance tuning techniques&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I hope you&amp;rsquo;ll enjoy reading them.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Message groups just got a bit better</title>
      <link>/posts/2009-01-26-message-groups-just-got-a-bit-better/</link>
      <pubDate>Mon, 26 Jan 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-01-26-message-groups-just-got-a-bit-better/</guid>
      <description>&lt;p&gt;As the first sentence of the &lt;a href=&#34;http://activemq.apache.org/message-groups.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;message groups documentation page&lt;/a&gt; says: message groups rock. One of the problem with them, however, was an inappropriate behavior in case you&amp;rsquo;re adding your consumers for the messages already stored in the broker (with appropriate message group parameters set). This also causes that message groups are not honored in master slave environment, because when master goes down you can end up with your producer sending some messages to the slave before your consumers subscribe.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Sending over failover transport with timeout</title>
      <link>/posts/2009-01-12-sending-over-failover-transport-with-timeout/</link>
      <pubDate>Mon, 12 Jan 2009 00:00:00 +0000</pubDate>
      
      <guid>/posts/2009-01-12-sending-over-failover-transport-with-timeout/</guid>
      <description>&lt;p&gt;The failover transport proved to be useful for many use cases, but had one drawback. When no browsers are available, your send operation will hang. One of the ways to deal with this is to use TransportListener to detect and handle those cases.&lt;/p&gt;&#xA;&lt;p&gt;From 5.3 version onwards, you will be able to use new &lt;em&gt;timeout&lt;/em&gt; option on the protocol that should solve this problem naturally. So, if you use an URL like this:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache ActiveMQ 5.2</title>
      <link>/posts/2008-11-21-apache-activemq-52/</link>
      <pubDate>Fri, 21 Nov 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-11-21-apache-activemq-52/</guid>
      <description>&lt;p&gt;Apache ActiveMQ 5.2 is finally released. It is mainly a maintenance release, but there are also a couple of new features, like extended Advisory support and such. If you use ActiveMQ, be sure to give &lt;a href=&#34;http://activemq.apache.org/activemq-520-release.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;this release&lt;/a&gt; a try.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Stomp v1.1 thoughts</title>
      <link>/posts/2008-09-23-stomp-v11-thoughts/</link>
      <pubDate>Tue, 23 Sep 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-09-23-stomp-v11-thoughts/</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update: There is now a &lt;a href=&#34;http://stomp.codehaus.org/Stomp&amp;#43;v1.1&amp;#43;Ideas&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;wiki page on Stomp site&lt;/a&gt; for this, please go there if you are interested in Stomp v1.1&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;As discussed &lt;a href=&#34;https://issues.apache.org/activemq/browse/AMQ-1609&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;in this thread&lt;/a&gt; some time ago, there is a need to start working on Stomp version 1.1 protocol specification (and implementation), if nothing else then to support types for message properties. I would like to discuss some of the ideas regarding this, before I start working on it. So any thoughts and comment are more than welcomed.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Jettison in practice</title>
      <link>/posts/2008-09-17-jettison-in-practice/</link>
      <pubDate>Wed, 17 Sep 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-09-17-jettison-in-practice/</guid>
      <description>&lt;p&gt;Joel Confino of Chariot Solutions, LLC wrote an &lt;a href=&#34;http://www.infoq.com/articles/First-Cup-Web-2.0-Joel-Confino&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;article&lt;/a&gt; on building Web 2.0 Web applications using jQuery, Spring MVC, and XStream/Jettison. It&amp;rsquo;s good to see &lt;a href=&#34;http://jettison.codehaus.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jettison&lt;/a&gt; in practice :)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-08-11 [delicious.com]</title>
      <link>/posts/2008-08-11-links-for-2008-08-11-deliciouscom/</link>
      <pubDate>Mon, 11 Aug 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-08-11-links-for-2008-08-11-deliciouscom/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://adhearsion.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Home - Adhearsion.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;rails-like framework for developing with asterisk&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://delicious.com/dejanb/voip&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;voip&lt;/a&gt; &lt;a href=&#34;http://delicious.com/dejanb/ruby&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ruby&lt;/a&gt; &lt;a href=&#34;http://delicious.com/dejanb/framework&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;framework&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>ActiveMQ in Action</title>
      <link>/posts/2008-08-08-activemq-in-action/</link>
      <pubDate>Fri, 08 Aug 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-08-08-activemq-in-action/</guid>
      <description>&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;ActiveMQ in Action&#34;&#xA;    src=&#34;http://www.nighttale.net/Images/amqina.jpg&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;As &lt;a href=&#34;http://bsnyderblog.blogspot.com/2008/06/activemq-in-action-free-chapters.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Bruce&lt;/a&gt; and &lt;a href=&#34;http://rajdavies.blogspot.com/2008/08/early-access-to-activemq-in-action.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Rob&lt;/a&gt; already said, our current work on &lt;a href=&#34;http://manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&amp;ldquo;ActiveMQ in Action&amp;rdquo;&lt;/a&gt; book is available in &lt;a href=&#34;http://manning.com/snyder/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Manning Early Access Program (MEAP)&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;We will try to cover all aspects of ActiveMQ, from basic stuff such as JMS basics and how to run ActiveMQ for the first time to complex broker topologies and performance tunning.&lt;/p&gt;&#xA;&lt;p&gt;I hope you&amp;rsquo;ll enjoy reading it.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-07-21</title>
      <link>/posts/2008-07-21-links-for-2008-07-21/</link>
      <pubDate>Mon, 21 Jul 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-07-21-links-for-2008-07-21/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.javalobby.org/java/forums/t75161.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Handling Joins in Ibatis&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Missing from the manual&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/ibatis&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ibatis&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;java&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Jettison 1.0.1 released</title>
      <link>/posts/2008-06-09-jettison-101-released/</link>
      <pubDate>Mon, 09 Jun 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-06-09-jettison-101-released/</guid>
      <description>&lt;p&gt;We&amp;rsquo;re proud to present &lt;a href=&#34;http://jettison.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jettison&lt;/a&gt; 1.0.1 release. This is just a bugfix release, while new features (such as new APIs (DOM and SAX) and type converters) are planed for 1.1 release (which is expected soon). Download 1.0.1 from the &lt;a href=&#34;http://jettison.codehaus.org/Download&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Download&lt;/a&gt; section and refer to the &lt;a href=&#34;http://jettison.codehaus.org/User%27s&amp;#43;Guide&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;User&amp;rsquo;s Guide&lt;/a&gt; for more information.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-04-10</title>
      <link>/posts/2008-04-10-links-for-2008-04-10/</link>
      <pubDate>Thu, 10 Apr 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-04-10-links-for-2008-04-10/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.jroller.com/dscataglini/entry/ubuntu_virtualbox_super_fast_vm&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Virtualbox VM + Ubuntu&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Have to try this out&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/vm&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;vm&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/ubuntu&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ubuntu&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-04-04</title>
      <link>/posts/2008-04-04-links-for-2008-04-04/</link>
      <pubDate>Fri, 04 Apr 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-04-04-links-for-2008-04-04/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.artima.com/forums/flat.jsp?forum=276&amp;amp;thread=228098&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java Community News - Sun Releases Beta of Deployment-Focused Java SE 6 Update&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;JRE 6 update with Java kernel and better support for desktop integration&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/update&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;update&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/kernel&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;kernel&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Indexing repositories</title>
      <link>/posts/2008-03-31-indexing-repositories/</link>
      <pubDate>Mon, 31 Mar 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-03-31-indexing-repositories/</guid>
      <description>&lt;p&gt;Dependency management was always one of the crucial Java project management tasks. It&amp;rsquo;s where tools such as &lt;a href=&#34;http://maven.apache.org/&#34; title=&#34;Maven&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Maven&lt;/a&gt; and &lt;a href=&#34;http://ant.apache.org/ivy/&#34; title=&#34;Ivy&#34; target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Ivy&lt;/a&gt; make all the difference and allow developers to maintain their project dependencies in an easy way. There are two important elements for this to happen:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Centralized repositories - containing library JARs&lt;/li&gt;&#xA;&lt;li&gt;Metadata - describing those JARs and creating repository structure&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is something we have for years thanks to the Maven developers. But if you ever tried to manage dependencies manually in your project, you know how tedious this task can be:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-03-18</title>
      <link>/posts/2008-03-18-links-for-2008-03-18/</link>
      <pubDate>Tue, 18 Mar 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-03-18-links-for-2008-03-18/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://ejohn.org/blog/cross-site-xmlhttprequest/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;John Resig - Cross-Site XMLHttpRequest&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;one small step for Firefox, one giant leap for browsers&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/cross-domain&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;cross-domain&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/ajax&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ajax&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/firefox&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;firefox&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-02-25</title>
      <link>/posts/2008-02-25-links-for-2008-02-25/</link>
      <pubDate>Mon, 25 Feb 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-02-25-links-for-2008-02-25/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://stuffthathappens.com/blog/2008/02/22/o-p-t-i-m-i-z-i-n-g/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;O p t i m i z i n g&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;thoughts that just make sense&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/Java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/optimization&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;optimization&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://project-sam.awardspace.com/index.htm&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Project SAM - Simple Asynchronous Messaging -&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Looks a lot like PHP Stomp client&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/php&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;php&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/messaging&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;messaging&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Customizing Enums</title>
      <link>/posts/2008-02-11-customizing-enums/</link>
      <pubDate>Mon, 11 Feb 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-02-11-customizing-enums/</guid>
      <description>&lt;p&gt;Enumerated types (enums) are a way to define fixed set of constants, so helpful in many areas of software development. In the most common case, in your Java code written for Java 5 or newer, you will use enums for &lt;code&gt;int&lt;/code&gt; constants and replace chunks of code that look like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    public static final int DIRECTION_NORTH     = 0;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    public static final int DIRECTION_SOUTH     = 1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    public static final int DIRECTION_EAST      = 2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    public static final int DIRECTION_WEST      = 3;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;with something like this&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-02-08</title>
      <link>/posts/2008-02-08-links-for-2008-02-08/</link>
      <pubDate>Fri, 08 Feb 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-02-08-links-for-2008-02-08/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.2038bug.com/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;The year 2038 bug&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;will it ever end?&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/2038&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;2038&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/bug&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;bug&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/programming&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;programming&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Jettison 1.0 RC3 Snapshot</title>
      <link>/posts/2008-02-06-jettison-10-rc3-snapshot/</link>
      <pubDate>Wed, 06 Feb 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-02-06-jettison-10-rc3-snapshot/</guid>
      <description>&lt;p&gt;For those who can&amp;rsquo;t wait for 1.0 RC3 to be released (with fixed behavior for &lt;a href=&#34;http://jira.codehaus.org/browse/JETTISON-18&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;converting nested lists and maps from XStream&lt;/a&gt;), you can download patched snapshot from &lt;a href=&#34;http://www.nighttale.net/download/jettison-1.0-RC3-SNAPSHOT.jar&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-01-17</title>
      <link>/posts/2008-01-17-links-for-2008-01-17/</link>
      <pubDate>Thu, 17 Jan 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-01-17-links-for-2008-01-17/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://blogs.sun.com/jonathan/entry/winds_of_change_are_blowing&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jonathan Schwartz&amp;rsquo;s Blog: Helping Dolphins Fly&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;sun buys mysql form $1billio&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/sun&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;sun&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/mysql&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;mysql&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://java.sun.com/javase/6/webnotes/ReleaseNotes.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java SE 6 Update 4 Release Notes.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;a lot of bug fixes&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;java&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-01-09</title>
      <link>/posts/2008-01-09-links-for-2008-01-09/</link>
      <pubDate>Wed, 09 Jan 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-01-09-links-for-2008-01-09/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.howtoforge.com/ubuntu_internet_explorer&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;How To Install Internet Explorer On Ubuntu (Feisty Fawn, Edgy Eft And Dapper Drake) | HowtoForge - Linux Howtos and Tutorials&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;installed 2.0.5 on gutsy &amp;hellip; works like a charm&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/ubuntu&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ubuntu&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/linux&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;linux&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/ie&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ie&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2008-01-04</title>
      <link>/posts/2008-01-04-links-for-2008-01-04/</link>
      <pubDate>Fri, 04 Jan 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-01-04-links-for-2008-01-04/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://intertwingly.net/blog/2008/01/04/WORA&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Sam Ruby: WORA&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;django on jython&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/django&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;django&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/jython&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;jython&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/jvm&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;jvm&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Dealing with large code bases</title>
      <link>/posts/2008-01-02-dealing-with-large-code-bases/</link>
      <pubDate>Wed, 02 Jan 2008 00:00:00 +0000</pubDate>
      
      <guid>/posts/2008-01-02-dealing-with-large-code-bases/</guid>
      <description>&lt;p&gt;If you haven&amp;rsquo;t already, be sure to read &lt;a href=&#34;http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Steve Yegge&amp;rsquo;s post&lt;/a&gt; on his experience of dealing with large code bases (it&amp;rsquo;s a bit long post but an excellent read).&lt;/p&gt;&#xA;&lt;p&gt;He explains the maintenance nightmare of his 500.000 lines of code game written in Java and quite correctly concludes that code size is a crucial problem for big software projects.&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;My minority opinion is that a mountain of code is the worst thing that can befall a person, a team, a company. I believe that code weight wrecks projects and companies, that it forces rewrites after a certain size, and that smart teams will do everything in their power to keep their code base from becoming a mountain. Tools or no tools. That&amp;rsquo;s what I believe.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Securing Stomp</title>
      <link>/posts/2007-12-25-securing-stomp/</link>
      <pubDate>Tue, 25 Dec 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-12-25-securing-stomp/</guid>
      <description>&lt;p&gt;If you ever wanted to use &lt;a href=&#34;http://stomp.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp messaging protocol&lt;/a&gt; with secured &lt;a href=&#34;http://activemq.apache.org/security.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ broker&lt;/a&gt;, you can now &lt;a href=&#34;http://activemq.apache.org/stomp.html#Stomp-Security&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;do it&lt;/a&gt; by downloading a &lt;a href=&#34;http://people.apache.org/repo/m2-snapshot-repository/org/apache/activemq/apache-activemq/5.1-SNAPSHOT/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;5.1 snapshot distribution&lt;/a&gt;. For more Stomp messaging security over unsecured networks you can additionally use &lt;a href=&#34;http://activemq.apache.org/stomp.html#Stomp-EnablingStompoverSSL&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Stomp over SSL&lt;/a&gt;, which makes Stomp + ActiveMQ perfectly secure messaging environment over unsecured networks. If PHP is your environment of choice, the PHP Stomp client implements these &lt;a href=&#34;http://stomp.codehaus.org/PHP&amp;#43;Security&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;security mechanisms&lt;/a&gt; completely (including &lt;a href=&#34;http://stomp.codehaus.org/PHP&amp;#43;Connectivity#PHPConnectivity-SSL&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;SSL connectivity&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Happy Holidays.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-12-17</title>
      <link>/posts/2007-12-17-links-for-2007-12-17/</link>
      <pubDate>Mon, 17 Dec 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-12-17-links-for-2007-12-17/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://blogs.sun.com/andreas/entry/no_more_unable_to_find&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Andreas Sterbenz&amp;rsquo;s Blog : Weblog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;useful utility class/application for adding server ssl certificates to keystores&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/ssl&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ssl&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/jsse&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;jsse&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-12-07</title>
      <link>/posts/2007-12-07-links-for-2007-12-07/</link>
      <pubDate>Fri, 07 Dec 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-12-07-links-for-2007-12-07/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://do.davebsd.com/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;GNOME Do&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;quick-launcher for gnome&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/gnome&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;gnome&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/launcher&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;launcher&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/ubuntu&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ubuntu&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://daveshields.wordpress.com/2007/11/29/xo-laptop-on-the-open-sourcing-of-business/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;xo-laptop: On the Open-Sourcing of Business « The Wayward Word Press&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;business side of open source&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/opensource&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;opensource&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/business&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;business&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Extension methods proposals</title>
      <link>/posts/2007-12-05-extension-methods-proposals/</link>
      <pubDate>Wed, 05 Dec 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-12-05-extension-methods-proposals/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a quite interesting discussion in the blogosphere about proposed &lt;em&gt;extension methods&lt;/em&gt; feature for Java 7. The problem tackled by this proposal is how to extend an API (interface) with new methods without breaking existing implementations. The example used in a discussion is a &lt;code&gt;List&lt;/code&gt; interface and the &lt;code&gt;sort()&lt;/code&gt; method. In order to add another method to the existing interface, Java developers today create static utility functions. Take for example the &lt;a href=&#34;http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;code&gt;java.util.Collections&lt;/code&gt;&lt;/a&gt; class, which is a set of static helper methods for working with collections. Among them is of course the aforementioned &lt;code&gt;sort&lt;/code&gt; method. Here&amp;rsquo;s a simple example:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-11-29</title>
      <link>/posts/2007-11-29-links-for-2007-11-29/</link>
      <pubDate>Thu, 29 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-29-links-for-2007-11-29/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.scripting.com/stories/2007/11/28/programmingLess.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Programming less (Scripting News)&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The design of the central data structure of an app determines the quality of the app, in every way.&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/complexity&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;complexity&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/development&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;development&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/software&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;software&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://teethgrinder.co.uk/open-flash-chart/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Open Flash Chart -&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Beautiful flash chart library&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/flash&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;flash&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/graph&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;graph&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/opensource&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;opensource&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/charts&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;charts&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Multiple Apache instances on Gentoo box</title>
      <link>/posts/2007-11-27-multiple-apache-instances-on-gentoo-box/</link>
      <pubDate>Tue, 27 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-27-multiple-apache-instances-on-gentoo-box/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve started looking how to enable both PHP4 and PHP5 on our (relatively) new dev box running &lt;a href=&#34;http://www.gentoo.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Gentoo&lt;/a&gt;. The box is already running PHP4 so the task was to add PHP5 support as well.&lt;/p&gt;&#xA;&lt;p&gt;The official &lt;a href=&#34;http://www.gentoo.org/proj/en/php/php4-php5-configuration.xml&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;guide&lt;/a&gt; is rich in options you can use to achieve this. I didn&amp;rsquo;t want any CGI since we use PHP vhost configurations extensively and I didn&amp;rsquo;t want to deal with suPHP as well. Since it is a dev box, it is totally OK to have two instances with similar configurations running on two different ports. Unfortunately, it is the part of the official docs that is not as complete as other parts and not working as advertised. So, here&amp;rsquo;s a mental note (for me) and perhaps a few hour saver for others.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Groovy StAX builder</title>
      <link>/posts/2007-11-26-groovy-stax-builder/</link>
      <pubDate>Mon, 26 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-26-groovy-stax-builder/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve always loved &lt;a href=&#34;http://groovy.codehaus.org/Builders&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Groovy builders concept&lt;/a&gt; for handling (mostly creating) hierarchical documents. On the other hand I find &lt;a href=&#34;http://stax.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;StAX&lt;/a&gt;, pull-based processing API, to be one of my favorite methods for dealing with simple XML processing. It&amp;rsquo;s simple and fast, so what more can I ask for? Additionally, thanks to the &lt;a href=&#34;http://jettison.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jettison project&lt;/a&gt; you can also use the StAX API to handle JSON documents. So, basically we can use one simple (standard) API to handle both XML and JSON documents in the same manner. The next logical step is to merge these two great pieces of technology into one.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-11-26</title>
      <link>/posts/2007-11-26-links-for-2007-11-26/</link>
      <pubDate>Mon, 26 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-26-links-for-2007-11-26/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://ctrl-shift-b.blogspot.com/2007/08/interactive-application-architecture.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Ctrl-Shift-B: Interactive Application Architecture Patterns&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;article discussing/comparing MVC and a few similar design patterns&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/Patterns&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Patterns&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/programming&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;programming&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/architecture&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;architecture&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-11-20</title>
      <link>/posts/2007-11-20-links-for-2007-11-20/</link>
      <pubDate>Tue, 20 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-20-links-for-2007-11-20/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://timshadel.com/2006/08/28/building-a-megajar-with-maven2-the-right-way/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Zdot » Blog Archive » Building a Megajar with Maven2 - The Right Way&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Use assembly plugin to create uberjar&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/maven2&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;maven2&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/uberjar&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;uberjar&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/assembly&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;assembly&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>XStream and Spring OXM (Object/XML Mapping framework)</title>
      <link>/posts/2007-11-16-xstream-and-spring-oxm-objectxml-mapping-framework/</link>
      <pubDate>Fri, 16 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-16-xstream-and-spring-oxm-objectxml-mapping-framework/</guid>
      <description>&lt;p&gt;It all started when I tried to find a solution for customizing an &lt;a href=&#34;http://xstream.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;XStream&lt;/a&gt; instance for my &lt;a href=&#34;http://activemq.apache.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; XStream message transformer that would be better than currently used (extending a base transformer and providing a custom factory method that will do things like alias, converter, annotation, etc. settings). I wanted an easy solution to configure XStream instance in a Spring xml configuration file used in my application and provide that instance to all beans that need it (message transformer among others).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IJTC Wrap up</title>
      <link>/posts/2007-11-12-ijtc-wrap-up/</link>
      <pubDate>Mon, 12 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-12-ijtc-wrap-up/</guid>
      <description>&lt;p&gt;I had some really great time in Dublin at &lt;a href=&#34;http://ijtc.firstport.ie/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;IJTC&lt;/a&gt; last week. Good people, good sessions and a lot of fun; what else could one expect?&lt;/p&gt;&#xA;&lt;p&gt;There were a few sessions that covered projects that I&amp;rsquo;ve had on my radar for some time but never found time to look closer, such as &lt;a href=&#34;http://activemq.apache.org/camel/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache Camel&lt;/a&gt; and &lt;a href=&#34;http://www.springframework.org/spring-batch&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Spring Batch&lt;/a&gt;. Also, it&amp;rsquo;s always good to hear about good ol&amp;rsquo; stuff (and what&amp;rsquo;s new about them), so sessions about &lt;a href=&#34;http://www.springframework.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Spring 2.5&lt;/a&gt;, &lt;a href=&#34;http://activemq.apache.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt;, &lt;a href=&#34;http://groovy.codehaus.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Groovy&lt;/a&gt; &amp;amp; &lt;a href=&#34;http://grails.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Grails&lt;/a&gt; were well appreciated.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Future of Java</title>
      <link>/posts/2007-11-06-future-of-java/</link>
      <pubDate>Tue, 06 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-06-future-of-java/</guid>
      <description>&lt;p&gt;Tomorrow, on Wednesday 7th, there will be a panel at &lt;a href=&#34;http://ijtc.firstport.ie&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;IJTC&lt;/a&gt; with Joel Spolsky and James Strachan discussing the future of Java. It sounds very compiling to me and I hope to meet you there.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>CVS, CentOS and SELinux</title>
      <link>/posts/2007-11-02-cvs-centos-and-selinux/</link>
      <pubDate>Fri, 02 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-02-cvs-centos-and-selinux/</guid>
      <description>&lt;p&gt;I was migrating a CVS repository from one server to another today and ran on the interesting issue. I was getting a &amp;ldquo;Permission denied&amp;rdquo; error on the &lt;code&gt;CVSROOT/config&lt;/code&gt; file no matter what privileges were set. It turns out that problem is with SELinux on CentOS, so the easiest solution is to just turn it off.&lt;/p&gt;&#xA;&lt;p&gt;/usr/sbin/setenforce 0&lt;/p&gt;&#xA;&lt;p&gt;If you want to be sure that it will be turned off after the server restart, just edit the &lt;code&gt;/etc/sysconfig/selinux&lt;/code&gt; file and set &lt;code&gt;SELINUX&lt;/code&gt; to &lt;code&gt;permissive&lt;/code&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-11-01</title>
      <link>/posts/2007-11-01-links-for-2007-11-01/</link>
      <pubDate>Thu, 01 Nov 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-11-01-links-for-2007-11-01/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.cyberciti.biz/faq/howto-move-migrate-user-accounts-old-to-new-server/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Move or migrate user accounts from old Linux server to a new Linux server&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;nice checklist for migrating linux servers - just copy/paste commands and you&amp;rsquo;re done&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/linux&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;linux&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/migration&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;migration&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/sysadmin&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;sysadmin&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/server&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;server&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-10-26</title>
      <link>/posts/2007-10-26-links-for-2007-10-26/</link>
      <pubDate>Fri, 26 Oct 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-10-26-links-for-2007-10-26/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://labs.mozilla.com/2007/10/prism/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Mozilla Labs Blog » Blog Archive » Prism&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;thank you!&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/mozilla&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;mozilla&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/web&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;web&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/applications&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;applications&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>IJTC Session</title>
      <link>/posts/2007-10-24-ijtc-session/</link>
      <pubDate>Wed, 24 Oct 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-10-24-ijtc-session/</guid>
      <description>&lt;p&gt;I will be speaking on &lt;a href=&#34;http://today.java.net/pub/a/today/2007/09/20/scripting-balance-design-performance.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Scripting with balance&lt;/a&gt; at &lt;a href=&#34;http://ijtc.firstport.ie/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Irish Java Technology Conference in Dublin (IJTC)&lt;/a&gt; on November 9th, 2007. The full announcement could be found &lt;a href=&#34;http://ijtc.firstport.ie/lecture.aspx?lid=24&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-10-18</title>
      <link>/posts/2007-10-18-links-for-2007-10-18/</link>
      <pubDate>Thu, 18 Oct 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-10-18-links-for-2007-10-18/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://almaer.com/blog/migrating-data-centers-with-zero-downtime&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Migrating data centers with zero downtime on Dion Almaer&amp;rsquo;s Blog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;often forgotten knowledge of web application migration&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/web&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;web&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/application&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;application&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/migration&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;migration&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.infoq.com/news/2007/10/mysqlproxyrwsplitting&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;InfoQ: Read/Write Splitting with MySQL-Proxy&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;very nice stuff&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/database&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;database&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/mysql&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;mysql&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Multi-Language VM</title>
      <link>/posts/2007-10-17-multi-language-vm/</link>
      <pubDate>Wed, 17 Oct 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-10-17-multi-language-vm/</guid>
      <description>&lt;p&gt;OpenJDK community has a new project, &lt;em&gt;Multi-Language VM&lt;/em&gt; (or just &lt;em&gt;mlvm&lt;/em&gt;). It is announced by John Rose, from Sun, on the &lt;a href=&#34;http://mail.openjdk.java.net/pipermail/announce/2007-October/000016.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;announcement list&lt;/a&gt;. The focus of the project will be to prototype JVM features beneficial for dynamic languages and remove &amp;ldquo;pain points&amp;rdquo; that current dynamic language developers have with standard JVM.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the snippet from the announcement:&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;This project will be open for prototyping JVM features aimed at efficiently supporting languages other than Java.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-10-06</title>
      <link>/posts/2007-10-06-links-for-2007-10-06/</link>
      <pubDate>Sat, 06 Oct 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-10-06-links-for-2007-10-06/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.gamearchitect.net/Articles/SoftwareIsHard.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Software Is Hard&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;the title says it all&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/software&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;software&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/development&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;development&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/complexity&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;complexity&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-09-26</title>
      <link>/posts/2007-09-26-links-for-2007-09-26/</link>
      <pubDate>Wed, 26 Sep 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-09-26-links-for-2007-09-26/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.ibm.com/developerworks/java/library/j-java6perfmon/index.html?ca=drs-&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Monitor and diagnose performance in Java SE 6&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java SE 6 Monitoring and management enhancements&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/Java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/jmx&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;jmx&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.ntop.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Welcome to ntop.org&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;network monitoring tool&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/network&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;network&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/monitoring&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;monitoring&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Scripting with Balance in Design and Performance</title>
      <link>/posts/2007-09-21-scripting-with-balance-in-design-and-performance/</link>
      <pubDate>Fri, 21 Sep 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-09-21-scripting-with-balance-in-design-and-performance/</guid>
      <description>&lt;p&gt;java.net has published an article titled &lt;a href=&#34;http://today.java.net/pub/a/today/2007/09/20/scripting-balance-design-performance.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Scripting with Balance in Design and Performance&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>JUG-NS session</title>
      <link>/posts/2007-09-18-jug-ns-session-2/</link>
      <pubDate>Tue, 18 Sep 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-09-18-jug-ns-session-2/</guid>
      <description>&lt;p&gt;I will be speaking on &lt;a href=&#34;http://www.scriptinginjava.net&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Scripting in Java&lt;/a&gt; in Novi Sad on September 19th, 2007. The full announcement could be found &lt;a href=&#34;https://jug-ns.dev.java.net/servlets/ReadMsg?list=announcement&amp;amp;msgNo=34&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt; (in Serbian)&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>links for 2007-09-12</title>
      <link>/posts/2007-09-12-links-for-2007-09-12/</link>
      <pubDate>Wed, 12 Sep 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-09-12-links-for-2007-09-12/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.jayasoft.fr/org/modules/ivy/overview.php?&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jayasoft Community Site - Ivy&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Dependency manager for Ant&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/Java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/Ant&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Ant&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/opensource&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;opensource&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.liquibase.org/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;LiquiBase: Database Refactoring&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nice database refactoring tool&lt;/p&gt;&#xA;&lt;p&gt;(tags: &lt;a href=&#34;http://del.icio.us/dejanb/database&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;database&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/refactoring&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;refactoring&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/java&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;java&lt;/a&gt; &lt;a href=&#34;http://del.icio.us/dejanb/opensource&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;opensource&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      
    </item>
    
    <item>
      <title>Scripting API for everyone</title>
      <link>/posts/2007-09-12-scripting-api-for-everyone/</link>
      <pubDate>Wed, 12 Sep 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-09-12-scripting-api-for-everyone/</guid>
      <description>&lt;p&gt;I definitely think that dynamic languages for Java platform is an &lt;a href=&#34;http://www.scriptinginjava.net&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;important topic&lt;/a&gt;. In that context, a &lt;a href=&#34;http://java.sun.com/javase/6/docs/technotes/guides/scripting/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Scripting API&lt;/a&gt; as a standardized scripting framework has its own role for Java developers. It is definitely a good thing it is included in JDK 6, but the lack of proper support for earlier JDK&amp;rsquo;s, in my opinion, slows down its wider adoption.&lt;/p&gt;&#xA;&lt;p&gt;Why is this important? On one side, there are developers that work on &amp;ldquo;in-house&amp;rdquo; applications and solutions. Although it may seem that JDK (or JRE) upgrade process in such environments is not a big deal, it is usually a process that is pretty inertial. Many arguments are used in discussions, from compatibility issues and testing needs to &amp;ldquo;don&amp;rsquo;t fix it if it ain&amp;rsquo;t broken&amp;rdquo;, but also the inertia factor could be often associated to plain laziness.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Daily Snapshots</title>
      <link>/posts/2007-07-27-daily-snapshots/</link>
      <pubDate>Fri, 27 Jul 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-07-27-daily-snapshots/</guid>
      <description>&lt;p&gt;From today on, continuous integration process is set up for JQR and daily snapshots are available in the &lt;a href=&#34;http://www.sensatic.org/mvn-snapshot/org/sensatic/jqr/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;repository&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Asynchronous job execution</title>
      <link>/posts/2007-07-18-asynchronous-job-execution/</link>
      <pubDate>Wed, 18 Jul 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-07-18-asynchronous-job-execution/</guid>
      <description>&lt;p&gt;In software development we are often encouraged to decouple things in order to achieve greater flexibility in our code. So we decouple model objects from views, interfaces from their implementation, etc.&lt;/p&gt;&#xA;&lt;p&gt;Here, I would like to write about different kind of decoupling, front-end from back-end. In many cases, projects tend to depend on resources that are either unreliable or overloaded. For example, besides your &amp;ldquo;main&amp;rdquo; database, you may need to write data to some LDAP server that is overloaded or you need to provide some data to the resources over the unreliable network connection. In most of these use cases, these operations are triggered by users through the user interface (web or stand-alone application). It is totally unnecessary (and usually unacceptable) to have your users wait a few minutes for operation to complete or in worse case to have dysfunctional system just because one resource is unavailable.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>JQR 1.2.0 released</title>
      <link>/posts/2007-06-29-jqr-120-released/</link>
      <pubDate>Fri, 29 Jun 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-06-29-jqr-120-released/</guid>
      <description>&lt;p&gt;Sensatic JQR 1.2.0 has been &lt;a href=&#34;http://www.sensatic.org/jqr/Download&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;released&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Eclipse Europa</title>
      <link>/posts/2007-06-15-eclipse-europa/</link>
      <pubDate>Fri, 15 Jun 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-06-15-eclipse-europa/</guid>
      <description>&lt;p&gt;On 29 June, Eclipse community will be richer for the new &lt;a href=&#34;http://www.eclipse.org/europa/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Europa release&lt;/a&gt;. It is a coordinate release of &lt;a href=&#34;http://www.eclipse.org/europa/projects.php&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;21 Eclipse Foundation projects&lt;/a&gt;. The main component of this release is certainly new 3.3 version of the &lt;a href=&#34;http://www.eclipse.org/platform/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eclipse Platform&lt;/a&gt;. Others include prominent projects from domains of administration, modeling, development and tools, such as &lt;a href=&#34;http://www.eclipse.org/ecf/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eclipse Communications Framework (ECF)&lt;/a&gt;, &lt;a href=&#34;http://www.eclipse.org/modeling/emf/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eclipse Modeling Framework Project (EMF)&lt;/a&gt;, &lt;a href=&#34;http://www.eclipse.org/dltk/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Dynamic Languages Tool Kit (DLTK)&lt;/a&gt; and &lt;a href=&#34;http://www.eclipse.org/birt/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Business Intelligence Reporting Tools (BIRT)&lt;/a&gt;. This is definitely an important Eclipse release and a good news for all Eclipse users.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Integrating ActiveMQ Web Console</title>
      <link>/posts/2007-06-07-integrating-activemq-web-console/</link>
      <pubDate>Thu, 07 Jun 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-06-07-integrating-activemq-web-console/</guid>
      <description>&lt;p&gt;If you build an application that integrates &lt;a href=&#34;http://activemq.apache.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;ActiveMQ&lt;/a&gt; broker, it makes sense that you want to integrate its &lt;a href=&#34;http://activemq.apache.org/web-console.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;web console&lt;/a&gt; as well. It provides your users with basic monitoring and management operations. One road you can take is to integrate it as a WAR archive, but as you already have a whole lot of ActiveMQ integrated, you probably want to include just necessary subset of libraries and files and always have most up to date version of it.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>JQR 1.1.0 released</title>
      <link>/posts/2007-06-02-jqr-110-released/</link>
      <pubDate>Sat, 02 Jun 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-06-02-jqr-110-released/</guid>
      <description>&lt;p&gt;Sensatic JQR 1.1.0 has been &lt;a href=&#34;http://www.sensatic.org/jqr/Download&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;released&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>(Not yet)Commons SSL</title>
      <link>/posts/2007-05-30-not-yetcommons-ssl/</link>
      <pubDate>Wed, 30 May 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-05-30-not-yetcommons-ssl/</guid>
      <description>&lt;p&gt;If you ever tried to work with SSL Socket connections in Java, you probably know that Java, by default, supports its own JKS and PKCS12 certificate formats. For those who need to work with &lt;a href=&#34;http://www.openssl.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;OpenSSL&lt;/a&gt; it is usually suggested to convert keys and certificates to PKCS12 and then import them in the keystore using the &lt;code&gt;keytool&lt;/code&gt; command provided with the JDK.&lt;/p&gt;&#xA;&lt;p&gt;While all this is not a big deal for most of the applications, there should be a better solution for projects that rely heavily on SSL. &lt;a href=&#34;http://juliusdavies.ca/commons-ssl/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Not-yet-commons-ssl&lt;/a&gt; project, called liked this because it is still in the &lt;a href=&#34;http://wiki.apache.org/incubator/CommonsSSLProposal&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache incubation process&lt;/a&gt;, aims to simplify Java and SSL integration.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>XStream 1.2.2</title>
      <link>/posts/2007-05-25-xstream-122/</link>
      <pubDate>Fri, 25 May 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-05-25-xstream-122/</guid>
      <description>&lt;p&gt;XStream 1.2.2 is released with &lt;code&gt;JettisonMappedXmlDriver&lt;/code&gt; used for serialization and deserialization from JSON. It is the driver first presented in &lt;a href=&#34;http://www.oreillynet.com/onjava/blog/2007/01/java_and_json.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Java and JSON&lt;/a&gt; post. All modifications are submitted to Jettison and XStream projects respectfully and documented in an appropriate tutorial (&lt;a href=&#34;http://xstream.codehaus.org/json-tutorial.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://xstream.codehaus.org/json-tutorial.html&lt;/a&gt;). From now on, XStream has a full support for JSON serialization. Enjoy.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Changing CVS Root from shell</title>
      <link>/posts/2007-05-24-changing-cvs-root-from-shell/</link>
      <pubDate>Thu, 24 May 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-05-24-changing-cvs-root-from-shell/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a simple script that recursively changes &lt;code&gt;CVS/Root&lt;/code&gt; files in the project tree&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name Root -exec sh -c &amp;#39;echo :pserver:example@cvs.example.com:2401/var/cvsroot &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; {}&amp;#39; \;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Note &lt;code&gt;sh -c&lt;/code&gt; segment of &lt;code&gt;-exec&lt;/code&gt; switch, which is necessary in order to successfully redirect to appropriate files.&lt;/p&gt;&#xA;&lt;p&gt;This could be useful for updating deployed projects with the repository that has moved (for any reason).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Scripting and asynchronous messaging</title>
      <link>/posts/2007-05-04-scripting-and-asynchronous-messaging/</link>
      <pubDate>Fri, 04 May 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-05-04-scripting-and-asynchronous-messaging/</guid>
      <description>&lt;p&gt;One of the lessons we can learn from early success of the Web was making of ideal environment for use of scripts. There were two main components of the Web platform:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Web server (Apache), as an infrastructural component that had to be fast and reliable&lt;/li&gt;&#xA;&lt;li&gt;Web application as a collection of scripts (Perl, PHP, Python), providing the content in an easy manner&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The Web as we know it today is a much different place; applications talk to each other through variety of web service protocols, we have Ajax and all these new cool toys. But one principle remains the same: we need reliable infrastructure software with easy integration of scripts for fast creation of content and logic.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Can Servlet containers scale?</title>
      <link>/posts/2007-04-04-can-servlet-containers-scale/</link>
      <pubDate>Wed, 04 Apr 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-04-04-can-servlet-containers-scale/</guid>
      <description>&lt;p&gt;Filip Hanik of Covalent Technologies wrote an &lt;a href=&#34;http://blog.covalent.net/roller/covalent/entry/20070308&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;excellent article&lt;/a&gt; in which he describes his series of performance/scalability tests of the new NIO connector that has been added to Tomcat 6. In tests he also includes Jetty and Glassfish containers. The article contains very good explanation of challenges in adapting NIO environment to blocking IO requirements. The good news is that the answer to the question from the title is yes, servlet containers can scale, led by Tomcat 6 that handled 16000 concurrent connections without problems.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Velocity 1.5</title>
      <link>/posts/2007-03-21-velocity-15/</link>
      <pubDate>Wed, 21 Mar 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-03-21-velocity-15/</guid>
      <description>&lt;p&gt;As you all have probably heard, &lt;a href=&#34;http://velocity.apache.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Velocity&lt;/a&gt; 1.5 was released last week. It is the first release of this project in last three years. This is certainly a long release cycle and it is not unusual that some people considered it a &amp;ldquo;dead project&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;I have some projects that use Velocity as a template engine of choice and over the time I&amp;rsquo;ve collected a &amp;ldquo;wish list&amp;rdquo; of features that I missed. Due to lack of new releases, I&amp;rsquo;ve considered switching to other template engines, such as &lt;a href=&#34;http://freemarker.sourceforge.net/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;FreeMarker&lt;/a&gt; and &lt;a href=&#34;http://www.webmacro.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;WebMacro&lt;/a&gt;, but actually never found time to do that.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>New Date/Time and Rest APIs for Java</title>
      <link>/posts/2007-02-22-new-datetime-and-rest-apis-for-java/</link>
      <pubDate>Thu, 22 Feb 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-02-22-new-datetime-and-rest-apis-for-java/</guid>
      <description>&lt;p&gt;There has been some very interesting activity in JCP land lately, namely acceptance of new &lt;a href=&#34;http://jcp.org/en/jsr/detail?id=310&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Date and Time API&lt;/a&gt; (JSR 310) and proposal of the &lt;a href=&#34;http://jcp.org/en/jsr/detail?id=311&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JavaTM API for RESTful Web Services&lt;/a&gt; (JSR 311).&lt;/p&gt;&#xA;&lt;p&gt;Usual first reactions to the JSR 310 that I saw on the web were &amp;ldquo;finally&amp;rdquo; or &amp;ldquo;too late&amp;rdquo;, but I think that &amp;ldquo;better late then never&amp;rdquo; should be applied in this case. People behind this specification are developers of &lt;a href=&#34;http://joda-time.sourceforge.net/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Joda time&lt;/a&gt; and this API will be heavily based on Joda time, which has been an excellent replacement for traditional Java date/calendar API (and must-have tool in your toolbox) for years. Beside the initial goal, to provide lightweight and simple API, one of the area of interest will be interoperability with JDBC. The general attitude toward this spec is maybe best described by the Google&amp;rsquo;s voting comment: &lt;em&gt;On 2007-01-30 Google Inc. voted Yes with the following comment: We are thrilled to see this happen!&lt;/em&gt; Hopefully, this specification will be included in Java 7.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Tuning Derby</title>
      <link>/posts/2007-01-31-tuning-derby/</link>
      <pubDate>Wed, 31 Jan 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-01-31-tuning-derby/</guid>
      <description>&lt;p&gt;OnJava has published an article titled &lt;a href=&#34;http://www.onjava.com/pub/a/onjava/2007/01/31/tuning-derby.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Tuning Derby&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Singletons and lazy loading</title>
      <link>/posts/2007-01-26-singletons-and-lazy-loading/</link>
      <pubDate>Fri, 26 Jan 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-01-26-singletons-and-lazy-loading/</guid>
      <description>&lt;p&gt;Probably the first design pattern that every software developer learns is Singleton and lazy loading of Singleton classes.&lt;/p&gt;&#xA;&lt;p&gt;The usual example, goes something like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;public class Singleton {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; static Singleton instance;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  public static synchronized Singleton getInstance() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    if (instance == null)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      instance == new Singleton();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    return instance;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;The problem with this solution is that synchronized method &lt;code&gt;getInstance()&lt;/code&gt; is called every time, while synchronization is actually needed only for the first call of the method (which introduces performance overhead in your application). There were attempts to tackle this problem by using Double-checked locking pattern, which although great in theory &lt;a href=&#34;http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;didn&amp;rsquo;t work in practice&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Java and JSON</title>
      <link>/posts/2007-01-12-java-and-json/</link>
      <pubDate>Fri, 12 Jan 2007 00:00:00 +0000</pubDate>
      
      <guid>/posts/2007-01-12-java-and-json/</guid>
      <description>&lt;p&gt;It seems that &lt;a href=&#34;http://ajaxian.com/archives/json-vs-xml-the-debate&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JSON vs. XML&lt;/a&gt; debate was one of the hot topics for this winter. Again, I think that &amp;ldquo;vs.&amp;rdquo; part is sufficient and that both XML and JSON should have their place in overall technology landscape. One of the obvious JSON advantages is that it can be directly evaluated in JavaScript. And for the Ajax-world we live in, it is not a small thing.&lt;/p&gt;&#xA;&lt;p&gt;For one project, I started looking for a library that would enable me easy transformations between Java and JSON data. &lt;a href=&#34;http://www.json.org/java/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JSON in Java&lt;/a&gt; looks nice, but what I really want is a more automated and configurable library like those we have for XML processing. My first thought was &lt;a href=&#34;http://xstream.codehaus.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;XStream&lt;/a&gt; since I like its simple API, extensible architecture, powerful converters and support for annotations. After first check I found that from version 1.2 on there is a partial support for JSON (which was logical thing to expect). So, currently you can serialize your Java objects to JSON format. Here&amp;rsquo;s a little example:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache XML-RPC 3.0 - No thanks</title>
      <link>/posts/2006-12-01-apache-xml-rpc-30-no-thanks/</link>
      <pubDate>Fri, 01 Dec 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-12-01-apache-xml-rpc-30-no-thanks/</guid>
      <description>&lt;p&gt;I have this project that started years ago and still uses old Apache 1.1 version of the XML-RPC library. A few days ago I needed to add an extra functionality to the services it exposes. The underlying API for the new service works a lot with array of objects which is not friendly with that version of XML-RPC library.&lt;br&gt;&#xA;The thing is that up until version 3.x of Apache library, &lt;code&gt;Vector&lt;/code&gt; and &lt;code&gt;Hashtable&lt;/code&gt; were only Java classes that could be used for &lt;a href=&#34;http://ws.apache.org/xmlrpc/xmlrpc2/types.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;transferring collections&lt;/a&gt; (&lt;code&gt;&amp;lt;array&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;struct&amp;gt;&lt;/code&gt; XML-RPC types respectively). So naturally, I thought this was an ideal opportunity to upgrade to 3.x version, which is &lt;a href=&#34;http://ws.apache.org/xmlrpc/types.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;much better&lt;/a&gt; in handling various Java constructs (&lt;code&gt;Object[]&lt;/code&gt; among them) as XML-RPC types. This is where surprises started to pop up.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Playing with XFire</title>
      <link>/posts/2006-11-17-playing-with-xfire/</link>
      <pubDate>Fri, 17 Nov 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-11-17-playing-with-xfire/</guid>
      <description>&lt;p&gt;Every once in a while I get some WSDL file and a task to create a Java client (and a service for testing purposes) that will use a defined service. I&amp;rsquo;ve tried &lt;a href=&#34;http://xfire.codehaus.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;XFire&lt;/a&gt; a couple of times before (version was 1.1 in those days). But it never actually managed to create stub client and servers classes from &amp;ldquo;my&amp;rdquo; WSDL files. So, without much time left to investigate I usually decided to give it a bit more time and fallback to good old &lt;a href=&#34;http://ws.apache.org/axis/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Axis&lt;/a&gt;. But, a few weeks ago everything changed. I got a definition file and decided to try XFire again. This time I found an &lt;a href=&#34;http://xfire.codehaus.org/Eclipse&amp;#43;Plugin&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Eclipse plugin&lt;/a&gt; for it, which does exactly what I needed to do. It needs Java 5 and Eclipse 3.2 &amp;hellip; checked and checked &amp;hellip; I ran the wizard that plugin provides, entered some basic facts (location of the file, package and the location for the generated sources) and that was all. I was up and running in under five minutes. Excellent. But that is not the end of the story. The real surprise came when I browsed the generated code. It was much more &amp;ldquo;elegant&amp;rdquo; (readable) then equivalent Axis stub. With a heavy use of annotations it will be much easier to maintain in the coming years. Also, support for XBeans and Spring definitely makes my life much easier with XFire. I didn&amp;rsquo;t have time to verify whether it is &lt;a href=&#34;http://xfire.codehaus.org/Performance&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;as efficient as people say&lt;/a&gt;, but it doesn&amp;rsquo;t matter for me at this moment. And with all good coding that has been put into that project, I don&amp;rsquo;t see how it could be any different. So with all modern features, elegant stub classes and &amp;ldquo;probably&amp;rdquo; good performance, I think that I will stick to the XFire for my future SOAP coding.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Retrotranslator</title>
      <link>/posts/2006-11-02-retrotranslator/</link>
      <pubDate>Thu, 02 Nov 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-11-02-retrotranslator/</guid>
      <description>&lt;p&gt;Reading &lt;a href=&#34;http://java.sun.com/developer/technicalArticles/Interviews/elliott_qa.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;this interview&lt;/a&gt; with Jean Elliott, director of product marketing for the Java SE platform at Sun Microsystems, got me into thinking about adoption of Java platform editions among developers (and plain users). I think that 1.4 is still very widely deployed runtime environment out there and that it is the main reason why many developers still hesitate to use Java 5 syntax and features in their projects.&lt;/p&gt;&#xA;&lt;p&gt;There are three kinds of projects that we can differentiate:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Spring and Flex</title>
      <link>/posts/2006-10-27-spring-and-flex/</link>
      <pubDate>Fri, 27 Oct 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-10-27-spring-and-flex/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;http://coenraets.org/flex-spring&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;this excellent article&lt;/a&gt; Christophe Coenraets gives few examples of how you can use &lt;a href=&#34;http://www.adobe.com/products/flex/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Adobe Flex&lt;/a&gt; as a presentation layer for your &lt;a href=&#34;http://www.springframework.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Spring&lt;/a&gt; applications.&lt;/p&gt;&#xA;&lt;p&gt;It is good to see that my Spring middle-layer classes could be reused with one more presentation technology. I like to have options.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Cross-Domain Ajax support for ActiveMQ</title>
      <link>/posts/2006-10-18-cross-domain-ajax-support-for-activemq/</link>
      <pubDate>Wed, 18 Oct 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-10-18-cross-domain-ajax-support-for-activemq/</guid>
      <description>&lt;p&gt;In this post I will try to summarize a case-study for implementing Cross-Domain Ajax support for ActiveMQ.&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Use Case&#xA;    &lt;div id=&#34;use-case&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#use-case&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;In the current implementation of Ajax support for ActiveMQ, you can use JavaScript to consume and send messages, but only directly in your application. This stands mostly due to &amp;ldquo;same-domain&amp;rdquo; restriction of the &lt;code&gt;XmlHttpRequest&lt;/code&gt; calls.&lt;/p&gt;&#xA;&lt;p&gt;This makes impossible to use those messages in &amp;ldquo;trusted&amp;rdquo; applications and make them all use the same underlying mechanism. For example, you might want to create an embeddable Ajax message browser that could be used in various related applications to allow &amp;ldquo;operators&amp;rdquo; (non-technical people) to work with messages in certain queues and topics.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Jetty 6 and XBean</title>
      <link>/posts/2006-10-12-jetty-6-and-xbean/</link>
      <pubDate>Thu, 12 Oct 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-10-12-jetty-6-and-xbean/</guid>
      <description>&lt;p&gt;As you probably know, &lt;a href=&#34;http://jetty.mortbay.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jetty&lt;/a&gt; is a web server (and servlet container) written purely in Java. Because it is small, fast and has a well designed configuration API it is often used as a embedded server in various Java applications (&lt;a href=&#34;http://maven.apache.org/continuum/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Continuum&lt;/a&gt;, &lt;a href=&#34;http://www.cenqua.com/fisheye/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;FishEye&lt;/a&gt;, …).&lt;/p&gt;&#xA;&lt;p&gt;Of course, when you use Jetty in a &lt;a href=&#34;http://www.springframework.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Spring&lt;/a&gt;-based application, you will want to configure it as you configure the rest of your application (as a Spring bean). Since it has a well defined configuration API, this is not a problem to achieve.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Multiple table generator in Hibernate3</title>
      <link>/posts/2006-09-26-multiple-table-generator-in-hibernate3/</link>
      <pubDate>Tue, 26 Sep 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-09-26-multiple-table-generator-in-hibernate3/</guid>
      <description>&lt;p&gt;Some time ago I needed a unique identifier generator that will look up a value in a simple name-value kind of database table. Project’s database layer was based on Hibernate2 and since I couldn’t find such a solution I have implemented a MultiTableGenerator which I have blogged about &lt;a href=&#34;http://www.oreillynet.com/onjava/blog/2004/06/hibernate_tablegenerator.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The project was finished and I moved on. Since then, many people reported that my solution was not compatible with Hibernate3 but unfortunately I never found time to fix it. Luckily, I was recently reported that Hibernate team introduced this functionality in Hibernate3. The class is called &lt;code&gt;org.hibernate.id.MultipleHiLoPerTableGenerator&lt;/code&gt;. As I can see, it is not documented in the latest version of the reference documentation yet, but you can find a description in a &lt;a href=&#34;http://www.hibernate.org/hib_docs/v3/api/org/hibernate/id/MultipleHiLoPerTableGenerator.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;JavaDoc documentation&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Stomp and JSON</title>
      <link>/posts/2006-09-18-stomp-and-json/</link>
      <pubDate>Mon, 18 Sep 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-09-18-stomp-and-json/</guid>
      <description>&lt;p&gt;As I said in the previous post, one of my main intentions is to use Stomp to send map messages from PHP to Java. So in &lt;a href=&#34;/download/stomp.zip&#34; &gt;this iteration&lt;/a&gt;, I have added support for JSON encoding/decoding of message content.&lt;/p&gt;&#xA;&lt;p&gt;Before I dig deeper into new functionalities and changes, let me explain which JSON libraries (PHP and Java) I have used and why.&lt;/p&gt;&#xA;&#xA;&lt;h3 class=&#34;relative group&#34;&gt;Dependencies&#xA;    &lt;div id=&#34;dependencies&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#dependencies&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Even though since version 5.2.0, &lt;a href=&#34;http://www.php.net/manual/en/ref.json.php&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;PHP has native support for JSON&lt;/a&gt;, I have used &lt;a href=&#34;http://mike.teczno.com/json.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;pure PHP&lt;/a&gt; implementation from Michal Migurski. I did this for only one reason: There is no any restriction to use it in PHP4.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>PHP Stomp client</title>
      <link>/posts/2006-09-14-php-stomp-client/</link>
      <pubDate>Thu, 14 Sep 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-09-14-php-stomp-client/</guid>
      <description>&lt;h3 class=&#34;relative group&#34;&gt;Download&#xA;    &lt;div id=&#34;download&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#download&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This work is based on Hiram Chirino&amp;rsquo;s excellent &lt;a href=&#34;http://stomp.codehaus.org/PHP&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;library&lt;/a&gt;. It would be great if this &amp;ldquo;extended&amp;rdquo; version become part of that project too, but for now you can grab it from &lt;a href=&#34;/download/stomp.zip&#34; &gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;While the original library is well written, there were few things that prevented me to use it in my project. I started by fixing those things, but then gone too far and now it is quite different from the original, so I&amp;rsquo;m putting it here.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Tomcat 5.x, Commons Logging and Log4J</title>
      <link>/posts/2006-08-29-tomcat-5x-commons-logging-and-log4j/</link>
      <pubDate>Tue, 29 Aug 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-08-29-tomcat-5x-commons-logging-and-log4j/</guid>
      <description>&lt;p&gt;First of all, I never use &lt;a href=&#34;http://jakarta.apache.org/commons/logging/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Jakarta Commons Logging&lt;/a&gt; (JCL) directly in my applications (&lt;a href=&#34;http://logging.apache.org/log4j/docs/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Log4J&lt;/a&gt; is my tool of choice for logging tasks), but as you probably know many frameworks and libraries do all of their logging through JCL. In most cases you will want to catch some of these log messages, so that you can better monitor your application. For example, you will probably want to log all SQL queries that Hibernate issues, at least in the early development phase, so that you can have a better perspective of what is going on.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Will we have closures in Java 1.7?</title>
      <link>/posts/2006-08-21-will-we-have-closures-in-java-17/</link>
      <pubDate>Mon, 21 Aug 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-08-21-will-we-have-closures-in-java-17/</guid>
      <description>&lt;p&gt;It seems like growing interest in dynamic languages will finally move Java syntax toward local functions and closures. Gilad Bracha, Neal Gafter, James Gosling and Peter von der Ah&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Java open-source roadmap</title>
      <link>/posts/2006-08-15-java-open-source-roadmap/</link>
      <pubDate>Tue, 15 Aug 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-08-15-java-open-source-roadmap/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s finally here. According to &lt;a href=&#34;http://news.com.com/Sun&amp;#43;expands&amp;#43;open-source&amp;#43;Java&amp;#43;plan/2100-7252_3-6105601.html?tag=nefd.top&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;news&lt;/a&gt; and &lt;a href=&#34;http://blogs.zdnet.com/BTL/?p=3493&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;blogs&lt;/a&gt;, Sun announced that it will open source Java ME platform and some components of the SE platform by the end of the year. Sun plans to open source &lt;em&gt;javac&lt;/em&gt; compiler and &lt;em&gt;HotSpot&lt;/em&gt; virtual machine, two crucial components of the Java SE platform, by the end of the year. The rest of the SE platform should be open sourced during the next year.&lt;/p&gt;&#xA;&lt;p&gt;They will use some of the proven OSI licenses, but the particular license and governance model is yet to be settled. You can visit the &lt;a href=&#34;http://community.java.net/jdk/opensource/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;official site&lt;/a&gt; for this project and make your contribution to these discussions in the &lt;a href=&#34;http://forums.java.net/jive/forum.jspa?forumID=97&amp;amp;start=0&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;forum&lt;/a&gt;.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Handling ADO.NET DataSets with Axis</title>
      <link>/posts/2006-08-14-handling-adonet-datasets-with-axis/</link>
      <pubDate>Mon, 14 Aug 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-08-14-handling-adonet-datasets-with-axis/</guid>
      <description>&lt;p&gt;First of all, SOAP is not my web service protocol of choice since I think it is overkill for the most of applications. I prefer the simplest possible solution for the problem, but when the service that you need is only available through SOAP, you don&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>On Derby&amp;#8230;</title>
      <link>/posts/2006-07-27-on-derby/</link>
      <pubDate>Thu, 27 Jul 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-07-27-on-derby/</guid>
      <description>&lt;p&gt;There were a lot of discussions lately about inclusion of Derby (aka JavaDB) in the Sun JDK. First of all, I personally think that it will not really change anything.&lt;/p&gt;&#xA;&lt;p&gt;I&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Parsing form-data multiparts</title>
      <link>/posts/2006-06-28-parsing-form-data-multiparts-2/</link>
      <pubDate>Wed, 28 Jun 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-06-28-parsing-form-data-multiparts-2/</guid>
      <description>&lt;p&gt;If you ever needed to parse form-based multipart data, you are probably aware of the Jakarta Commons FileUpload library. But while this library is primarily intended to parse data directly from HttpRequest objects and thus handle uploading of files in your web application, it could be used to parse an arbitrary InputStream and extract multiparts from it too.&lt;/p&gt;&#xA;&lt;p&gt;As you can probably guess, the part of the library that is related to handling file uploads is well documented, but for the low-level API you can only find the broken example in the JavaDocs. I know that this funcionality is rarely needed, but still it deserves a working example, so here it is.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Syntax support for collections?</title>
      <link>/posts/2006-06-05-syntax-support-for-collections/</link>
      <pubDate>Mon, 05 Jun 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-06-05-syntax-support-for-collections/</guid>
      <description>&lt;p&gt;It is common to use &lt;code&gt;final static&lt;/code&gt; fields to define constants in your Java applications. For example, you will often find the code similar to this in various Java APIs&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;public class Example {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  public static int one = 1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;which is used in the following manner&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System.out.println(Example.one);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;Of course, Java supports more complex initialization of static properties through &lt;em&gt;static initializer blocks&lt;/em&gt;. One of the most common usages for these blocks is initialization of static collections with known values.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>XAP proposal in Apache incubator</title>
      <link>/posts/2006-05-26-xap-proposal-in-apache-incubator/</link>
      <pubDate>Fri, 26 May 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-05-26-xap-proposal-in-apache-incubator/</guid>
      <description>&lt;p&gt;There is an interesting Ajax-related proposal in &lt;a href=&#34;http://wiki.apache.org/incubator/XapProposal&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Apache incubator&lt;/a&gt;, named XAP (eXtensible Ajax Platform). It is a project donated by Nexaweb Technologies Inc and represents XML-based declarative framework for building rich internet applications based on Ajax. You can find more information about this project on &lt;a href=&#34;http://www.nexaweb.com/open/xap/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Nexaweb site&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the proposal there is the following paragraph:&lt;/p&gt;&#xA;&lt;blockquote&gt;&lt;p&gt;Although these toolkits ease development of Ajax-powered web applications, there are still significant development and maintenance challenges, mainly associated with writing, debugging and maintaining JavaScript code. In particular, some developers would prefer not to use JavaScript.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Spring MVC: Exposing cookies to the view</title>
      <link>/posts/2006-05-01-spring-mvc-exposing-cookies-to-the-view/</link>
      <pubDate>Mon, 01 May 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-05-01-spring-mvc-exposing-cookies-to-the-view/</guid>
      <description>&lt;p&gt;Recently I needed to display some information on the web page according to the value of a cookie. I think that this is one of the common web application functionalities that have been around for a decade. If you have ever used Spring MVC you know that view resolvers could be instructed to expose request and session attributes as view variables. It is done through the&lt;/p&gt;&#xA;&lt;div class=&#34;highlight-wrapper&#34;&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;property name=&amp;#34;exposeSessionAttributes&amp;#34;&amp;gt;&amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&amp;lt;/property&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;property name=&amp;#34;exposeRequestAttributes&amp;#34;&amp;gt;&amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;properties in the appropriate view resolver configuration. I wonder why there is no similar functionality for cookies, such as:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>DWR 2.0</title>
      <link>/posts/2006-04-12-dwr-20/</link>
      <pubDate>Wed, 12 Apr 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-04-12-dwr-20/</guid>
      <description>&lt;p&gt;I just saw the &lt;a href=&#34;http://getahead.ltd.uk/dwr/changelog/dwr20m1&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;release note&lt;/a&gt; for DWR 2.0 milestone 1. It introduces many new features, but the most interesting is certainly &amp;ldquo;Reverse Ajax&amp;rdquo;, which allows Java code to asynchronously call JavaScript code in the browser.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve used DWR on few projects in the past and I find it to be a very good AJAX implementation for Java. Also, I can think of some very good use-cases for these new features, so I will certainly put my hands on this new release soon. How about you? What is your experience with DWR and what do you think of these new capabilities?&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>JUG-NS session</title>
      <link>/posts/2006-04-11-jug-ns-session/</link>
      <pubDate>Tue, 11 Apr 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-04-11-jug-ns-session/</guid>
      <description>&lt;p&gt;I will be speaking on &lt;a href=&#34;http://www.opensymphony.com/quartz/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Quartz scheduler&lt;/a&gt; in Novi Sad on April 19th, 2006. The full announcement can be found &lt;a href=&#34;https://jug-ns.dev.java.net/servlets/NewsItemView?newsItemID=3536&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;here&lt;/a&gt; (in Sebian).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache XML-RPC adapter continued</title>
      <link>/posts/2006-04-07-apache-xml-rpc-adapter-continued/</link>
      <pubDate>Fri, 07 Apr 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-04-07-apache-xml-rpc-adapter-continued/</guid>
      <description>&lt;p&gt;In the previous &lt;a href=&#34;http://www.oreillynet.com/onjava/blog/2006/03/apache_xmlrpc_adapter_for_spri.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;post&lt;/a&gt; I showed how you can make a Spring wrapper around the &lt;code&gt;WebServer&lt;/code&gt; object and thus configure it easily in Spring-based applications. This solution is good for standalone applications that use Spring as a configuration mechanism. But if you are using Spring MVC to develop web applications you probably don&amp;rsquo;t want to start another web server to handle XML-RPC calls. Instead, we have to find a way to configure XML-RPC to work with the web server that hosts our application and again to use our beans as XML-RPC handlers.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Advanced Configuration of the Spring MVC Framework</title>
      <link>/posts/2006-03-24-advanced-configuration-of-the-spring-mvc-framework/</link>
      <pubDate>Fri, 24 Mar 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-03-24-advanced-configuration-of-the-spring-mvc-framework/</guid>
      <description>&lt;p&gt;OnJava published an article titled &lt;a href=&#34;http://www.oreillynet.com/pub/a/onjava/2006/03/22/advanced-spring-configuration.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Advanced Configuration of the Spring MVC Framework&lt;/a&gt;&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache XML-RPC Adapter for Spring</title>
      <link>/posts/2006-03-20-apache-xml-rpc-adapter-for-spring/</link>
      <pubDate>Mon, 20 Mar 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-03-20-apache-xml-rpc-adapter-for-spring/</guid>
      <description>&lt;p&gt;I tend to use XML-RPC to implement simple requirements for connecting applications. The reason is that it is a simple, straighforward remote-procedure protocol that has good-enough performance for most of such applications. Also, it is very wide-spread so you can find a stable implementation for whatever platform you need it (for example you can use it to connect Java and PHP applications).&lt;/p&gt;&#xA;&lt;p&gt;When it comes to Java, I use the Apache XML-RPC library (&lt;a href=&#34;http://ws.apache.org/xmlrpc/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;http://ws.apache.org/xmlrpc/&lt;/a&gt;). Reasons: it&amp;rsquo;s been long time in development, it&amp;rsquo;s stable and I never had any problems with it.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Proper handling of database-related exceptions</title>
      <link>/posts/2006-03-10-proper-handling-of-database-related-exceptions/</link>
      <pubDate>Fri, 10 Mar 2006 00:00:00 +0000</pubDate>
      
      <guid>/posts/2006-03-10-proper-handling-of-database-related-exceptions/</guid>
      <description>&lt;p&gt;This is the issue that I keep running into on various projects, so even if it seems obvious I think it is worth spending a post on it.&lt;/p&gt;&#xA;&lt;p&gt;Some OR mapping frameworks tend to use batch update operations when dealing with the database. The &amp;ldquo;problem&amp;rdquo; that this approach introduces is that if any problem occurs during the update, a &lt;code&gt;java.sql.BatchUpdateException&lt;/code&gt; exception will be thrown instead of the regular &lt;code&gt;java.sql.SQLException&lt;/code&gt;. If we don&amp;rsquo;t handle &lt;code&gt;BatchUpdateException&lt;/code&gt; properly the message it will give us will not be very useful.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>SMS-Powered applications</title>
      <link>/posts/2004-06-09-sms-powered-applications/</link>
      <pubDate>Wed, 09 Jun 2004 00:00:00 +0000</pubDate>
      
      <guid>/posts/2004-06-09-sms-powered-applications/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.oreillynet.com/pub/a/onjava/2004/06/09/sms.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;onJava.com&lt;/a&gt; published an article on texting with Java&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Hibernate MulitpleTableGenerator</title>
      <link>/posts/2004-06-06-hibernate-mulitpletablegenerator/</link>
      <pubDate>Sun, 06 Jun 2004 00:00:00 +0000</pubDate>
      
      <guid>/posts/2004-06-06-hibernate-mulitpletablegenerator/</guid>
      <description>&lt;p&gt;This key generator is designed to enable &lt;a href=&#34;http://www.hibernate.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Hibernate&lt;/a&gt; to generate unique keys using the table structure like this one&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure&gt;&lt;img&#xA;    class=&#34;my-0 rounded-md&#34;&#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    fetchpriority=&#34;low&#34;&#xA;    alt=&#34;&#34;&#xA;    src=&#34;../Images/table.gif&#34;&#xA;    &gt;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;The keys that you get from database can be used directly or with HiLo algorithm (use MultipleTableHiLoGenerator class in that case).&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Job Scheduling in Java</title>
      <link>/posts/2004-03-10-job-scheduling-in-java/</link>
      <pubDate>Wed, 10 Mar 2004 00:00:00 +0000</pubDate>
      
      <guid>/posts/2004-03-10-job-scheduling-in-java/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.onjava.com/pub/a/onjava/2004/03/10/quartz.html&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;onJava.com&lt;/a&gt; published article on job scheduling with Java and Quartz&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Quartz recent jobs patch</title>
      <link>/posts/2003-12-01-quartz-recent-jobs-patch-2/</link>
      <pubDate>Mon, 01 Dec 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-12-01-quartz-recent-jobs-patch-2/</guid>
      <description>&lt;h4 class=&#34;relative group&#34;&gt;Introduction&#xA;    &lt;div id=&#34;introduction&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#introduction&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h4&gt;&#xA;&lt;p&gt;This patch is made for &lt;a href=&#34;http://www.quartzscheduler.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Quartz 1.2.3&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java job scheduler and it extends original Scheduler interface with getExecutedJobs() method that returns list of recently executed jobs. Size of the list is configurabile with &lt;em&gt;org.quartz.scheduler.executedJobsListSize&lt;/em&gt; parameter in property file (quartz.properties). It could be also turned off by specifying value 0 or by deleteing this entry from the property file. This patch works even for volatile Jobs and Triggers and doesn&amp;rsquo;t use database.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Quartz recent jobs patch</title>
      <link>/posts/2003-12-01-quartz-recent-jobs-patch/</link>
      <pubDate>Mon, 01 Dec 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-12-01-quartz-recent-jobs-patch/</guid>
      <description>&lt;p&gt;This patch is made for &lt;a href=&#34;http://www.quartzscheduler.org&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Quartz 1.2.3&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java job scheduler and it extends original Scheduler interface with getExecutedJobs() method that returns list of recently executed jobs. Size of the list is configurabile with &lt;em&gt;org.quartz.scheduler.executedJobsListSize&lt;/em&gt; parameter in property file (quartz.properties). It could be also turned off by specifying value 0 or by deleteing this entry from the property file. This patch works even for volatile Jobs and Triggers and doesn&amp;rsquo;t use database.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Introduction to Version Control with CVS</title>
      <link>/posts/2003-11-12-introduction-to-version-control-with-cvs/</link>
      <pubDate>Wed, 12 Nov 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-11-12-introduction-to-version-control-with-cvs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.phparchitect.com/issue.php?mid=18&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;php|architect&lt;/a&gt; published introductory article on version control with CVS&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Quartz XML-RPC plugin</title>
      <link>/posts/2003-11-01-quartz-xml-rpc-plugin/</link>
      <pubDate>Sat, 01 Nov 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-11-01-quartz-xml-rpc-plugin/</guid>
      <description>&lt;p&gt;Quartz is a powerful job scheduling system for Java. Here you can find a XML-RPC plugin that can enable you to use the Quartz as a web service using XML-RPC protocol. You can use this plugin for accessing Quartz API from other languages than Java, such as PHP for example. Also, you can use it from your distributed Java application if you find this way more appropriate than RMI.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Introduction to Bug Management</title>
      <link>/posts/2003-09-08-introduction-to-bug-management/</link>
      <pubDate>Mon, 08 Sep 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-09-08-introduction-to-bug-management/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.phparch.com/issue.php?mid=14&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;php|architect&lt;/a&gt; published introductory article on Bug management&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Scripting the enterprise</title>
      <link>/posts/2003-07-08-scripting-the-enterprise/</link>
      <pubDate>Tue, 08 Jul 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-07-08-scripting-the-enterprise/</guid>
      <description>&lt;h4 class=&#34;relative group&#34;&gt;In the beginning &amp;hellip;&#xA;    &lt;div id=&#34;in-the-beginning-&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#in-the-beginning-&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h4&gt;&#xA;&lt;p&gt;PHP was designed as scripting language used to develop Web based applications. Because of its flexibility, extensibility and ease of use it became widely popular among developers, and pretty fast the large community was created. As time was passing, people wanted to develop more complex applications with it, but PHP was designed for page centric architecture with very limited support for object-oriented programming. Also, there was no system support for transactions, caching, software components and all the other things that developers of the enterprise applications have used to have. There was no application container that would take care of all the system staff that we need in our applications, so that we can focus on business requirements. As applications are getting larger and more complex scalability becomes a new issue. PHP does not scale well and there is no easy and standard way to make a cluster to achieve better scalability. So, PHP applications (with respectable exceptions) were left in the area of small and middle complex web applications.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Arno</title>
      <link>/posts/2003-06-05-arno/</link>
      <pubDate>Thu, 05 Jun 2003 00:00:00 +0000</pubDate>
      
      <guid>/posts/2003-06-05-arno/</guid>
      <description>&lt;h4 class=&#34;relative group&#34;&gt;Introduction&#xA;    &lt;div id=&#34;introduction&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#introduction&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h4&gt;&#xA;&lt;p&gt;This is version 0.1 of small application that demonstrates how to use EJB technology and &lt;a href=&#34;http://jakarta.apache.org/struts/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;Struts&lt;/a&gt; web development framework together. It is a personal organizer that let&amp;rsquo;s its users to manage their tasks and events. Don&amp;rsquo;t expect high usability of this software (in some future versions it will be considered) because it is only ment to be a demo.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Apache XMLRPC 1.1 authentication patch</title>
      <link>/posts/2002-12-31-apache-xmlrpc-11-authentication-patch/</link>
      <pubDate>Tue, 31 Dec 2002 00:00:00 +0000</pubDate>
      
      <guid>/posts/2002-12-31-apache-xmlrpc-11-authentication-patch/</guid>
      <description>&lt;p&gt;When you are using XML RPC, you often want to have some security mechanism that will protect your system from malicious users.&lt;/p&gt;&#xA;&lt;p&gt;One mechanism that could be used is basic HTTP authorization. When this approach is used username and password from the client are sent as a plain text in the HTTP header of the request. If authorization is valid, server will process the request or send response with status code 401 which means that client has not been successfully authorized. You may argue that plain text as a transport is not secure enough, but you can always use this mechanism with SSL what will give you more secure system.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>PHP Iterator</title>
      <link>/posts/2002-11-11-php-iterator/</link>
      <pubDate>Mon, 11 Nov 2002 00:00:00 +0000</pubDate>
      
      <guid>/posts/2002-11-11-php-iterator/</guid>
      <description>&lt;p&gt;PHP arrays are generally very powerful object container. But still, we can easily add a little more fuel to them. Imagine Iterator object that is a kind of wrapper around our arrays. What we will try to accomplish here is to create unique interface for traversing arrays and to add a little more control over how our objects are created and finally, to support lazy loading.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
