<?xml version="1.0" encoding="UTF-8"?>
<!-- name="generator" content="blojsom v3.2" -->
<rdf:RDF xmlns:wfw="http://wellformedweb.org/CommentAPI/"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns="http://purl.org/rss/1.0/">

	<channel rdf:about="http://blojsom.jhkuperus.nl/blog/default">
		<title>JH On Java</title>
		<link>http://blojsom.jhkuperus.nl/blog/default/</link>
		<description>Random Ramblings of a Java Engineer</description>
		<dc:publisher>Jan-Hendrik Kuperus</dc:publisher>
		<dc:creator>mail@jhkuperus.nl</dc:creator>
		<dc:date>2009-11-12T11:44:00+01:00</dc:date>
		<dc:language>en</dc:language>

        <items>
        <rdf:Seq>
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2009/11/12/The-Quest-for-Parallelism-Slides-from-JFall" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2009/11/05/Easy-Event-Driven-Application-With-Spring" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2009/10/29/New-GnuPG-plugin-for-Outlook-2007" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2009/09/15/New-Concurrency-Classes-in-Java-7" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2009/08/13/Eclipse-Galileo-and-NTLMv2-Proxies" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/12/10/Connecting-JBoss-instances-through-JNDI" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/12/05/Configure-JBoss-WS-on-a-multiple-network-interfaces" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/09/23/SpringSource-Application-Platform-My-Holy-Grail" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/09/23/Shameless-Devoxx-Promotion" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/08/05/EHWOTAY-1" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/07/30/Fools" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/06/17/My-Free-Flex-Training" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/06/09/SpringOne-2008" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/05/24/SpringSource-Application-Platform" />
                                <rdf:li rdf:resource="http://blojsom.jhkuperus.nl/blog/default/2008/05/24/Fipo" />
                </rdf:Seq>
        </items>
    </channel>

            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2009/11/12/The-Quest-for-Parallelism-Slides-from-JFall">
	    <title>The Quest for Parallelism - Slides from JFall</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2009/11/12/The-Quest-for-Parallelism-Slides-from-JFall</link>
        <description>&lt;p&gt;Yesterday, at the 2009 edition of JFall, I gave a talk about parallelism. The slides from that presentation can now be downloaded &lt;a href=&#39;http://www.jhkuperus.nl/resources/20091105-JFall-Quest-for-Parallelism.pdf&#39;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For those of you who missed my talk, stay tuned to this blog. I am working out a summary article.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2009-11-12T11:44:00+01:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2009/11/12/The-Quest-for-Parallelism-Slides-from-JFall</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2009/11/12/The-Quest-for-Parallelism-Slides-from-JFall?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2009/11/05/Easy-Event-Driven-Application-With-Spring">
	    <title>Easy Event-Driven Application With Spring!</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2009/11/05/Easy-Event-Driven-Application-With-Spring</link>
        <description>&lt;p&gt;Suppose you are making an event-driven application. You have your listener interfaces and your event-generating objects. What is the most annoying part of getting this all to work?&lt;/p&gt;

&lt;p&gt;Connecting your listeners to the event-generating objects. Every time you want some object to receive certain events, you have to register your listener with the correct producer object. This has some nasty effects on your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Either your listeners know to which object they are subscribing, or your event generators know who should be listening to their events&lt;/li&gt;
&lt;li&gt;Due to this coupling, listeners and producers are difficult to test&lt;/li&gt;
&lt;li&gt;Adding a new listener to your project requires some boilerplate code to get it working&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Spring has a feature that can take care of all of this hassle: &lt;strong&gt;autowiring&lt;/strong&gt;. For normal dependency injection, autowiring feels icky. It&#39;s just too magical and leaves me with a feeling I am not in control. The great thing about autowiring is that it can be used on a per-method base.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Suppose you have a listener interface:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-java&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
public interface MyEventListener
{
  public void onMyEvent(MyEvent me);
}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;And suppose you have some class that implements this interface:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-java&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;5&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;6&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;7&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
public class MyListener implements MyEventListener
{
  public void onMyEvent(MyEvent me)
  {
    System.out.println(&quot;My Event was raised!&quot;);
  }
}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;Cool, so now we still need some event-generating class:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-java&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;5&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;6&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;7&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;8&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;9&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;19&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
public class MyGenerator
{
  private MyEventListener[] listeners;

