<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Marco's Resources &#187; jboss</title>
	<atom:link href="http://unopuntozero.wordpress.com/tag/jboss/feed/" rel="self" type="application/rss+xml" />
	<link>http://unopuntozero.wordpress.com</link>
	<description>Java, JBoss e chissà... forse qualcos'altro</description>
	<lastBuildDate>Fri, 22 May 2009 18:40:08 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>it</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='unopuntozero.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/224949132bef7e59e4808baeb7eb084e?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Marco's Resources &#187; jboss</title>
		<link>http://unopuntozero.wordpress.com</link>
	</image>
			<item>
		<title>Servizi HA-Singleton in JBoss</title>
		<link>http://unopuntozero.wordpress.com/2009/05/22/servizi-ha-singleton-in-jboss/</link>
		<comments>http://unopuntozero.wordpress.com/2009/05/22/servizi-ha-singleton-in-jboss/#comments</comments>
		<pubDate>Fri, 22 May 2009 18:40:08 +0000</pubDate>
		<dc:creator>markoPO</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[ha-singleton]]></category>

		<guid isPermaLink="false">http://unopuntozero.wordpress.com/?p=13</guid>
		<description><![CDATA[HA-Singleton è un particolare servizio di JBoss che consente ad una applicazione distribuita in un cluster di essere eseguita come singleton (una sola istanza in esecuzione) e, nel contempo, garantire alta disponibilità. Come è facile intuire si tratta di una soluzione adatta per tutte quelle applicazioni che, per motivi progettuali, non possono essere eseguite in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=unopuntozero.wordpress.com&blog=4206168&post=13&subd=unopuntozero&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>HA-Singleton è un particolare servizio di JBoss che consente ad una applicazione distribuita in un cluster di essere eseguita come singleton (una sola istanza in esecuzione) e, nel contempo, garantire alta disponibilità. Come è facile intuire si tratta di una soluzione adatta per tutte quelle applicazioni che, per motivi progettuali, non possono essere eseguite in istanze multiple. Si prenda ad esempio un semplice job schedulato.</p>
<p>Il principio si basa sulla presenza di un nodo master (allo startup è il primo nodo avviato) su cui vengono eseguite tutte queste applicazioni. In caso di failure del nodo master, il cluster procede ad una elezione di un nuovo master fra i nodi esistenti e su quello vengono avviate le applicazioni.</p>
<p>Il modo più semplice per avere una applicazione in HA-Singleton è di fare il deploy nella directory deploy-hasingleton. Questa directory viene monitorizzata esclusivamente alla partenza del nodo master e il deploy delle applicazioni in essa contenute viene effettuato solo in quel nodo. Lo svantaggio principale di questo tipo di deploy consiste nel fatto che non è possibile fare deploy a caldo in quanto tale directory non viene letta dal deployer in nessun altro momento se non all&#8217;avvio del nodo master.</p>
<p>Se prendiamo ad esempio il seguente file <em>scheduler-service.xml</em> che rappresenta un semplice job schedulato:</p>
<pre><span style="color:#99cc00;"><span style="color:#339966;">&lt;?xml </span><span style="color:#339966;">version</span><span style="color:#339966;">=</span><span style="color:#339966;">"1.0"</span><span style="color:#339966;"> </span><span style="color:#339966;">encoding</span><span style="color:#339966;">=</span><span style="color:#339966;">"UTF-8"</span><span style="color:#339966;">?&gt;
&lt;server&gt;
    &lt;mbean </span><span style="color:#339966;">code</span><span style="color:#339966;">=</span><span style="color:#339966;">"org.jboss.varia.scheduler.Scheduler"</span><span style="color:#339966;"> </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"it.test:service=Scheduler"</span><span style="color:#339966;">&gt;
        &lt;attribute </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"StartAtStartup"</span><span style="color:#339966;">&gt;</span><span style="color:#339966;">true</span><span style="color:#339966;">&lt;/attribute&gt;
        &lt;attribute </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"SchedulableClass"</span><span style="color:#339966;">&gt;</span><span style="color:#339966;">it.test.SchedulableClass</span><span style="color:#339966;">
        &lt;/attribute&gt;
        &lt;attribute </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"InitialStartDate"</span><span style="color:#339966;">&gt;</span><span style="color:#339966;">NOW</span><span style="color:#339966;">&lt;/attribute&gt;
        &lt;attribute </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"SchedulePeriod"</span><span style="color:#339966;">&gt;</span><span style="color:#339966;">5000</span><span style="color:#339966;">&lt;/attribute&gt;
        &lt;attribute </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"InitialRepetitions"</span><span style="color:#339966;">&gt;</span><span style="color:#339966;">-1</span><span style="color:#339966;">&lt;/attribute&gt;
        &lt;depends&gt;
            &lt;mbean </span><span style="color:#339966;">code</span><span style="color:#339966;">=</span><span style="color:#339966;">"javax.management.timer.Timer"</span><span style="color:#339966;"> </span><span style="color:#339966;">name</span><span style="color:#339966;">=</span><span style="color:#339966;">"jboss:service=Timer"</span><span style="color:#339966;"> /&gt;
        &lt;/depends&gt;
    &lt;/mbean&gt;
&lt;/server&gt;</span></span></pre>
<p>Posto all&#8217;interno della directory deploy di uno dei nodi, il risultato sarà che il nostro scheduler andrà in esecuzione esclusivamente nel nodo dove l&#8217;abbiamo pubblicato. Ma in caso di failure di questo nodo avremo il problema che il nostro scheduler si ferma inesorabilmente.</p>
<p>Se invece lo poniamo all&#8217;interno della directory farm avremo che il nostro scheduler andrà distribuito in tutto il cluster, ma anche che sarà avviato su tutti i nodi. E questo, con ogni probabilità, è un effetto indesiderato.</p>
<p>Ponendolo infine nella directory deploy-hasingleton di ciascun nodo (è importante!) e analizzando le varie jmx-console, vedremo che il servizio sarà presente solo e soltanto su un nodo e nella fattispecie il primo avviato.</p>
<p>Questo metodo come abbiamo avuto modo di ricordare non consente deploy a caldo, salvo forzare manualmente il deploy tramite la jmx-console e il servizio MainDeployer. Un po&#8217; una scocciatura. Esiste però un altro metodo, basato sempre sullo stesso servizio, che consente di ottenere lo stesso risultato pratico facendo il canonico deploy della applicazione in farm. E&#8217; sufficiente aggiungere al deployment descriptor la seguente dipendenza:</p>
<pre><span style="color:#339966;">&lt;depends&gt;jboss.ha:service=HASingletonDeployer,type=Barrier&lt;/depends&gt;</span></pre>
<p>Una volta fatto questo, l&#8217;applicazione distribuita in farm ha un comportamento interessante: viene effettivamente distribuita sul cluster e su ciascun nodo viene effettuato il deploy, ma viene avviata solo sul nodo master. L&#8217;alta disponibilità è garantita dal fatto che nel momento in cui il nodo master andrà down l&#8217;applicazione verrà avviata sul neo-eletto master. Inutile dire che questo è il mio modo preferito di pubblicare applicazioni HA-Singleton.</p>
<p>Da notare che il deploy tramite Barrier ha effetto solo sullo start/stop del servizio, non sulla sua creazione o distruzione.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/unopuntozero.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/unopuntozero.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/unopuntozero.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/unopuntozero.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/unopuntozero.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/unopuntozero.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/unopuntozero.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/unopuntozero.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/unopuntozero.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/unopuntozero.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=unopuntozero.wordpress.com&blog=4206168&post=13&subd=unopuntozero&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://unopuntozero.wordpress.com/2009/05/22/servizi-ha-singleton-in-jboss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d10904326c3760d8bfd8db4c4753c64b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markoPO</media:title>
		</media:content>
	</item>
		<item>
		<title>JBoss, webservices e Spring</title>
		<link>http://unopuntozero.wordpress.com/2008/06/05/jboss-webservices-e-spring/</link>
		<comments>http://unopuntozero.wordpress.com/2008/06/05/jboss-webservices-e-spring/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 20:55:00 +0000</pubDate>
		<dc:creator>markoPO</dc:creator>
				<category><![CDATA[jboss]]></category>
		<category><![CDATA[jsr 181]]></category>
		<category><![CDATA[spring framework]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://unopuntozero.wordpress.com/2008/06/05/jboss-webservices-e-spring/</guid>
		<description><![CDATA[Problema: supponiamo di avere una applicazione (web o non web) basata su Spring e di voler pubblicare come web service su JBoss uno o più degli oggetti business gestiti da Spring.
La prima cosa che salta all&#8217;occhio è che qualora si utilizzino le comodissime annotazioni standard per fare il deploy del web service, il vostro oggetto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=unopuntozero.wordpress.com&blog=4206168&post=4&subd=unopuntozero&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Problema: supponiamo di avere una applicazione (web o non web) basata su Spring e di voler pubblicare come web service su JBoss uno o più degli oggetti business gestiti da Spring.<br />
La prima cosa che salta all&#8217;occhio è che qualora si utilizzino le comodissime <a href="http://jcp.org/en/jsr/detail?id=181">annotazioni standard</a> per fare il deploy del web service, il vostro oggetto manager non viene istanziato tramite l&#8217;<a href="http://static.springframework.org/spring/docs/2.5.x/reference/beans.html">IOC container di Spring</a>, quindi diventa sostanzialmente inutilizzabile.<br />
Una soluzione potrebbe essere convertire il progetto a Ejb3, chi può farlo lo faccia, ma chi non può? Per non parlare di chi non vuole&#8230;<br />
In questi casi il metodo conveniente è quello di derivare la vostra classe che esporrà il web service da una n-esima classe di supporto di Spring, la <a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/context/support/SpringBeanAutowiringSupport.html"><span style="font-family:courier new;">SpringBeanAutowiringSupport</span>.</a> Questa classe astratta abilita l&#8217;annotazione <span style="font-family:courier new;">@Autowire</span> su qualsiasi istanza di oggetto purchè creata all&#8217;interno di una Web Application Spring-based.  In questo modo potete &#8220;iniettare&#8221; oggetti configurati nel vostro IOC container di Spring nel vostro Web Service, esattamente come se fosse esso stesso un oggetto di Spring, continuando quindi ad utilizzare il paradigma del <a href="http://en.wikipedia.org/wiki/Inversion_of_Control">inversion of control</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/unopuntozero.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/unopuntozero.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/unopuntozero.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/unopuntozero.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/unopuntozero.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/unopuntozero.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/unopuntozero.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/unopuntozero.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/unopuntozero.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/unopuntozero.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/unopuntozero.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/unopuntozero.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=unopuntozero.wordpress.com&blog=4206168&post=4&subd=unopuntozero&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://unopuntozero.wordpress.com/2008/06/05/jboss-webservices-e-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d10904326c3760d8bfd8db4c4753c64b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">markoPO</media:title>
		</media:content>
	</item>
	</channel>
</rss>