<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chris Vugrinec&#039;s weblog</title>
	<atom:link href="http://datalinks.nl/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://datalinks.nl/wordpress</link>
	<description>Datalinks technology/ personal weblog</description>
	<lastBuildDate>Thu, 03 May 2012 14:57:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Rest client firefox plugin</title>
		<link>http://datalinks.nl/wordpress/?p=724</link>
		<comments>http://datalinks.nl/wordpress/?p=724#comments</comments>
		<pubDate>Thu, 03 May 2012 14:57:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rest client]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=724</guid>
		<description><![CDATA[I always forget about this one&#8230;but it is really good..so a small reminder for me&#8230; This link contains a firefox plugin which you can use to test your (Soap/ rest) services https://addons.mozilla.org/nl/firefox/addon/restclient/ after installing the plugin, just type this chrome://restclient/content/restclient.html &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=724">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>I always forget about this one&#8230;but it is really good..so a small reminder for me&#8230;</p>
<p>This link contains a firefox plugin which you can use to test your (Soap/ rest) services</p>
<p>https://addons.mozilla.org/nl/firefox/addon/restclient/</p>
<p>after installing the plugin, just type this<br />
chrome://restclient/content/restclient.html<br />
in your URL</p>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=724</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum in 10 minutes</title>
		<link>http://datalinks.nl/wordpress/?p=721</link>
		<comments>http://datalinks.nl/wordpress/?p=721#comments</comments>
		<pubDate>Thu, 12 Apr 2012 10:00:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=721</guid>
		<description><![CDATA[Watch this vid&#8230;I really love the way he explanes scrum in less than 10 minutes&#8230; http://www.youtube.com/user/axosoft?v=XU0llRltyFM &#160;]]></description>
			<content:encoded><![CDATA[<p>Watch this vid&#8230;I really love the way he explanes scrum in less than 10 minutes&#8230;</p>
<p>http://www.youtube.com/user/axosoft?v=XU0llRltyFM</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=721</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mvn notes</title>
		<link>http://datalinks.nl/wordpress/?p=707</link>
		<comments>http://datalinks.nl/wordpress/?p=707#comments</comments>
		<pubDate>Thu, 29 Mar 2012 16:52:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[mvn javadoc install]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=707</guid>
		<description><![CDATA[quick maven, mvn reminders&#8230; create javadoc with mvn javadoc:javadoc maven settings for your shell: set JAVA_HOME=C:\chris\apps\jdk1.6 set PATH=%PATH%;C:\chris\apps\apache-maven-3.0.3\bin set M2_HOME=C:\chris\apps\apache-maven-3.0.3 Examples of installing or adding jar files to your local repository example: &#160; mvn install:install-file -Dfile=oracle.webservices.standalone.client-11g.jar -DgroupId=weblogic -DartifactId=client -Dversion=11g -Dpackaging=jar &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=707">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>quick maven, mvn reminders&#8230;</p>
<p><strong>create javadoc with</strong></p>
<ul>
<li>mvn javadoc:javadoc</li>
</ul>
<p><strong>maven settings for your shell:</strong></p>
<ul>
<li>set JAVA_HOME=C:\chris\apps\jdk1.6</li>
<li>set PATH=%PATH%;C:\chris\apps\apache-maven-3.0.3\bin</li>
<li>set M2_HOME=C:\chris\apps\apache-maven-3.0.3</li>
</ul>
<p><strong>Examples of installing or adding jar files to your local repository example:</strong></p>
<p>&nbsp;</p>
<ul>
<li>mvn install:install-file -Dfile=oracle.webservices.standalone.client-11g.jar -DgroupId=weblogic -DartifactId=client -Dversion=11g -Dpackaging=jar -DgeneratePom=true</li>
<li>mvn install:install-file -Dfile=weblogic-11g.jar -DgroupId=weblogic -DartifactId=weblogic -Dversion=11g -Dpackaging=jar -DgeneratePom=true</li>
<li>mvn install:install-file -Dfile=wlfullclient-11g.jar -DgroupId=weblogic -DartifactId=full_client -Dversion=11g -Dpackaging=jar -DgeneratePom=true</li>
<li>mvn install:install-file -Dfile=wljmxclient-11g.jar -DgroupId=weblogic -DartifactId=wljmx_client -Dversion=11g -Dpackaging=jar -DgeneratePom=tru</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=707</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Werken in het buitenland</title>
		<link>http://datalinks.nl/wordpress/?p=711</link>
		<comments>http://datalinks.nl/wordpress/?p=711#comments</comments>
		<pubDate>Wed, 28 Mar 2012 03:30:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Persoonlijk]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=711</guid>
		<description><![CDATA[Mijn &#8216;werken in het buitenland&#8217; avontuur zit er bijna op…nog 3 dagen….tijd om het eea op een rijtje te zetten. Sinds enkele collega&#8217;s in 2003/2004 bij IBM verteld hadden over hun &#8216;werken in het buitenland&#8217; ervaring …heeft dit idee ook &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=711">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Mijn &#8216;werken in het buitenland&#8217; avontuur zit er bijna op…nog 3 dagen….tijd om het eea op een rijtje te zetten.</p>
<p style="text-align: left;">Sinds enkele collega&#8217;s in 2003/2004 bij IBM verteld hadden over hun &#8216;werken in het buitenland&#8217; ervaring …heeft dit idee ook in mijn hoofd rondgespookt.</p>
<p style="text-align: left;">Leven bestaat immers uit een verzameling van ervaringen…. en hoe weet je wat werken in het buitenland werkelijk inhoud als je het niet zelf hebt meegemaakt.</p>
<p style="text-align: left;">Ik was bij mijn vorige werkgever het laatste half jaar ingekakt en was echt toe aan een nieuwe uitdaging. Na 2 jaar &#8216;knallen&#8217; had ik geen energie meer en de omgeving inspireerde mij niet meer, toch een hele fijne periode gehad bij de NUON…met name vanwege de collega&#8217;s …. maar uiteindelijk gaat het toch om het werk en niet de collega&#8217;s alleen.</p>
<p style="text-align: left;">Het telefoontje van een Engels/ Indiaase headhunter om een avontuur aan te gaan in Portugal of Zwitserland kwam destijd als geroepen…een nieuw avontuur en ik kon eindelijk het spook in mijn hoofd confronteren.</p>
<p style="text-align: left;">Zoals verwacht had ik de uitdaging voor werken bij Nespresso met beide handen aangenomen zonder al te diep na te denken over de consequenties….je leeft tenslotte maar 1 keer. Portugal was om een of andere duistere redenen niet doorgegaan…mijn vermoeden is dat de headhunter via Nespresso meer voor mij kon vangen&#8230;</p>
<p style="text-align: left;">De eerste paar weken is echt alles super spannend. Je werkt op (waarschijnlijk) 1 van de mooiste plekken op aarde…(Lausanne is prachtig…als de zon schijnt) en zelfs het op en neer vliegen lijkt in het begin geweldig. Ik weet nog dat ik in October hier begon, in het zonnetje aan het meer zat…uitkeek op de bergen en echt dacht van….geweldig dat ik dit mag meemaken.</p>
<p style="text-align: left;">Ik arriveerde als 1e van een development team bij Nespresso. Er moest een nieuw OSB landschap gebouwd worden en het 1e project was het bouwen van interfaces voor het productieproces tussen de fabrieken, SAP en warehouses. Spannend, ook omdat Nespresso producten heeft waar je iets bij voor kan stellen….in tegenstelling tot de meeste bank en verzekeringsproducten. De infrastructuur zelf is door Oracle geimplementeerd, ik heb daar alleen een review over gegeven.</p>
<p style="text-align: left;">Om geld te besparen…Zwitserland is namelijk reeteduur, heb ik de 1e periode in een youth hostel geslapen. Eerst op een gedeelde kamer (goedkoopste optie.. 30fr per nacht) …maar de stank van enkele kamergenoten heeft mij doen besluiten om ietsje luxer te gaan….en te kiezen voor een eigen kamer (tussen de 65 en 90fr per nacht).. Voordeel van een dormatory (slapen met meerdere mensen op 1 kamer) is wel dat je bijna gedwongen wordt om vroeg naar bed te gaan….ik had hierdoor veel energie en heb eigenlijk best wel leuke mensen ontmoet …in het kort: duitse chemici/ wiskundigen…italiaans/ spaanse bouwvakkers en wat studenten. Regelmaat is gewoon gezond en goed voor je…kan je kinderen (inclusief mezelf) wel uitleggen…maar uiteindelijk zijn wij toch &#8216;creatures of habbit&#8217;. In het begin ook redelijk wat afgevallen…echt door de regelmaat: vroeg naar bed, alleen goed lunchen en ontbijten…zoveel mogelijk suikers vermijden en s&#8217; avonds alleen bij honger een kleine beetje eten om de honger weg te nemen…Dit ging goed tot December…en was daarna weer voorbij….grrrr</p>
<p style="text-align: left;">In November en December heb ik ook geleerd om beter naar mijn lichaam te luisteren…ik begon echt last van mijn rug en nek te krijgen…ouderdoms kwaatljes <img src='http://datalinks.nl/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ik ben toen gestopt met wordfeud (was verslaafd) omdat ik last kreeg van mijn nek&#8230;.en ben daarna naar een masseur geweest die mijn rug eigenlijk weer goed heeft gezet….ben nu meer bewust van mijn kwaaltjes en luister ook beter naar mijn lichaam als het rust nodig heeft.</p>
<p style="text-align: left;">Na de rush van emoties in het begin van mijn avontuur, begon ik te beseffen wat ik achterliet….en het oude besef: &#8216;je beseft pas wat je hebt…als het er niet meer is&#8217; kwam weer bovendrijven. Je gaat denken …waar ben ik mee bezig..ik mis mijn kinderen, mijn vrouw…ik mis gewoon een deel van mezelf…een deel van het leven van mijn kids…en ze groeien al zo snel.</p>
<p style="text-align: left;">Dan wordt het zwaar…ik dacht in het begin ook (ook om geld te besparen) ik ga 1 x in de 2 weken naar Nederland terug…maar eigenlijk ben ik gewoon iedere week terug komen vliegen…wel zwaar, maar ik ben in ieder geval 2 dagen in de week bij mijn gezinnetje.</p>
<p style="text-align: left;">Het verhaal is lang genoeg zo, in het kort dan de plus en minpunten van Zwitserland zoals ik die ervaren had:</p>
<p style="text-align: left;"><strong>MIN</strong></p>
<ol>
<li>Mensen zijn stug</li>
<li>Kunnen niet vergaderen, gaat echt alle kanten op&#8230;mensen komen naar vergaderingen om zichzelf te laten zien en te profileren&#8230;gaat nergens over</li>
<li>In het project hing een heel negatieve sfeer, had voornamelijk te maken met negatieve collegas (niet perse zwitsers)&#8230;lees niet oplossingsgericht</li>
<li>Collegas zijn niet te vertrouwen, het stereotype aardig in je gezicht maar ondertussen per mail en in de wandelgangen letterlijk mensen de grond in trappen&#8230;echt achterbaks gedrag waar ik persoonlijk niet tegen kan</li>
</ol>
<p><strong>Plus</strong></p>
<ol>
<li>De meeste mensen hebben stijl en klasse, ze zien er echt verzorgd en netjes uit&#8230;daar kan Nederland nog wat van leren</li>
<li>Beleefd, ook dit was een verademing hoewel dit vaak werd opgeheven door het stugge gedrag&#8230;Maar met name de fransen of franstaligen zijn erg beleefd en vriendelijk</li>
<li>Schoon, mensen gooien geen shit op straat en verzorgen de omgeving net zo goed als zichzelf&#8230;ook daar kan Nederland wat van leren</li>
</ol>
<p><strong>Slot</strong></p>
<p>Ik ben erg blij dat ik de mogelijkheid heb gehad om te werken in het buitenland&#8230;een mooie ervaring waarvan ik het volgende heb geleerd:</p>
<ul>
<li>Ik kan de goede en slechte dingen waarderen/ accepteren als ik in het buitenland leef&#8230;dus ik kan het</li>
<li>Ik wil niet meer zo lang zonder mijn gezin leven&#8230;daar is het leven te kort en te waardevol voor</li>
<li>Vertrouw geen mensen die continue klagen over anderen&#8230;.die gaan uiteindelijk hetzelfde over jouw rug doen</li>
<li>Nederland is zo slecht nog niet&#8230;zeker als je kosten met het leven in zwitserland vergelijkt</li>
<li>Geleerd om tijd te nemen voor dingen&#8230;mijn oude hobby grafity weer opgepakt</li>
<li>Het IT niveau in Nederland doet zeker niet onder voor het niveau hier&#8230;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=711</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create subversion release page</title>
		<link>http://datalinks.nl/wordpress/?p=696</link>
		<comments>http://datalinks.nl/wordpress/?p=696#comments</comments>
		<pubDate>Mon, 26 Mar 2012 14:59:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[subversion svn releasenotes release html page xslt xml]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=696</guid>
		<description><![CDATA[You like to create an overview of release notes; based on the svn comments. &#8230;and of course you like to do it scripted / automatically and present it on a HTML version page&#8230;.nice&#8230; here is some help how to achieve &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=696">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>You like to create an overview of release notes; based on the svn comments. &#8230;and of course you like to do it scripted / automatically and present it on a HTML version page&#8230;.nice&#8230;</p>
<p>here is some help how to achieve this, using subversion/ shell script and xslt</p>
<p>With a shell script determine what for what kind of date range you like to create your report&#8230;for example look in the TAGS directory for the latest version and find the checkin date of the biggest version number&#8230;&#8230;not going to tell you how to do that&#8230;what fun is in that&#8230;1 hint though&#8230;use the</p>
<pre class="brush: plain; title: ; notranslate">svn list</pre>
<p>command.<br />
Generate a XML overview from subversion with checkin information with the following command:</p>
<pre class="brush: plain; title: ; notranslate">
svn log https://URL of SUVERSION PROJECt/trunk/ -v -r {2012-01-01}:{2012-10-20} --xml
</pre>
<p>When you do this &#8230;you get a XML dump of subversion actions&#8230;of course you like to convert this with XSLT into a nice html page&#8230;here you go:</p>
<pre class="brush: plain; title: ; notranslate">

function createReleaseNotes(){
   projectName=$1
   version=$2
   rn_page=&quot;/home/soa/software/apache-tomcat-6.0.33/webapps/&lt;strong&gt;WEBAPPDIR&lt;/strong&gt;/releasenotes/$projectName-$version.xml&quot;
   rn_style_page=&quot;/home/soa/software/apache-tomcat-6.0.33/webapps/&lt;strong&gt;WEBAPPDIR&lt;/strong&gt;/releasenotes/$projectName-$version.xsl&quot;
   rn_style_page2=&quot;$projectName-$version.xsl&quot;
   style_page=&quot;/home/soa/software/apache-tomcat-6.0.33/webapps/&lt;strong&gt;WEBAPPDIR&lt;/strong&gt;/releasenotes/releasenotes.xsl&quot;
   trunkTime=`date +&quot;%Y-%m&quot;`
   trunkDay=`date +&quot;%d&quot;`
   trunkDay2=`expr $trunkDay + 1`
   latestTagTimeTmp=`svn list --verbose https://&lt;strong&gt;SVN URL&lt;/strong&gt;/$projectName/tags/ | tail -1 `
   year=`date +&quot;%Y&quot;`
   monthTmp=`echo $latestTagTimeTmp | awk ' { print $3 } '`
   month=`getCalenderMonth $monthTmp`
   day=`echo $latestTagTimeTmp | awk ' { print $4 } '`
   day2=`expr $day - 1`
   #Bugfix for the 1st of the month
   if [[ $day2&lt;1 ]];
   then
      day2=1;
   fi
   if  [ ! -f $rn_page ]
   then
      touch $rn_page
      # Generate the XSLT
      touch $rn_style_page
      new=&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;ISO-8859-1\&quot;?&gt;&lt;?xml-stylesheet type=\&quot;text\/xsl\&quot; href=\&quot;$rn_style_page2\&quot;?&gt;&quot;
      cat $style_page | while read LINE
      do
         echo $LINE | sed 's/Release notes/Release notes for '$projectName' version '$version'/ ' &gt;&gt; $rn_style_page
      done
      echo &quot; svn log https://&lt;strong&gt;SVN URL&lt;/strong&gt;/$projectName/trunk/ -v -r {$year-$month-$day2}:{$trunkTime-$trunkDay} --xml&quot;
      svn log https://&lt;strong&gt;SVN URL&lt;/strong&gt;/$projectName/trunk/ -v -r {$year-$month-$day2}:{$trunkTime-$trunkDay} --xml | while read LINE
      do
         echo $LINE | sed &quot;s/&lt;?xml version=\&quot;1.0\&quot;?&gt;/${new}/&quot; &gt;&gt; $rn_page
      done
   fi
}
</pre>
<p>&#8230;&#8230;and here is the Stylesheet&#8230;.</p>
<pre class="brush: plain; title: ; notranslate">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot;
xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
&lt;xsl:template match=&quot;/&quot;&gt;
&lt;html&gt;
&lt;body&gt;
&lt;h2&gt;Release notes&lt;/h2&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr bgcolor=&quot;#9acd32&quot;&gt;
&lt;th&gt;Author&lt;/th&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;xsl:for-each select=&quot;log/logentry&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;xsl:value-of select=&quot;author&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;xsl:value-of select=&quot;date&quot; /&gt;&lt;/td&gt;
&lt;td&gt;&lt;xsl:value-of select=&quot;msg&quot; /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/xsl:for-each&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=696</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create Weblogic JMS Web Application</title>
		<link>http://datalinks.nl/wordpress/?p=693</link>
		<comments>http://datalinks.nl/wordpress/?p=693#comments</comments>
		<pubDate>Sun, 25 Mar 2012 19:57:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CompositeData]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[JMSDestinationRuntimeMBean]]></category>
		<category><![CDATA[JMSMessageInfo]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[TextMessage]]></category>
		<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=693</guid>
		<description><![CDATA[While you landed on this page you probably googled on one of these Terms: JMS, Queue, Browser, Spring, Web App, Java, JMSDestinationRuntimeMBean, JMSMessageInfo, TextMessage or CompositeData You found dozens of websites which will tell you how to create Weblogic JMS &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=693">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">While you landed on this page you probably googled on one of these Terms:</p>
<p style="text-align: left;">JMS, Queue, Browser, Spring, Web App, Java, JMSDestinationRuntimeMBean, JMSMessageInfo, TextMessage or CompositeData<br />
You found dozens of websites which will tell you how to create Weblogic JMS related tools using Python.. ( I liked is this one: <a href="http://weblogicserver.blogspot.com/2010/07/using-wlst-script-to-list-messages-from.html">http://weblogicserver.blogspot.com/2010/07/using-wlst-script-to-list-messages-from.html</a> ) but finding out <strong>HOW</strong> to do it in <strong>java</strong> is less easy to find….even if you browse the Java API&#8217;s…you will find no examples.</p>
<p style="text-align: left;">I did some research and found out how to get JMS Queue info/ functions using java code…here it is, hope you can use it&#8230;</p>
<p style="text-align: left;">Below you find a method which returns an (Array)List of a message Type names JmsMessage.</p>
<ul>
<li>JmsMessage is in my case just a java bean which contains the name and the JMS message body.</li>
<li><span style="text-align: left;">as Input the most important parameter is the (Array) List QueueInfo parameter. The most important property in the QueueInfo object is the JMSDestinationRuntimeMBean, </span><span style="text-align: left;">this can only be set if you have a connection to the Managed Server and looked up the queue….</span></li>
</ul>
<pre class="brush: java; title: ; notranslate">
public List&lt;JmsMessage&gt; getQueueMessages(String queueName ,List&lt;QueueInfo&gt; allQueues, String msgId) throws ManagementException, OpenDataException, JMSException{

   List&lt;JmsMessage&gt; result = new ArrayList&lt;JmsMessage&gt;();

   // This local private method gets the QueueInfo Object from the List of Queues
   QueueInfo queue = getQueueFromList(queueName, allQueues);

   JMSDestinationRuntimeMBean jmsDestRtMBean = queue.getJmsDestRuntimeMBean();

   // The cursor is a string that represents current position within the array of messages
   String cursor = jmsDestRtMBean.getMessages(msgId, 0);
   // Determine the size of the array of messages, needed for getting the complete array
   long cursorSize = jmsDestRtMBean.getCursorSize(cursor);
   // The Actual array of JMS Messages
   CompositeData[] jmsMessages = jmsDestRtMBean.getNext(cursor, (int) cursorSize);
   // Iterate over the JMS Message array

   for(CompositeData jmsMessage : jmsMessages){
      String msg = null;

      // This object wrapper is needed in order to get the getHandle result…..
      //  this will jump to the actual message within the array

      JMSMessageInfo jmsInfo = new JMSMessageInfo(jmsMessage);
      long handle = jmsInfo.getHandle();

      // This is the funny part…..in stead of getting message from the array
      // you do a getMessage from the JMSDestinationRuntimeMBean using the determined cursor and handle
      CompositeData compData = jmsDestRtMBean.getMessage(cursor,handle);

      // Wrap this object again with the JMSMessageInfo object, than you can get the message…
      // this works only with (XML)text messages of course….
      jmsInfo = new JMSMessageInfo(compData);
      WLMessage wlm = jmsInfo.getMessage();
      if(wlm instanceof TextMessage){

         //  Setting the JMS body to our result list
         TextMessage tmX = (TextMessage)wlm;
         msg = tmX.getText();
      }else{
         log.debug(wlm.toString());
      }
      JmsMessage jmsMesg = new JmsMessage();
      jmsMesg.setBody(msg);
      // In my example I have set the propery MESSAGE_ID to the JMS Message, this is the way to get the property
      jmsMesg.setMsgIdPropery(jmsInfo.getMessage().getStringProperty(&quot;MESSAGE_ID&quot;));      result.add(jmsMesg);
   }
   return result;
}

/*
Collects the needed queueinformation per domain
*/
public List&lt;QueueInfo&gt; collectQueueInfo(DomainHolder domainParam, String env){
List&lt;QueueInfo&gt; result = new ArrayList&lt;QueueInfo&gt;();
try {
DomainRuntimeServiceMBean domainRuntimeServiceMBean =
(DomainRuntimeServiceMBean)
MBeanServerInvocationHandler.&lt;wbr&gt;newProxyInstance(domainParam.&lt;wbr&gt;getConnection(),
new ObjectName(&lt;wbr&gt;DomainRuntimeServiceMBean.&lt;wbr&gt;OBJECT_NAME));
ServerRuntimeMBean[] serverRTMBeans =
domainRuntimeServiceMBean.&lt;wbr&gt;getServerRuntimes();
for(ServerRuntimeMBean serverRTMBean : serverRTMBeans){
JMSRuntimeMBean jmsRTMb = serverRTMBean.getJMSRuntime();
JMSServerRuntimeMBean[] jmsSrvrRTMbs = jmsRTMb.getJMSServers();
for(JMSServerRuntimeMBean jmsSrvrRTMb : jmsSrvrRTMbs){
JMSDestinationRuntimeMBean[] jmsDestRTMBeans =
jmsSrvrRTMb.getDestinations();
for(JMSDestinationRuntimeMBean jmsDestRTMBean : jmsDestRTMBeans ){
jmsDestRTMBean.&lt;wbr&gt;getMessagesCurrentCount();
QueueInfo queue = new QueueInfo();
queue.setDomainName(&lt;wbr&gt;domainParam.getName());
queue.setName(jmsDestRTMBean.&lt;wbr&gt;getName());
queue.setState(jmsDestRTMBean.&lt;wbr&gt;getState());
queue.setMessageHigh(&lt;wbr&gt;jmsDestRTMBean.&lt;wbr&gt;getMessagesHighCount());
queue.setCurrentMessages(&lt;wbr&gt;jmsDestRTMBean.&lt;wbr&gt;getMessagesCurrentCount());
queue.setCurrentConsumers(&lt;wbr&gt;jmsDestRTMBean.&lt;wbr&gt;getConsumersCurrentCount());
queue.setJmsDestRuntimeMBean(&lt;wbr&gt;jmsDestRTMBean);
queue.setEnv(env);
result.add(queue);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

public Map&lt;String,String&gt; collectQueueConfigInfo(&lt;wbr&gt;DomainHolder domainParam){
Map&lt;String, String&gt; result = new HashMap&lt;String, String&gt;();
try {
DomainRuntimeServiceMBean domainRuntimeServiceMBean =
(DomainRuntimeServiceMBean)
MBeanServerInvocationHandler.&lt;wbr&gt;newProxyInstance(domainParam.&lt;wbr&gt;getConnection(),
new ObjectName(&lt;wbr&gt;DomainRuntimeServiceMBean.&lt;wbr&gt;OBJECT_NAME));
DomainMBean dem = domainRuntimeServiceMBean.&lt;wbr&gt;getDomainConfiguration();
JMSSystemResourceMBean[] jmsSRs = dem.getJMSSystemResources();

for (JMSSystemResourceMBean jmsSR : jmsSRs){
QueueBean[] qbs = jmsSR.getJMSResource().&lt;wbr&gt;getQueues();
for (QueueBean qb : qbs){
result.put(&quot;QUEUE_&quot;+qb.&lt;wbr&gt;getName(),qb.getJNDIName());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=693</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add http parameters to your service call in the sbconsole</title>
		<link>http://datalinks.nl/wordpress/?p=690</link>
		<comments>http://datalinks.nl/wordpress/?p=690#comments</comments>
		<pubDate>Tue, 07 Feb 2012 18:11:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=690</guid>
		<description><![CDATA[just a small reminder to myself&#8230; the code below you have to add in your sbconsole (when you test a service) you have to add it in query parameters box.. the code below is equivalent to http://someProxyService?SERVICE_NAME=SomeServiceToCall]]></description>
			<content:encoded><![CDATA[<p>just a small reminder to myself&#8230;</p>
<p>the code below you have to add in your sbconsole (when you test a service) you have to add it in query parameters box..</p>
<p>the code below is equivalent to http://someProxyService?SERVICE_NAME=SomeServiceToCall</p>
<pre class="brush: plain; title: ; notranslate">

&lt;code&gt;&lt;tp:query-parameters xmlns:tp=&quot;http://www.bea.com/wli/sb/transports/http&quot;&gt;
 &lt;tp:parameter name=&quot;SERVICE_NAME&quot; value=&quot;SomeServiceToCall&quot; /&gt;
 &lt;/tp:query-parameters&gt;&lt;/code&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=690</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux/Unix shell script to convert monthname to number</title>
		<link>http://datalinks.nl/wordpress/?p=666</link>
		<comments>http://datalinks.nl/wordpress/?p=666#comments</comments>
		<pubDate>Mon, 06 Feb 2012 18:16:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Linux shell date month monthname convert conversion]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=666</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre class="brush: java; title: ; notranslate">

function getCalenderMonth(){
 count=0
 months=&quot;Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec&quot;
 for month in $months
 do
    teller=`expr $count + 1`
    count=$teller
    if [[ $month == $1 ]]
    then
       echo $teller
    fi
 done
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=666</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated testing of OSB Services</title>
		<link>http://datalinks.nl/wordpress/?p=669</link>
		<comments>http://datalinks.nl/wordpress/?p=669#comments</comments>
		<pubDate>Fri, 27 Jan 2012 19:07:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Alsb]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[Osb]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[xmlunit junit]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=669</guid>
		<description><![CDATA[Changed my opinion about automated testing of OSB services.(see last article) In stead of focussing on linking the input to the output, I am making the assumption that I am the only one testing on the DEV environment. Fair and &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=669">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Changed my opinion about automated testing of OSB services.(see last article)<br />
In stead of focussing on linking the input to the output, I am making the assumption that I am the only one testing on the DEV environment. Fair and reasonable assumption and fairly easy to implement&#8230;..</p>
<p style="text-align: left;"><strong>The assumption:</strong><br />
The development environment is using the Continuous Integration strategy. After each build and deployment automated testing will be done on the DEV environment.</p>
<p style="text-align: left;">My automated Junit/ XMLUnit example is executing the following steps:</p>
<ul style="list-style-type: disc;">
<li style="text-align: left;">Posts a valid input XML file to a TestFacade</li>
<li style="text-align: left;">The Facade writes the input (from the body) to a directory</li>
<li style="text-align: left;">Test does a Thread.sleep (giving the OSB Interface the time to do it&#8217;s thing)</li>
<li style="text-align: left;">OSB</li>
<li style="text-align: left;">     Proxy Service reads (with JCA File Adapter) an XML file</li>
<li style="text-align: left;">     To Queue via Business Service</li>
<li style="text-align: left;">     Proxy Service is doing VETRO stuff to the message</li>
<li style="text-align: left;">     Business Service is writing to FTP server</li>
<li style="text-align: left;">Test/ Thread awakens and picks up the file</li>
<li style="text-align: left;">Actual output file is validated against XML schema using xmlunit</li>
<li style="text-align: left;">Actual output file is validated using xmlunit</li>
</ul>
<p>The following technologies are being used: maven/ xmunit (for schema and xpath validations/ junit/ java/ apache-commons (for the FTP client)/ apache-httpclient (for the http post)</p>
<p>Maven pom.xml file</p>
<pre class="brush: plain; title: ; notranslate">

&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
 xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&gt;
 &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

&lt;!-- BASIC --&gt;
 &lt;groupId&gt;com.datalinks&lt;/groupId&gt;
 &lt;artifactId&gt;testxmlvalidtion&lt;/artifactId&gt;
 &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;

&lt;properties&gt;
     &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
&lt;/properties&gt;

&lt;dependencies&gt;
   &lt;dependency&gt;
     &lt;groupId&gt;xmlunit&lt;/groupId&gt;
     &lt;artifactId&gt;xmlunit&lt;/artifactId&gt;
     &lt;version&gt;1.3&lt;/version&gt;
   &lt;/dependency&gt;
   &lt;dependency&gt;
      &lt;groupId&gt;junit&lt;/groupId&gt;
      &lt;artifactId&gt;junit&lt;/artifactId&gt;
      &lt;version&gt;4.7&lt;/version&gt;
      &lt;scope&gt;test&lt;/scope&gt;
   &lt;/dependency&gt;
   &lt;dependency&gt;
      &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt;
      &lt;artifactId&gt;httpclient&lt;/artifactId&gt;
      &lt;version&gt;4.1.2&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
   &lt;/dependency&gt;
   &lt;dependency&gt;
      &lt;groupId&gt;log4j&lt;/groupId&gt;
      &lt;artifactId&gt;log4j&lt;/artifactId&gt;
      &lt;version&gt;1.2.16&lt;/version&gt;
      &lt;scope&gt;compile&lt;/scope&gt;
   &lt;/dependency&gt;
 &lt;/dependencies&gt;
 &lt;!-- /BASIC --&gt;

&lt;!-- BUILD --&gt;
&lt;build&gt;
  &lt;plugins&gt;
     &lt;plugin&gt;
        &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
        &lt;configuration&gt;
           &lt;source&gt;1.6&lt;/source&gt;
           &lt;target&gt;1.6&lt;/target&gt;
        &lt;/configuration&gt;
     &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;
&lt;!-- /BUILD --&gt;

&lt;/project&gt;
</pre>
<p>Later you can add a task to bamboo that will automatically checkout the test project and execute the following maven tasks&#8230;clean and test<br />
But of course you can also manually execute the test in a shell environment&#8230;</p>
<ul>
<li><span style="line-height: 16px;">mvn clean</span></li>
<li><span style="line-height: 16px;">mvn -o test</span></li>
</ul>
<p><span style="line-height: 16px;">The -o ensures that you use the local repository (make sure that you have the dependencies in your local respository then) In order to run this you need to have at least the following installed: JRE (also set the JAVA_HOME setting), installation of maven 2x or higher (also make sure you have the MVN_HOME or M2_HOME environment variable set to the path of your maven installation)&#8230;.in your maven installation directory you will have a settings.xml file. I use this file to set the directory for the local maven repository, I do this with the following property</span></p>
<pre class="brush: plain; title: ; notranslate">localRepository&gt;/path/to/local/repo&lt;/localRepository&gt;</pre>
<p>Your Java project should contain the following directory structure</p>
<pre class="brush: plain; title: ; notranslate">
PROJECTDIR
---pom.xml (file)
---src
------main
---------java
------------[package directories]
------test
---------java
------------[package directories]
</pre>
<p>When you do a mvn test or package (not using the -Dmaven.test.skip=true option) maven will know that it needs to execute the tests that are in the src/test/java directory (and it sub directories of course)<br />
Assuming you use eclipse (OEPE) as your IDE, and you have the M2_REPO variable set to the path of your local repository&#8230;you can create the project structure (and set the proper classpath for your project) by typing</p>
<ul>
<li>mvn eclipse:eclipse</li>
</ul>
<p><strong>TestFacade<br />
</strong>Create a proxyService that has Service Type: Messaging Service and input TEXT, this service can do a callout which persist the body to a preconfigured directory (my implementation uses a parameter in the header, and based on the parameter SERVICE_NAME, it persists files in different directories&#8230;using the OSB Routing table). In stead of using JCA I prefer to do a simple JAVA call for writing the file:</p>
<pre class="brush: plain; title: ; notranslate">

package com.datalinks.testexample;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.xmlsoap.schemas.soap.envelope.impl.BodyImpl;

public class CustomFileWriter {
public static void writeFile(String fileName, String directory, BodyImpl content) throws IOException{
String tmpString = content.stringValue(); tmpString = tmpString.replaceFirst(&quot;&lt;xml-fragment&gt;&quot;, &quot;&quot;);
tmpString = tmpString.replaceFirst(&quot;&lt;/xml-fragment&gt;&quot;, &quot;&quot;);
FileWriter fstream = new FileWriter(directory+fileName);
BufferedWriter out = new BufferedWriter(fstream);
out.write(tmpString);
out.close();
}
}
</pre>
<p><span style="line-height: 16px;">the java callout has 3 parameters: filename, directory and the OSB $body variable&#8230;which in java code is equal to the </span>org.xmlsoap.schemas.soap.envelope.impl.BodyImpl object.<br />
Also notice that I am removing the &lt;xml-fragment&gt; tags&#8230;.this is added by OSB and changes the content of the XML file&#8230;so it needs to go.</p>
<p>Java code that is able to post HTTP call (with body)</p>
<pre class="brush: java; title: ; notranslate">

package com.datalinks.testexample;

import java.io.*;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;

public class HttpClientTester {
   static Logger logger = Logger.getLogger(HttpClientTester.class);
   private static String testFacadeUrl=&quot;http://localhost:7001/TestServices/ProxyServices/TestServicesFacade_PS?SERVICE_NAME=&quot;;

   public static String callService(String serviceName) throws Exception {
   String result = null;
   DefaultHttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost(testFacadeUrl+serviceName);
   HttpResponse response = null;
   response = httpclient.execute(httppost);
   if(response.getStatusLine().getStatusCode()!=200){
      throw new Exception(&quot;Exception calling &quot;+serviceName+&quot; statusCode &quot;+response.getStatusLine().getStatusCode());
   }
   HttpEntity entity = response.getEntity();
   if (entity != null) {
      long len = entity.getContentLength();
      if (len != -1 &amp;&amp; len &lt; 2048) {
         result = EntityUtils.toString(entity);
      }
   }
   return stripClobMessageFromHeaderAndFooter(result);
 }
public static String callService(String serviceName, String body) throws Exception {

   String result = null;
   DefaultHttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost(testFacadeUrl+serviceName);
   StringEntity entityIn = new StringEntity(body);
   httppost.setEntity(entityIn);
   HttpResponse response = null;
   response = httpclient.execute(httppost);
   if(response.getStatusLine().getStatusCode()!=200){
      throw new Exception(&quot;Exception calling &quot;+serviceName+&quot; statusCode &quot;+response.getStatusLine().getStatusCode());
   }
   HttpEntity entity = response.getEntity()
      if (entity != null) {
         long len = entity.getContentLength();
         if (len != -1 &amp;&amp; len &lt; 2048) {
            result = EntityUtils.toString(entity);
         }
         return stripMessageFromHeaderAndFooter(result);
      }
   }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=669</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>( automated ) testing of your osb services</title>
		<link>http://datalinks.nl/wordpress/?p=660</link>
		<comments>http://datalinks.nl/wordpress/?p=660#comments</comments>
		<pubDate>Mon, 16 Jan 2012 22:28:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Osb test end-to-end junit soapui mvn bamboo]]></category>

		<guid isPermaLink="false">http://datalinks.nl/wordpress/?p=660</guid>
		<description><![CDATA[A while ago i posted something about continuous integration for osb on a linux machine running bamboo. At the end of the build cycle (code checkin by dev, tool detects change, checkout, build, deploy) you like to run tests to &#8230;<p class="read-more"><a href="http://datalinks.nl/wordpress/?p=660">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>A while ago i posted something about continuous integration for osb on a linux machine running bamboo. At the end of the build cycle (code checkin by dev, tool detects change, checkout, build, deploy) you like to run tests to see if the code that was just checked in&#8230;did not break anything. </p>
<p>In the case of service bus technology you preferably like to do end-to-end testing&#8230;.meaning something like&#8230;.<br />
putting input somewhere&#8230;.<br />
service does its VETRO ( validate, enrich, transform,route and operate) thingie<br />
and the ouput gets validated &#8230;</p>
<p>For <strong>synchronous</strong> services the strategy for testing could be&#8230;<br />
- create a test facade that calls the service you like to test<br />
- the service stores the output of the message using the wli osb reporting tables, storing $body witha key that has a unique id&#8230;for e.g. The internal $messageID variable&#8230;<br />
- the service returns the messageID in the header with an inbound response to the testfacade<br />
- thetestfacade does a query in the wli report data table using the id that was given in the header<br />
I made a poc for that&#8230;and that works fine&#8230; If everything is synchronous &#8230;even over more services , this should enpose no problem&#8230;as long as the services pass the correct information via the header.. In my poc i had to do 2 tricz to get this running&#8230;<br />
- include a timer that delays the query to the reporting table&#8230;the services repond quicker than the persistance of the body in the database&#8230;therefor i implemented a Thread.sleep in a java callout<br />
- You need to sql the following in order to get the xml content from the blob table&#8230;<br />
<strong><code>select utl_raw.cast_to_varchar2(dbms_lob.substr(BLOB_FIELD)) from TABLE_WITH<em></em>_BLOB where ID = '<row id>';</row></code><br />
</strong><br />
&#8230;you can get the code from my repo&#8230;.</p>
<p>For <strong>asynchronous</strong> services this is a complete different story&#8230; Often there is some queueing mechanism in place&#8230;and the main question will be then&#8230;<br />
Which input file is responsible for which output file&#8230;.with async services i cannot find a way to link the input with the output&#8230;.perhaps content based?&#8230; Or do something smart with the facade ( test directory Or something like that) in any way &#8230;for now i will just assume that i am the only one testing or using a certain service at the time&#8230;.then my strategy for now will be&#8230;<br />
- let junit put file in the input of service<br />
- wait some time<br />
- let junit pick up the result from the configured endpoint of the service&#8230;.do some testing&#8230;and voila</p>
]]></content:encoded>
			<wfw:commentRss>http://datalinks.nl/wordpress/?feed=rss2&#038;p=660</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