  public void generateEvent()
  {
    MyEvent me = new MyEvent();
    
    for (MyEventListener mel: listeners)
    {
      mel.onMyEvent(me);
    }
  }

  public void setMyEventListeners(MyEventListener[] listeners)
  {
    this.listeners = listeners;
  }
}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;If you looked at the above class and wondered why I&#39;ve made a setter for an array of listeners, instead of a method that registers a single listener, then prepare to be amazed. If you are familiar with Spring and autowiring, you probably know where I am headed :).&lt;/p&gt;

&lt;p&gt;Neither the event listener, nor the event generator have any knowledge of each other. This is perfect, we can write unittests for each class without having to mock the other. However, the event generator still needs a reference to the listener for this thing to work. Let&#39;s put these two objects in a Spring context together:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-xml&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;5&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;6&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;7&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&amp;lt;beans ...&amp;gt;

  &amp;lt;bean name=&quot;myGenerator&quot; class=&quot;MyEventGenerator&quot;/&amp;gt;

  &amp;lt;bean name=&quot;myListener&quot; class=&quot;MyListener&quot;/&amp;gt;

&amp;lt;/beans&amp;gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;Great! Almost there, all we need now is some &lt;strong&gt;magic&lt;/strong&gt;. The magic requires two components, one in the Spring config and one in the event generator class. The Spring config requires the &lt;code&gt;&amp;lt;context:annotation-config/&amp;gt;&lt;/code&gt; tag, to enable the annotations:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-xml&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;5&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;6&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;7&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
&amp;lt;beans ...&amp;gt;

  &amp;lt;context:annotation-config/&amp;gt;

  ...

&amp;lt;/beans&amp;gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;And finally, the generator class will get its listeners autowired:&lt;/p&gt;

&lt;pre class=&quot;prettyprint lang-java&quot;&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;1&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;2&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;3&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;4&lt;/span&gt;
&lt;span class=&quot;nocode&quot;&gt;&amp;nbsp;5&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;
  @Autowire(required=false)
  public void setMyEventListeners(MyEventListener[] listeners)
  {
    this.listeners = listeners;
  }&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/pre&gt;

&lt;p&gt;Tada! The generator class will now automatically have an array of listeners injected into its setter. The Spring container selects all beans that are assignable to the array value type and passes them to the event generator. The &lt;code&gt;required = false&lt;/code&gt; bit ensures Spring won&#39;t throw an exception when you have no listeners configured.&lt;/p&gt;

&lt;p&gt;If you now want more than one bean to listen to these events, all you have to do is add a bean to the Spring config that implements the MyEventListener interface and it will automatically get added to the array. Yes, it is really that simple.&lt;/p&gt;

&lt;p&gt;Have fun!&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2009-11-05T18:18:00+01:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2009/11/05/Easy-Event-Driven-Application-With-Spring</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2009/11/05/Easy-Event-Driven-Application-With-Spring?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2009/10/29/New-GnuPG-plugin-for-Outlook-2007">
	    <title>New: GnuPG plugin for Outlook 2007</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2009/10/29/New-GnuPG-plugin-for-Outlook-2007</link>
        <description>&lt;p&gt;David Cumps has gone about developing a working GPG plugin for Outlook 2007. Now you can sign your emails from Outlook 2007 using the great Open Source GPG. He describes the installation and usage at &lt;a href=&quot;http://www.cumps.be/gpg-in-outlook-2007-outlookgnupg/&quot;&gt;his own blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2009-10-29T17:27:00+01:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2009/10/29/New-GnuPG-plugin-for-Outlook-2007</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2009/10/29/New-GnuPG-plugin-for-Outlook-2007?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2009/09/15/New-Concurrency-Classes-in-Java-7">
	    <title>New Concurrency Classes in Java 7</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2009/09/15/New-Concurrency-Classes-in-Java-7</link>
        <description>&lt;p&gt;I just read a few posts on the new concurrency classes available in the upcoming Java 7. Altough I haven&#39;t yet had the time to dive into them, the fork-join library and parallel collections seem very promising.&lt;/p&gt;

&lt;p&gt;See for yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2007/07/concurrency-java-se-7&quot;&gt;http://www.infoq.com/news/2007/07/concurrency-java-se-7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/java/library/j-jtp03048.html&quot;&gt;http://www.ibm.com/developerworks/java/library/j-jtp03048.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
	    <dc:date>2009-09-15T11:51:35+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2009/09/15/New-Concurrency-Classes-in-Java-7</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2009/09/15/New-Concurrency-Classes-in-Java-7?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2009/08/13/Eclipse-Galileo-and-NTLMv2-Proxies">
	    <title>Eclipse Galileo and NTLMv2 Proxies</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2009/08/13/Eclipse-Galileo-and-NTLMv2-Proxies</link>
        <description>&lt;p&gt;While configuring the newest installment of Eclipse, &lt;a href=&quot;http://www.eclipse.org/downloads/&quot;&gt;Eclipse 3.5 (Galileo)&lt;/a&gt;, I ran into some proxy trouble. After setting the proxy-configuration, the &#39;Install New Software...&#39; window would structurally say &#39;No repository found on &amp;lt;location&amp;gt;&#39;.&lt;/p&gt;

&lt;p&gt;After some Googling and researching, it appears to be a problem with Eclipse&#39;s underlying URL/Proxy handling library. This library is now Apache httpclient, which does not support NTLMv2 proxies. Luckily, there&#39;s a workaround.&lt;/p&gt;

&lt;p&gt;If you are behind an NTLMv2 proxy, you can force Eclipse to revert its URL/Proxy handling library to the old JRE URLConnection by adding these lines to your &lt;code&gt;eclipse.ini&lt;/code&gt; file:&lt;/p&gt;

&lt;pre&gt;
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1
&lt;/pre&gt;

&lt;p&gt;If your proxy does not require authentication, you can leave out the &lt;code&gt;proxyUser&lt;/code&gt; and &lt;code&gt;proxyPassword&lt;/code&gt; settings.&lt;/p&gt;

&lt;p&gt;For more information, see &lt;a href=&quot;http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies&quot;&gt;http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2009-08-13T09:49:00+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2009/08/13/Eclipse-Galileo-and-NTLMv2-Proxies</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2009/08/13/Eclipse-Galileo-and-NTLMv2-Proxies?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/12/10/Connecting-JBoss-instances-through-JNDI">
	    <title>Connecting JBoss instances through JNDI</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/12/10/Connecting-JBoss-instances-through-JNDI</link>
        <description>&lt;p&gt;So here I was, cleanly splitting out the service EJB and web front of an application. We even went so far as to have the two components run in separate JBoss instances, on separate machines. But... they had to communicate to each other through a JNDI lookup. That&#39;s where we ran into a ditch, fought with Java and JBoss settings for a few days and came out victorious. Let me help you stay out of these trenches and show how to configure this.&lt;/p&gt;
&lt;more/&gt;
&lt;p&gt;First let me describe the setup of the machines we used. We have two machines in our hosting environment, one of which is accessible from the outside world, let&#39;s call this one Whiskey. Whiskey is part of two networks, one goes out to the real world, the other stays on our internal network. The other machine, Sierra, can only be reached from the internal network. Whiskey talks to this machine through its internal interface. &lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://www.jhkuperus.nl/images/whiskey_sierra.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;Whiskey is supposed to run our Web-application and delegate service calls to Sierra. No big surprises there. Both machines run JBoss 4.3 on Red Hat Linux. Sierra registers an EJB bean in its JNDI registry and accepts service calls through RMI. All Whiskey has to do is lookup the EJB in Sierra&#39;s JNDI and make calls to the returned object. Sounds easy right?&lt;/p&gt;
&lt;p&gt;The first try included googling for the words &#39;connect jndi jboss&#39;. You get all sorts of hits on how to connect to things in a JNDI registry, but not on how to incorporate one server&#39;s JNDI into another. If you keep googling and change your keywords to &#39;integrate jndi jboss&#39;, you get a little closer, but the words you are looking for are &#39;federate jndi jboss&#39;. This will eventually lead to something called the &lt;span style=&quot;font-family: monospace&quot;&gt;ExternalContext&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;span style=&quot;font-family: monospace&quot;&gt;org.jboss.naming.ExternalContext&lt;/span&gt; MBean makes it possible to integrate the JNDI directory of one server into another. Since it is itself registered under a JNDI name, every lookup beneath that node is delegated to the other server. For example, if you bind the &lt;span style=&quot;font-family: monospace&quot;&gt;ExternalContext&lt;/span&gt; under /external, then &lt;span style=&quot;font-family: monospace&quot;&gt;/external/my-service-bean&lt;/span&gt; will lookup &lt;span style=&quot;font-family: monospace&quot;&gt;/my-service-bean&lt;/span&gt; in the remote JNDI. In pictures, it comes down to this:&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://www.jhkuperus.nl/images/whiskey_sierra_jndi.png&quot;/&gt;&lt;/div&gt;
&lt;p&gt;Let&#39;s get down to business and see how we can configure this. There are several ways to get an MBean fired up in JBoss, but since this one should be around all the time (at least at our setup), we put it in the &lt;span style=&quot;font-family: monospace&quot;&gt;conf/jboss-service.xml&lt;/span&gt; file of the Whiskey server. The definition looks somewhat like this:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace; border: 1px dashed blue; padding: 5px; background-color: #DDD&quot;&gt;
&amp;lt;!-- Declare the MBean, make sure its name is unique within JBoss --&amp;gt;
&amp;lt;mbean code=&quot;org.jboss.naming.ExternalContext&quot; name=&quot;jboss.jndi:service=ExternalContext,server=Sierra&quot;&amp;gt;
   &amp;lt;!-- This denotes the JNDI name under which the remote tree is federated --&amp;gt;
   &amp;lt;attribute name=&quot;JndiName&quot;&amp;gt;external&amp;lt;/attribute&amp;gt;

   &amp;lt;!-- Enter the environment settings for the Context --&amp;gt;
   &amp;lt;attribute name=&quot;Properties&quot;&amp;gt;
     java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
     java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
     java.naming.provider.url=jnp://&amp;lt;sierra&#39;s IP&amp;gt;:1099
   &amp;lt;/attribute&amp;gt;

   &amp;lt;!-- Set the type of InitialContext, can also be LDAP or other Contexts --&amp;gt;
   &amp;lt;attribute name=&quot;InitialContext&quot;&amp;gt;javax.naming.InitialContext&amp;lt;/attribute&amp;gt;

   &amp;lt;!-- Declare whether this name is accessible from remote clients calling Whiskey&#39;s JNDI --&amp;gt;
   &amp;lt;attribute name=&quot;RemoteAccess&quot;&amp;gt;false&amp;lt;/attribute&amp;gt;
&amp;lt;/mbean&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Okay, so now we have a federated JNDI tree and can access JNDI entries which were bound in Sierra from Whiskey. Cool, but our application does not point to &lt;span style=&quot;font-family: monospace&quot;&gt;/external/my-service-bean&lt;/span&gt;, it points to &lt;span style=&quot;font-family: monospace&quot;&gt;/my-service-bean&lt;/span&gt; and I don&#39;t want to recompile it or otherwise change it. No worries, this can be resolved by creating a JNDI alias. By creating a file &lt;span style=&quot;font-family: monospace&quot;&gt;my-service.xml&lt;/span&gt; in the &lt;span style=&quot;font-family: monospace&quot;&gt;/deploy&lt;/span&gt; folder of the Whiskey server, we can dynamically create these aliases:&lt;/p&gt;
&lt;pre style=&quot;font-family: monospace; border: 1px dashed blue; padding: 5px; background-color: #DDD&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;server&amp;gt;
  &amp;lt;mbean code=&quot;org.jboss.naming.NamingAlias&quot;
         name=&quot;jboss.mq:service=NamingAlias,fromName=my-service-bean&quot;&amp;gt;
    &amp;lt;attribute name=&quot;FromName&quot;&amp;gt;my-service-bean&amp;lt;/attribute&amp;gt;
    &amp;lt;attribute name=&quot;ToName&quot;&amp;gt;external/my-service-bean&amp;lt;/attribute&amp;gt;
  &amp;lt;/mbean&amp;gt;
&amp;lt;/server&amp;gt;
&lt;/pre&gt;
&lt;p&gt;If the filename ends in &lt;span style=&quot;font-family: monospace&quot;&gt;-service.xml&lt;/span&gt;, JBoss will automatically pick it up and create the alias. When you delete the file, JBoss will also remove the alias automatically.&lt;/p&gt;
&lt;p&gt;If you want to read more about the &lt;span style=&quot;font-family: monospace&quot;&gt;ExternalContext&lt;/span&gt; MBean, head over to &lt;a href=&quot;http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/Server_Configuration_Guide/Additional_Naming_MBeans-org.jboss.naming.ExternalContext_MBean.html&quot; title=&quot;Visit JBoss Manual, ExternalContext&quot;&gt;the JBoss Manual&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2008-12-10T21:02:17+01:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java+EE/2008/12/10/Connecting-JBoss-instances-through-JNDI</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/12/10/Connecting-JBoss-instances-through-JNDI?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/12/05/Configure-JBoss-WS-on-a-multiple-network-interfaces">
	    <title>Configure JBoss WS on a multiple network interfaces</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/12/05/Configure-JBoss-WS-on-a-multiple-network-interfaces</link>
        <description>&lt;p&gt;The JBoss WebServices package is a nice library to get your webservice kickstarted in no-time. One of its features is the automatic generation of a WSDL for your webservice endpoint. There is however a slight annoyance when you try to use this on a machine with two network interfaces.&lt;/p&gt;
&lt;more/&gt;
&lt;p&gt;On a single interface machine, JBoss automatically fills in the IP address or hostname of that interface in the &amp;lt;soap:address/&amp;gt; WSDL entry. No problems there. But, if you have a machine with two interfaces, for example one for internal and one for external access, then JBoss is likely to screw things up.&lt;/p&gt;

&lt;p&gt;This is due to the following configuration directive in the jbossas/server/production/deploy/jbossws.sar/jbossws.beans/META-INF/jboss-beans.xml:&lt;/p&gt;
&lt;p style=&quot;font-family: monospace; border: 1px dashed blue; padding: 5px; background-color: #DDD&quot;&gt;
&amp;lt;property name=&quot;webServiceHost&quot;&amp;gt;${jboss.bind.address}&amp;lt;/property&amp;gt;
&lt;/p&gt;
&lt;p&gt;This property causes JBoss to use the bind address in the WSDL rewriting/generation. Even if you start the server with -b 0.0.0.0, which binds it to all interfaces, JBoss still selects a single interface to use in this property.&lt;/p&gt;
&lt;p&gt;The solution to this is luckily very simple: if this property is removed from the configuration file, JBoss will rewrite the WSDL with the address of the interface on which the request came in.&lt;/p&gt;
&lt;p&gt;It does make me wonder, why is this not the default setting? Would it not be easier to drop in a server anywhere and it automatically exposes &lt;strong&gt;correct&lt;/strong&gt; WSDL files on all interfaces? Then, if you want to restrict it to a single interface, add the property shown above.&lt;/p&gt;
</description>
	    <dc:date>2008-12-05T10:52:45+01:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java+EE/2008/12/05/Configure-JBoss-WS-on-a-multiple-network-interfaces</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/12/05/Configure-JBoss-WS-on-a-multiple-network-interfaces?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/09/23/SpringSource-Application-Platform-My-Holy-Grail">
	    <title>SpringSource Application Platform - My Holy Grail</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/09/23/SpringSource-Application-Platform-My-Holy-Grail</link>
        <description>&lt;p&gt;The SpringSource Application Platform has been in beta for some time now. In my rare free time I have been playing with it&#39;s amazing set of features. Now that the platform is nearing its final release I want to share some of my thoughts about it.&lt;/p&gt;&lt;more/&gt;

&lt;p&gt;I have been a fan of modular design even before I switched to my first Object Oriented Language. Although languages like Visual Basic, C++ and Java provide you with the means of building modular software, none ever enforce it. No matter how strict I design modules in my application, they somehow always get tangled up in each other.
&lt;/p&gt;

&lt;p&gt;That is until I started working with the beta of the SpringSource Application Platform (S2AP). By dividing my application into bundles I can make a truly modular application. Sure, this was already possible with OSGi runtimes, but that required a lot of plumbing and platform management.&lt;/p&gt;

&lt;p&gt;The S2AP takes away all hassles and allows me to focus on designing and implementing a truly modular application. Adding a few OSGi-related configuration directives to my context xml enables almost all advanced features of OSGi. Combine that with the huge amount of pre-bundled enterprise libraries and the full Spring Framework at your disposal and you have the ultimate enterprise application platform!&lt;/p&gt;

&lt;p&gt;I have been completely taken in by the ease of development and deployment with the SpringSource Application Platform. I certainly hope to use the platform in future projects and I will definitely try to convince other people to do the same. If you ask me, the SpringSource Application Platform is the future of Java EE and other application servers will have to follow in its direction.&lt;/p&gt;

&lt;p&gt;Having said that, I would like to take this opportunity to announce that I am working on a whitepaper on the SpringSource Application Platform. There I will dive deeper into my experiences with the platform so far. The timeframe on the whitepaper is a release before the end of this year.&lt;/p&gt;

&lt;p&gt;JH out.&lt;/p&gt;
</description>
	    <dc:date>2008-09-23T11:00:46+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2008/09/23/SpringSource-Application-Platform-My-Holy-Grail</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/09/23/SpringSource-Application-Platform-My-Holy-Grail?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/09/23/Shameless-Devoxx-Promotion">
	    <title>Shameless Devoxx Promotion</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/09/23/Shameless-Devoxx-Promotion</link>
        <description>&lt;p&gt;On December 8th-12th, this year&#39;s Devoxx (previously JavaPolis) conference takes place in Metropolis, Antwerp. I have been to the conference last year and enjoyed the huge offer of Java talks. I would like to recommend this conference to any Java-enthousiast!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.devoxx.com&quot; title=&quot;Visit Devoxx website&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.jhkuperus.nl/images/LogoDevoxx150dpi.jpg&quot;/&gt;&lt;/a&gt;&lt;/p&gt;
</description>
	    <dc:date>2008-09-23T08:44:53+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Conferences/2008/09/23/Shameless-Devoxx-Promotion</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/09/23/Shameless-Devoxx-Promotion?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/08/05/EHWOTAY-1">
	    <title>EHWOTAY!</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/08/05/EHWOTAY-1</link>
        <description>&lt;p&gt;A totally nonsensical &#39;phrase&#39; that has spawned its own community: &lt;a href=&quot;http://www.ehwotay.com&quot;&gt;EHWOTAY!&lt;/a&gt;. It is the calling sign of a new entity in the &lt;a href=&quot;http://ars.userfriendly.org/cartoons/?id=20080717&amp;mode=classic&quot;&gt;Userfriendly comic&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I just like it, it has a nice ring to it... EHWOTAY!&lt;/p&gt;
</description>
	    <dc:date>2008-08-05T09:59:58+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Fun/2008/08/05/EHWOTAY-1</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/08/05/EHWOTAY-1?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/07/30/Fools">
	    <title>Fools</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/07/30/Fools</link>
        <description>&lt;p&gt;I am currently reading &lt;a href=&quot;http://www.amazon.com/Refactoring-Improving-Existing-Addison-Wesley-Technology/dp/0201485672/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1217424263&amp;sr=8-1&quot;&gt;&#39;Refactoring: Improving the Design of Existing Code&#39; by Martin Fowler&lt;/a&gt; and one of his tips made me smile:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Any fool can write code that a computer can understand. Good programmers write code that humans can understand.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It made me smile because it is spot-on when it comes to clean and maintainable code. If only you, the author, understand the code, you&#39;ve done something wrong! Use a clear coding style, meaningful method/type/variable names and document EVERYTHING.&lt;/p&gt;
</description>
	    <dc:date>2008-07-30T15:28:13+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java/2008/07/30/Fools</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/07/30/Fools?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/06/17/My-Free-Flex-Training">
	    <title>My Free Flex Training!</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/06/17/My-Free-Flex-Training</link>
        <description>&lt;p&gt;Today I cashed in the free training I won from Adobe. In april I visited the J-Spring conference in the Netherlands and as usual dropped my businesscard in any box that had some description with the word &#39;win&#39; in it. Although I had never won anything with this before, this year I won &lt;strong&gt;two&lt;/strong&gt; Flex training sessions.&lt;/p&gt;
&lt;more/&gt;
&lt;p&gt;So here I am, sitting in a nice room at &lt;a href=&quot;http://www.prisma-it.com&quot; title=&quot;Visit Prisma-IT website&quot;&gt;Prisma-IT&lt;/a&gt;, working on some nifty Flex application. The course is lead by &lt;a href=&quot;http://www.flexpair.org&quot; title=&quot;Visit Mark&#39;s website&quot;&gt;Mark van Hedel&lt;/a&gt;, an Adobe Certified Instructor at Prisma-IT and he is giving us a Jumpstart to Adobe Flex 3.&lt;/p&gt;

&lt;p&gt;And a jumpstart is exactly what it is. The course started with a very quick overview of the history of Flex. How we&#39;ve come from mainframes, to client-server applications, to web-applications, to rich internet applications. Subsequently, Mark showed us the basic setup of any Flex application and let us dive into the labs.&lt;/p&gt;

&lt;p&gt;I have seen and heard a lot of things here today that I have ran into while hacking around in Flex without guidance. Today&#39;s training has really helped me understand Flex better. I wholeheartedly recommend the course to anyone who is currently working with some object oriented language and wants to get his hands dirty trying out the frikkin best framework for Rich Internet Applications.&lt;/p&gt;

&lt;p&gt;I&#39;ll share some of the handy URLs that Mark shared with us:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.flugr.nl&quot; title=&quot;Visit the Flex Usergroup of the Netherlands&quot;&gt;www.flugr.nl&lt;/a&gt; - Flex Usergroup Netherlands&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.flugr.org&quot; title=&quot;Visit the Flex Usergroup forum (English)&quot;&gt;www.flugr.org&lt;/a&gt; - Flex Usergroup Forum (English)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://flex.org&quot; title=&quot;Visit the Flex community website&quot;&gt;flex.org&lt;/a&gt; - Flex Community&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://flexpair.org&quot; title=&quot;Visit Mark van Hedel&#39;s website&quot;&gt;flexpair.org&lt;/a&gt; - Mark van Hedel&#39;s website
  &lt;li&gt;&lt;a href=&quot;http://www.asunit.org&quot; title=&quot;Visit the AsUnit framework&#39;s website&quot;&gt;asunit.org&lt;/a&gt; - AsUnit website (ActionScript Unit Testing)
&lt;/ul&gt;
&lt;p&gt;Cheers!&lt;/p&gt;
&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2008-06-17T15:22:08+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Flex/2008/06/17/My-Free-Flex-Training</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/06/17/My-Free-Flex-Training?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/06/09/SpringOne-2008">
	    <title>SpringOne 2008</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/06/09/SpringOne-2008</link>
        <description>&lt;p&gt;This year&#39;s SpringOne conference is being held this week in Antwerp, Belgium. I will be attending this conference on behalf of my employer. Blogposts about interesting talks there should show up here starting next friday. I am going to try to crosspost the same posts in Dutch at the &lt;a href=&quot;http://java.sogeti.nl/JavaBlog/&quot;&gt;JCN Blog&lt;/a&gt;.&lt;/p&gt;
&lt;more/&gt;
&lt;p&gt;See for more information about SpringOne: &lt;a href=&quot;http://www.springone.com/display/SpringOne08/Home&quot;&gt;SpringOne 2008 website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2008-06-09T13:56:29+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Conferences/2008/06/09/SpringOne-2008</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/06/09/SpringOne-2008?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/05/24/SpringSource-Application-Platform">
	    <title>SpringSource Application Platform</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/05/24/SpringSource-Application-Platform</link>
        <description>&lt;p&gt;As SpringSource released its first beta version of the SpringSource Application Platform (S2AP), my attention was jerked towards it. In order to get to know more about this new project from Spring I attended a webinar last week. The platform looks very promising in terms of used technologies and the features it offers.&lt;/p&gt;
&lt;more/&gt;
&lt;h1&gt;So what is S2AP?&lt;/h1&gt;

&lt;p&gt;The S2AP is the Spring Dynamic Modules Kernel, running on top of Equinox, hosting a Tomcat server, with a specialized management interface, with some funky new advantages. So you get a Java EE application server with OSGi dynamic modules and all the power of the Spring Framework. Awesome!&lt;/p&gt;
&lt;p&gt;The platform aims at being a lightweight, customizable Java EE Server, with a preference for Spring-oriented applications. The platform has no trouble running applications that were not built with Spring technologies though, it accepts standard Java EE WAR-files and also standard OSGi bundles.&lt;/p&gt;

&lt;h1&gt;Yet Another Application Server?&lt;/h1&gt;

&lt;p&gt;Definitely not. I have recently been looking at possibilities for running an application server on OSGi, or running OSGi in an application server. However cool this sounds, it proves pretty hard to realize. If you want to run a OSGi inside a web application, you need to somehow proxy the servlet requests to the OSGi subsystem, which then gives it to the right bundle. Suffice to say, it was not easily done.&lt;/p&gt;

&lt;p&gt;The S2AP platform does all this for you. Because the platform embeds a Tomcat server and completely controls it, you don&#39;t have to worry about proxying requests, delegating them to the right bundle. I should add that this is not entirely new, I have also been looking at the JOnAS project, which is also an OSGi based application server, but I have yet to try it for real.&lt;/p&gt;

&lt;h1&gt;Hot features!&lt;/h1&gt;

&lt;p&gt;The platform also comes with handy features in case something goes wrong. I&#39;m pretty sure everyone sometimes gets a part of a logfile from a production server, containing a nasty set of stack traces as some exception has occurred. This generally forces us to try and recreate the situation, but that&#39;s not so easy from just a single NullPointerException.&lt;/p&gt;

&lt;p&gt;The S2AP comes with &#39;Data Capture on Failure&#39;, meaning it will generate a snapshot of the platform when it detects problems in the application. These snapshots contain information about all active Threads and their current lock-states and supposedly a lot more. This sounds very good, especially since the S2AP also comes with a Deadlock Detection feature, which will also trigger the snapshot. I think I&#39;ll have to try it for myself sometime in the near future to see how much information is actually contained in such a snapshot.&lt;/p&gt;

&lt;p&gt;Another nice feature is the fact that the platform accepts applications in standard JEE WAR-files and standard OSGi bundles. However, the platform also introduces its own format: the Platform ARchive (PAR). The PAR is actually bringing the modularity to the application level. A PAR is a single deployable unit in which multiple bundles are contained which together form an application. It has its own service namespace to keep the different applications from cluttering the OSGi service registry.&lt;/p&gt;

&lt;p&gt;The webinar certainly raised my interest and I am hoping to see and hear more of this on the SpringOne conference in June.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2008-05-24T13:25:50+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/Java+EE/2008/05/24/SpringSource-Application-Platform</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/05/24/SpringSource-Application-Platform?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
            <item rdf:about="http://blojsom.jhkuperus.nl/blog/default/2008/05/24/Fipo">
	    <title>Fipo!</title>
	    <link>http://blojsom.jhkuperus.nl/blog/default/2008/05/24/Fipo</link>
        <description>&lt;p&gt;Finally, a personal blog for me to post my thoughts on Java Core/EE, Webapp Security and whatever interesting stuff I see out there.&lt;/p&gt;

&lt;p&gt;--JH&lt;/p&gt;
</description>
	    <dc:date>2008-05-24T00:58:07+02:00</dc:date>
	                                <wfw:comment>http://blojsom.jhkuperus.nl/commentapi/default/uncategorized/2008/05/24/Fipo</wfw:comment>
            <wfw:commentRss>http://blojsom.jhkuperus.nl/blog/default/2008/05/24/Fipo?page=comments&amp;flavor=rss2</wfw:commentRss>
            </item>
    
</rdf:RDF>
