<?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>Il sito di Luca &#187; java</title>
	<atom:link href="http://www.ilsitodiluca.it/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ilsitodiluca.it</link>
	<description>Di quel Luca... no, non quello, quell&#039;altro... ecco, quello!</description>
	<lastBuildDate>Sat, 04 Feb 2012 14:42:19 +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>Mule ESB service startup script</title>
		<link>http://www.ilsitodiluca.it/2011/11/24/mule-esb-service-startup-script/</link>
		<comments>http://www.ilsitodiluca.it/2011/11/24/mule-esb-service-startup-script/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 21:04:53 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mule]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=1661</guid>
		<description><![CDATA[Mule ESB è un enterprise service bus scritto in java comparso sulla scena da qualche anno e che ha saputo ritagliarsi uno spazio importante fra le piattaforme di integrazione. Mi è stato chiesto di configurarlo per essere avviato come servizio in un ambiente di produzione linux, così ho preparato uno script di avvio in modalità [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Mule ESB" href="http://www.mulesoft.org/" target="_blank"><strong>Mule ESB</strong></a> è un <strong>enterprise service bus</strong> scritto in <strong>java</strong> comparso sulla scena da qualche anno e che ha saputo ritagliarsi uno spazio importante fra le piattaforme di integrazione. Mi è stato chiesto di configurarlo per essere avviato come servizio in un ambiente di produzione linux, così ho preparato uno script di avvio in modalità demone.</p>
<p style="text-align: center;"><span id="more-1661"></span><a href="http://www.ilsitodiluca.it/wp-content/uploads/2011/11/mule_esb.gif" rel="lightbox[1661]"><img class="aligncenter size-full wp-image-1662" style="margin-left: 65px; margin-right: 65px;" title="mule esb" src="http://www.ilsitodiluca.it/wp-content/uploads/2011/11/mule_esb.gif" alt="" width="319" height="121" /></a></p>
<p>Lo script di startup utilizzato è stato testato in un sistema operativo <strong>Linux Centos 5.x</strong> per la versione <strong>Mule ESB 3.2 standalone</strong>. Potete eseguire il <strong>download</strong> dello script al link seguente: <a class="downloadlink" href="http://www.ilsitodiluca.it/wp-content/plugins/download-monitor/download.php?id=3" title=" downloaded 15 times" >Mule ESB service startup script (15)</a></p>
<p>Ci sono alcune configurazioni da modificare nello script che dipendono dalle installazioni di Mule e della JDK necessaria per il suo avvio. Nel mio caso, infatti, l&#8217;installazione di java non è da repository ma direttamente dal pacchetto fornito da Oracle. Quindi:</p>
<ul>
<li>JAVA_HOME=/path/to/java/home &#8211; modificate questo valore in base al path di installazione della JVM; se invece questa variabile si trova già fra le variabili d&#8217;ambiente del server, potete commentare la riga;</li>
<li>MULE_HOME=/path/to/mule/home &#8211; modificate questo valore in base al path di installazione di Mule ESB standalone;</li>
<li>MULE_OWNER=mule &#8211; modificate questo valore con il nome dell&#8217;utente con cui volete avviare il processo; è sempre buona norma evitare di dare permessi eccessivi al servizio.</li>
</ul>
<p>A questo punto per eseguire lo start di Mule ESB come servizio si deve eseguire il comando</p>
<p><em>/etc/init.d/mule_service.sh start</em></p>
<p>mentre per fermarlo</p>
<p><em>/etc/init.d/mule_service.sh stop</em></p>
<p>Sono previsti inoltre altri due comandi:</p>
<p><em>/etc/init.d/mule_service.sh restart</em></p>
<p>per riavviare il servizio e</p>
<p><em>/etc/init.d/mule_service.sh status</em></p>
<p>per verificare lo stato del servizio, confrontando il valore del file pid generato all&#8217;avvio con i processi attivi sul server.</p>
<p>Per impostare l&#8217;<strong>avvio di Mule ESB come demone</strong>, lo script deve essere copiato nel path /etc/init.d, assegnando come utente e gruppo proprietari root</p>
<p><em>chown root:root mule_service.sh</em></p>
<p>e come permessi 755</p>
<p><em>chmod 775 mule_service</em></p>
<p>Poi si deve configurare lo script per l&#8217;avvio come servizio, ad esempio utilizzando il comando chkconfig:</p>
<p><em>chkconfig  &#8211;add mule_service.sh</em></p>
<p><em>chkconfig  &#8211;level 345 mule_service.sh on</em></p>
<p>A questo punto siamo sicuri che il servizio partirà con un eventuale riavvio del server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2011/11/24/mule-esb-service-startup-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come monitorare Apache Tomcat 7 su un server remoto protetto da firewall</title>
		<link>http://www.ilsitodiluca.it/2011/10/24/come-monitorare-apache-tomcat-7-su-un-server-remoto-protetto-da-firewall/</link>
		<comments>http://www.ilsitodiluca.it/2011/10/24/come-monitorare-apache-tomcat-7-su-un-server-remoto-protetto-da-firewall/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 09:04:03 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=1463</guid>
		<description><![CDATA[In un mio vecchio articolo ho descritto la procedura che consentiva di monitorare un Tomcat 6 su un server remoto protetto da firewall. Con la versione 7 del application server sono state apportare numerose novità, tra cui alcune relative proprio al monitoraggio. Come visto nel precedente articolo, nella versione 6 del Tomcat due delle tre [...]]]></description>
			<content:encoded><![CDATA[<p>In un mio vecchio articolo ho descritto la procedura che consentiva di <a title="Monitorare Tomcat su un server remoto protetto da firewall" href="http://www.ilsitodiluca.it/2010/08/03/come-monitorare-tomcat-su-un-server-remoto-protetto-da-firewall/" target="_blank">monitorare un Tomcat 6 su un server remoto protetto da firewall</a>. Con la versione 7 del application server sono state apportare numerose novità, tra cui alcune relative proprio al monitoraggio.</p>
<p><span id="more-1463"></span><a href="http://www.ilsitodiluca.it/wp-content/uploads/2011/10/apache-tomcat-7.png" rel="lightbox[1463]"><img class="aligncenter size-full wp-image-1464" title="Apache Tomcat" src="http://www.ilsitodiluca.it/wp-content/uploads/2011/10/apache-tomcat-7.png" alt="" width="208" height="207" /></a></p>
<p>Come visto nel <a href="http://www.ilsitodiluca.it/2010/08/03/come-monitorare-tomcat-su-un-server-remoto-protetto-da-firewall/" target="_blank">precedente articolo</a>, nella versione 6 del Tomcat due delle tre porte necessarie per il monitoraggio remoto tramite strumenti come <a title="JVisualVM" href="http://visualvm.java.net/index.html" target="_blank"><strong>JVisualVM</strong></a> vengono esposte randomicamente ad ogni avvio del servizio, rendendo di fatto necessaria una loro ricerca tra i socket in ascolto sul server remoto. Con Tomcat 7 è stata introdotta la possibilità di impostare tutte e tre le porte a cui collegarsi, consentendo quindi anche di richiedere eventuali aperture mirate sul firewall.</p>
<p>La procedura per attivare la possibilità di monitoraggio remoto tramite JMX prevede innanzitutto la copia del JMX Remote Jar nella directory lib dell&#8217;installazione di Tomcat. Trovate questo file nella stessa pagina del download del servizio. Successivamente, non resta che effettuare due semplici configurazioni:</p>
<ul>
<li>aggiungere alla variabile d&#8217;ambiente CATALINA_OPTS nello script di startup del servizio le direttive per attivare la porta jmx, che sono (ipotizzando di bypassare l&#8217;autenticazione):<br />
<address>CATALINA_OPTS=”-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false<br />
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=HOSTNAME”;</address>
<p>in cui la porta 12345 è la prima delle tre che verrà utilizzata a questo scopo;</li>
<li>aggiungere la configurazione del Listener JMX nel file server.xml che si trova nella directory conf/ del path di installazione di Tomcat 7:<br />
<address>&lt;!&#8211; REMOTE JMX &#8211;&gt;</address>
<address>&lt;Listener className=&#8221;org.apache.catalina.mbeans.JmxRemoteLifecycleListener&#8221; rmiRegistryPortPlatform=&#8221;10001&#8243; rmiServerPortPlatform=&#8221;10002&#8243; /&gt;</address>
<p id=":9e">impostando di fatto i valori delle altre due porte a cui ci si dovrà collegare (10001 e 10002 nel nostro caso).</p>
</li>
</ul>
<p>Non resta che riavviare il servizio e collegarsi tramite uno strumento come <a title="JVisualVM" href="http://visualvm.java.net/index.html" target="_blank"><strong>JVisualVM</strong> </a>alla porta 12345 del server remoto. Nel caso in cui l&#8217;accesso alle tre porte fosse bloccato dal firewall, sarà necessario eseguire un tunnel ssh con cui renderle disponibili localmente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2011/10/24/come-monitorare-apache-tomcat-7-su-un-server-remoto-protetto-da-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse MAT: uno strumento di analisi dei memory leaks di applicativi Java</title>
		<link>http://www.ilsitodiluca.it/2010/11/28/eclipse-mat-uno-strumento-di-analisi-dei-memory-leaks-di-applicativi-java/</link>
		<comments>http://www.ilsitodiluca.it/2010/11/28/eclipse-mat-uno-strumento-di-analisi-dei-memory-leaks-di-applicativi-java/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 18:56:39 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=863</guid>
		<description><![CDATA[Eclipse MAT (Eclipse Memory Analyzer) è una versione di Eclipse pensata per consentire un&#8217;analisi approfondita dello stato di utilizzo della memoria di un applicativo Java ed individuarne eventuali memory leak. Vediamone più in dettaglio le peculiarità. Ottenere un heap dump della memoria Per iniziare l&#8217;analisi della memoria è necessario ottenere un heap dump dell&#8217;applicativo Java. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclipse.org/mat/" target="_blank"><strong>Eclipse MAT (Eclipse Memory Analyzer)</strong></a> è una versione di <strong>Eclipse</strong> pensata per consentire un&#8217;analisi approfondita dello stato di utilizzo della memoria di un applicativo Java ed individuarne eventuali <strong>memory leak</strong>. Vediamone più in dettaglio le peculiarità.</p>
<p><span id="more-863"></span><a href="http://www.eclipse.org/mat/downloads.php" target="_blank"><strong> </strong></a></p>
<h2>Ottenere un heap dump della memoria</h2>
<p>Per iniziare l&#8217;analisi della memoria è necessario ottenere un heap dump dell&#8217;applicativo Java. <strong>Eclipse MAT</strong> consente di ottenerne uno dai processi attualmente eseguiti sul pc, che vengono presentati con un comodo elenco. Nel caso in cui l&#8217;applicativo risieda su un&#8217;altra macchina, sarà necessario procurarsi il dump della memoria in un altro modo (usando ad esempio i binari <strong>Jmap</strong> o <strong><a href="http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/" target="_blank">Jconsole</a></strong> disponibili nel pacchetto di una JVM).</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_acquire_heap_dump.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-864" title="Eclipse MAT - Acquire heap dump" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_acquire_heap_dump.jpg" alt="" width="400" /></a></p>
<h2>Overview dello consumo di memoria</h2>
<p>Un primo grafico a torta ci presenta lo stato complessivo della memoria del processo. Si ha subito un&#8217;indicazione visiva degli oggetti che occupano più spazio.</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_overview.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-872" title="Eclipse MAT - Overview" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_overview.jpg" alt="" width="400" /></a></p>
<p>Con il grafico di tipo &#8220;Dominator Tree&#8221;, invece, si ottiene una lista ordinata di tutti gli oggetti con relativo package, con l&#8217;indicazione dettagliata della percentuale di memoria heap occupata.</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_dominator_tree.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-873" title="Eclipse MAT - Dominator tree" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_dominator_tree.jpg" alt="" width="400"  /></a></p>
<div style="clear:both;"></div>
<h2>Class reference</h2>
<p>Con lo strumento Inspector si ottiene il dettaglio della &#8220;Class Reference&#8221;, in cui vengono elencate tutte le classi con il tipo, il numero e la dimensione degli oggetti utilizzati al loro interno, oltre ad una serie di altri dati.</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_class_reference.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-866" title="Eclipse Mat: class reference" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_class_reference.jpg" alt="" width="400" /></a></p>
<div style="clear:both;"></div>
<h2>Leak suspects</h2>
<p>Con i grafici relativi ai sospetti leak entriamo nella caratteristica a mio avviso più interessante di <strong>Eclipse MAT</strong>. C&#8217;è infatti l&#8217;indicazione precisa delle potenziali cause di un out of memory, descritte sia come grafico a torta sia con una breve descrizione lista degli oggetti relativi.</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_leak_suspects.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-867" title="Eclipse MAT - Leak suspects" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_leak_suspects.jpg" alt="" width="400" /></a><br />
<a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_leak_suspects_problems.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-868" title="Eclipse MAT - Leak suspects problems" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_leak_suspects_problems.jpg" alt="" width="400" /></a></p>
<div style="clear:both;"></div>
<h2>Top consumers</h2>
<p>Infine, i Top Consumers sono gli oggetti che occupano la dimensione maggiore nella memoria heap.</p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_top_consumers.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-869" title="Eclipse MAT - Top consumers" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_top_consumers.jpg" alt="" width="400" /></a></p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_top_consumers_biggest_objects.jpg" rel="lightbox[863]"><img class="alignleft size-medium wp-image-870" title="Eclipse MAT - Top consumers biggest objects" src="http://www.ilsitodiluca.it/wp-content/uploads/2010/11/mat_top_consumers_biggest_objects.jpg" alt="" width="400" /></a></p>
<div style="clear:both;"></div>
<p><a href="http://www.eclipse.org/mat/downloads.php" target="_blank"><strong>Scarica Eclipse MAT dal sito ufficiale</strong></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2010/11/28/eclipse-mat-uno-strumento-di-analisi-dei-memory-leaks-di-applicativi-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come monitorare Tomcat su un server remoto protetto da firewall</title>
		<link>http://www.ilsitodiluca.it/2010/08/03/come-monitorare-tomcat-su-un-server-remoto-protetto-da-firewall/</link>
		<comments>http://www.ilsitodiluca.it/2010/08/03/come-monitorare-tomcat-su-un-server-remoto-protetto-da-firewall/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 14:03:16 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=621</guid>
		<description><![CDATA[Dopo aver visto come monitorare un applicativo java generico, vediamo quale approccio si può avere nel caso di un servizio come Apache Tomcat che risieda su un server remoto protetto da firewall. I requisiti per poter monitorare Tomcat su un server remoto protetto da firewall sono tre: avere accesso tramite ssh al server configurare la [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver visto <a href="http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/" target="_blank">come monitorare un applicativo java</a> generico, vediamo quale approccio si può avere nel caso di un servizio come <a href="http://tomcat.apache.org/" target="_blank">Apache Tomcat</a> che risieda su un server remoto protetto da firewall.</p>
<p><span id="more-621"></span></p>
<p>I requisiti per poter monitorare Tomcat su un server remoto protetto da firewall sono tre:</p>
<ul>
<li>avere accesso tramite ssh al server</li>
<li>configurare la porta jmx sul servizio</li>
<li>disporre di uno <a href="http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/" target="_blank">strumento di monitoraggio</a>, come ad esempio <a href="http://www.ilsitodiluca.it/2010/08/01/jvisualvm-uno-strumento-di-monitoraggio-di-applicativi-java/" target="_blank">Jvisualvm</a></li>
</ul>
<p>Innanzitutto dobbiamo abilitare la porta jmx di Apache Tomcat. Per<br />
farlo, è sufficiente aggiungere la riga seguente allo script di startup<br />
del servizio:</p>
<address><!--StartFragment--> <span style="color: rgb(0, 0, 255);">CATALINA_OPTS=”-Dcom.sun.management.jmxremote<br />
 -Dcom.sun.management.jmxremote.port=12345<br />
-Dcom.sun.management.jmxremote.ssl=false<br />
-Dcom.sun.management.jmxremote.authenticate=false<br />
-Djava.rmi.server.hostname=HOSTNAME”;</span></address>
<address><span style="color: rgb(0, 0, 255);"><br />
</span></address>
<address> </address>
<p><span style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 0);"><br />
Queste configurazioni servono per abilitare la porta jmx (specificata in<br />
jmxremote.port) senza autenticazione e senza accesso ssl (da impostare<br />
in questo modo solo nel caso in cui la porta jmx sia bloccata da<br />
firewall, altrimenti tutti potrebbero averne accesso), con un host<br />
uguale a HOSTNAME (verificate che tale hostname sia specificato nel file<br />
 di host del server). A questo punto riavviate il servizio per applicare<br />
 le nuove configurazioni. Ora dobbiamo fare in modo di accedere alla<br />
porta jmx con il nostro client di monitoraggio Jvisualvm. Non solo.<br />
Tomcat infatti abilita alcune porte in maniera randomica allo startup<br />
che servono al client di monitoraggio.</span> <span style="color: rgb(0, 0, 0);">Dobbiamo quindi capire quali sono le porte a cui ci serve accedere. Per far questo ci viene in aiuto il comando <em>netstat</em> (nel mio caso eseguito su un server linux):</span></span></p>
<p><!-- p, li { white-space: pre-wrap; } --><!--StartFragment--> server:/# netstat -lntp | grep java</p>
<p>tcp6       0      0 :::44739                :::*                    LISTEN      11762/java</p>
<p>tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11762/java</p>
<p>tcp6       0      0 :::12345                 :::*                    LISTEN      11762/java</p>
<p>tcp6       0      0 :::8009                 :::*                    LISTEN      11762/java</p>
<p>tcp6       0      0 :::8080                 :::*                    LISTEN      11762/java</p>
<p>tcp6       0      0 :::48790                :::*                    LISTEN      11762/java</p>
<p>Con il comando <em>netstat -lntp</em> possiamo visualizzare tutte le<br />
porte TCP su cui sono in ascolto i servizi della macchina. Con l’opzione<br />
 -p visualizziamo qual’è l’applicativo che sta usando tale porta. Quindi<br />
 ci basta aggiungere un <em>grep java</em> per capire quali sono le<br />
porte utilizzate da una JVM. Nel mio caso non c’erano altri applicativi<br />
java sul server. Escludendo dalla lista le porte classiche utilizzate da<br />
 Tomcat (8080, 8009, 8005), rimangono la 12345 (porta jmx impostata da<br />
configurazioni) e le 48790 e 44739. Quindi sono queste tre le porte a<br />
cui serve accedere. Come possiamo raggiungerle se il firewall le blocca?<br />
 Disponendo di un accesso ssh, possiamo utilizzare la possibilità<br />
fornita dal <strong>tunnel verso un server remoto</strong>, con il quale<br />
 poter accedere in locale a porte non accessibili direttamente. Se il<br />
client risiede su un pc Windows potete utilizzare le impostazioni<br />
presenti su Putty, per un Linux ci sono le opzioni del comando ssh. Una<br />
volta configurato il tunnel per portare in locale le tre porte,<br />
aggiungiamo sul file di host del nostro pc il valore impostato in<br />
HOSTNAME sulle configurazioni del tomcat, con IP di riferimento locale<br />
(127.0.0.1). Fatto questo, abbiamo Jvisualvm, e sulla colonna <em>Applications</em> facciamo doppio click su <em>Remote</em>. Si aprirà la finestra di inserimento dei dati di accesso al <em>Remote Host</em>. In <em>Host Name</em> inserite il nome dato a HOSTNAME più la porta jmx impostata sulle<br />
configurazioni di Tomcat separati da : (HOSTNAME:12345). Salvete, e dopo<br />
 poco sulla colonna delle <em>Applications</em> vedrete apparire la voce del nuovo host remoto inserito. Apritelo e monitorate!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2010/08/03/come-monitorare-tomcat-su-un-server-remoto-protetto-da-firewall/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Jvisualvm: uno strumento di monitoraggio degli applicativi java</title>
		<link>http://www.ilsitodiluca.it/2010/08/01/jvisualvm-uno-strumento-di-monitoraggio-degli-applicativi-java/</link>
		<comments>http://www.ilsitodiluca.it/2010/08/01/jvisualvm-uno-strumento-di-monitoraggio-degli-applicativi-java/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 13:38:55 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[monitoring]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=603</guid>
		<description><![CDATA[Fra i vari strumenti di monitoraggio di un applicativo Java ho recentemente provato Jvisualvm, un tool visuale utile sia per gli sviluppatori che per i sistemisti. Vediamone le caratteristiche. Per utilizzare Jvisualvm avete due possibilità: scaricare ed installare una jdk ( trovate l’eseguibile jvisualvm nella directory bin/ dell’installazione) oppure scaricare l’applicativo in modalità standalone dal [...]]]></description>
			<content:encoded><![CDATA[<p>Fra i vari <a href="http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/" target="_blank">strumenti di monitoraggio di un applicativo Java</a> ho recentemente provato <strong>Jvisualvm</strong>, un tool visuale utile sia per gli sviluppatori che per i sistemisti. Vediamone le caratteristiche.</p>
<p><span id="more-603"></span></p>
<p>Per utilizzare Jvisualvm avete due possibilità: scaricare ed installare una <a href="http://java.sun.com/javase/downloads/widget/jdk6.jsp" target="_blank">jdk</a><br />
 ( trovate l’eseguibile jvisualvm nella directory bin/<br />
dell’installazione) oppure scaricare l’applicativo in modalità<br />
standalone dal <a href="https://visualvm.dev.java.net/" target="_blank">sito ufficiale</a>. L’interfaccia di Jvisualvm risulta essere sicuramente più interessante di quella di <a href="http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/" target="_blank">Jconsole</a>,<br />
 ma di certo non è questo il motivo per cui sceglierlo. Questo strumento<br />
 offre la possibilità di controllare sia aspetti inerenti il<br />
comportamento di un applicativo (con la possibilità di verificare ad<br />
esempio l’andamento del Heap Space o di scaricare i dump della memoria<br />
di un particolare thread per poi analizzarlo) che lo stato del processo<br />
(consumo istantaneo di memoria e di cpu, parametri di avvio del<br />
processo, …).</p>
<div id="attachment_789" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_applications.jpeg" rel="lightbox[788]"><img class="size-full wp-image-789" title="visualvm_applications" src="/wp-content/uploads/2010/08/visualvm_applications.jpg" alt="" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; elenco applicazioni</p>
</div>
<p style="text-align: center;">
<p>La schermata iniziale propone sulla sinistra una colonna con<br />
l’elenco dei processi attivi sulla macchina locale. Da questa lista<br />
potrete visualizzare anche processi remoti a cui collegarvi. Entrando<br />
nel dettaglio di un processo vi apparirà una schermata con quattro tab:</p>
<ul>
<li>overview</li>
<li>monitor</li>
<li>threads</li>
<li>profiler</li>
</ul>
<div id="attachment_790" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_application_overview.jpeg" rel="lightbox[788]"><img class="size-medium wp-image-790" title="visualvm_application_overview" src="/wp-content/uploads/2010/08/visualvm_application_overview-300x132.jpg" alt="" height="132" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; overview</p>
</div>
<p>In <span style="text-decoration: underline;">overview</span> potete<br />
visualizzare alcuni dettagli sistemistici relativi all’applicativo (nel<br />
mio caso si tratta del IDE Aptana Studio, basato su Eclipse):</p>
<ul>
<li>pid del processo</li>
<li>host di riferimento</li>
<li>gli argomenti associati all’eseguibile</li>
<li>la JVM utilizzata</li>
<li>gli argomenti della JVM</li>
</ul>
<div id="attachment_792" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_application_monitor.jpeg" rel="lightbox[788]"><img class="size-medium wp-image-792" title="visualvm_application_monitor" src="/wp-content/uploads/2010/08/visualvm_application_monitor-300x201.jpg" alt="" height="201" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; monitor</p>
</div>
<p>In <span style="text-decoration: underline;">monitor</span> sono<br />
presentati tramite grafici gli andamenti dell’utilizzo di CPU, del<br />
consumo di memoria (heap e permgen), del numero totale di classi<br />
caricate e di thread attivi.</p>
<div id="attachment_794" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_application_threads_timeline.jpeg" rel="lightbox[788]"><img class="size-medium wp-image-794" title="visualvm_application_threads_timeline" src="/wp-content/uploads/2010/08/visualvm_application_threads_timeline-300x199.jpg" alt="" height="199" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; thread timeline</p>
</div>
<div id="attachment_795" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_application_thread_detail.jpeg" rel="lightbox[788]"><img class="size-medium wp-image-795" title="visualvm_application_thread_detail" src="/wp-content/uploads/2010/08/visualvm_application_thread_detail-300x166.jpg" alt="" height="166" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; dettaglio di un thread</p>
</div>
<p>In <span style="text-decoration: underline;">threads</span> è<br />
possibile verificare il timeline dei thread, con lo stato (running,<br />
sleeping, wait) di ogni singolo processo figlio nel tempo, oppure il<br />
dettaglio di un singolo processo figlio, con la possibilità di scaricare<br />
 il dump della memoria in locale per poi analizzarlo separatamente.</p>
<div id="attachment_796" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/08/visualvm_application_profiler.jpeg" rel="lightbox[788]"><img class="size-medium wp-image-796" title="visualvm_application_profiler" src="/wp-content/uploads/2010/08/visualvm_application_profiler-300x200.jpg" alt="" height="200" width="300"></a>
<p class="wp-caption-text">Jvisualvm &#8211; profiler</p>
</div>
<p>Infine, c’è il <span style="text-decoration: underline;">profiler</span>,<br />
 con il quale è possibile analizzare in un intervallo di tempo<br />
l’esecuzione dell’applicativo con l’indicazione dei metodi invocati e<br />
del consumo specifico di CPU o di memoria.</p>
<p>Una interessante caratteristica di Jvisualvm è la possibilità di ampliarne le funzionalità tramite plugin, che trovate sul <a href="https://visualvm.dev.java.net/plugins.html" target="_blank">sito ufficiale</a> del prodotto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2010/08/01/jvisualvm-uno-strumento-di-monitoraggio-degli-applicativi-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come monitorare le performance di un applicativo java</title>
		<link>http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/</link>
		<comments>http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 13:44:53 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=608</guid>
		<description><![CDATA[Qualche giorno fa ho scritto un articolo sul monitoraggio di una webapp java con Javamelody. Ora vediamo quali strumenti gratuiti possono essere utilizzati per monitorare un applicativo java generico. Ho letto un paio di articoli molto interessanti su IBM Developerworks, che è una fonte davvero inesauribile di notizie ed esempi pratici per il settore IT. [...]]]></description>
			<content:encoded><![CDATA[<p>Qualche giorno fa ho scritto un articolo sul <a href="http://www.ilsitodiluca.it/2010/07/26/javamelody-un-utile-strumento-di-monitoraggio-delle-webapp-java/" target="_blank"><strong>monitoraggio di una webapp java con Javamelody</strong></a>. Ora vediamo quali strumenti gratuiti possono essere utilizzati per monitorare un applicativo java generico.</p>
<p><span id="more-608"></span></p>
<p style="text-align: left;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/java.jpg" rel="lightbox[769]"><img class="size-full wp-image-770  aligncenter" title="java" src="/wp-content/uploads/2010/07/java.jpg" alt="" height="300" width="300"></a>Ho<br />
 letto un paio di articoli molto interessanti su IBM Developerworks, che<br />
 è una fonte davvero inesauribile di notizie ed esempi pratici per il<br />
settore IT. Gli articoli si intitolano <strong>5 things you didn’t know about … Java performance monitoring</strong> (<a href="http://www.ibm.com/developerworks/java/library/j-5things7.html" target="_blank">parte 1</a> e <a href="http://www.ibm.com/developerworks/java/library/j-5things8.html" target="_blank">parte 2</a>).<br />
 Vengono descritti alcuni strumenti che possono risultare molto utili<br />
per verificare l’impatto sulle performance del hardware di un server<br />
causato da uno specifico applicativo java. Vediamo di seguito alcuni<br />
degli strumenti che sono descritti in questi articoli.</p>
<h2>JCONSOLE</h2>
<p style="text-align: center;"><img class="size-thumbnail wp-image-771  aligncenter" title="jconsole" src="/wp-content/uploads/2010/07/jconsole-150x150.jpg" alt="" height="150" width="150"></p>
<p style="text-align: center;">
<p><strong>Jconsole </strong>è un applicativo visuale il cui binario<br />
 è presente nella directory bin/ di una JVM. Consente di visualizzare<br />
graficamente l’andamento di un processo java (locale o remoto)<br />
relativamente a :</p>
<ul>
<li>utilizzo di memoria</li>
<li>percentuale di CPU</li>
<li>numero thread</li>
<li>numero classi caricate</li>
</ul>
<p>Fornisce inoltre informazioni su variabili d’ambiente e MBean.</p>
<h2>JVISUALVM</h2>
<div id="attachment_772" class="wp-caption aligncenter" style="width: 160px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/jvisualvm.jpeg" rel="lightbox[769]"><img class="size-thumbnail wp-image-772" title="jvisualvm" src="/wp-content/uploads/2010/07/jvisualvm-150x150.jpg" alt="" height="150" width="150"></a>
<p class="wp-caption-text">JVISUALVM</p>
</div>
<p><strong>Jvisualvm </strong>è un applicativo visuale il cui binario è<br />
presente nella direcotry bin/ di una JVM ma può anche essere scaricato<br />
in modalità standalone dal <a href="https://visualvm.dev.java.net/" target="_blank">sito ufficiale</a>.<br />
 Si nota subito la differenza grafica rispetto alla Jconsole, di cui<br />
ricalca gran parte delle funzionalità, aggiungendo anche la possibilità<br />
di profilare il processo. Consente inoltre di inglobare plugin di terze<br />
parti dal repository ufficiale, che aggiungono funzionalità tra le più<br />
disparate.</p>
<h2>JPS</h2>
<div id="attachment_773" class="wp-caption aligncenter" style="width: 160px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/jps.jpeg" rel="lightbox[769]"><img class="size-thumbnail wp-image-773" title="jps" src="/wp-content/uploads/2010/07/jps-150x150.jpg" alt="" height="150" width="150"></a>
<p class="wp-caption-text">JPS</p>
</div>
<p><strong>Jps </strong>è un applicativo eseguibile da riga di comando<br />
che consente di visualizzare tutti i processi java attivi su una<br />
macchina (locale o remota) comprensivo di<em> </em>lvmid (cioè un<br />
identificativo del processo relativo alla JVM) e di variabili di avvio.<br />
E’ un sistema veloce e cross-platform per risalire velocemente ai<br />
processi che necessitano di verifiche.</p>
<h2>JSTAT</h2>
<div id="attachment_774" class="wp-caption aligncenter" style="width: 160px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/jstat.jpeg" rel="lightbox[769]"><img class="size-thumbnail wp-image-774" title="jstat" src="/wp-content/uploads/2010/07/jstat-150x150.jpg" alt="" height="150" width="150"></a>
<p class="wp-caption-text">JSTAT</p>
</div>
<p style="text-align: left;"><strong>Jstat </strong>è un applicativo<br />
eseguibile da riga di comando&nbsp; che fornisce informazioni<br />
statistiche relativo a vari aspetti di un processo java:</p>
<ul>
<li>comportamento del class loader</li>
<li>comportamento della compilazione</li>
<li>andamento del processo garbage collector</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2010/07/29/come-monitorare-le-performance-di-un-applicativo-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javamelody: un utile strumento di monitoraggio delle webapp Java</title>
		<link>http://www.ilsitodiluca.it/2010/07/26/javamelody-un-utile-strumento-di-monitoraggio-delle-webapp-java/</link>
		<comments>http://www.ilsitodiluca.it/2010/07/26/javamelody-un-utile-strumento-di-monitoraggio-delle-webapp-java/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 13:36:16 +0000</pubDate>
		<dc:creator>Luca</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.ilsitodiluca.it/?p=598</guid>
		<description><![CDATA[Il monitoraggio di un applicativo java, inteso come controllo della memoria allocata, della percentuale di CPU utilizzata e via dicendo, viene effettuato con poca frequenza e tipicamente solo quando sorgono problemi. Javamelody è uno strumento semplice da usare e da inserire in una web application che consente con poco sforzo di ottenere risultati soddisfacenti. Vi [...]]]></description>
			<content:encoded><![CDATA[<p>Il <strong>monitoraggio di un applicativo java</strong>, inteso come<br />
 controllo della memoria allocata, della percentuale di CPU utilizzata e<br />
 via dicendo, viene effettuato con poca frequenza e tipicamente solo<br />
quando sorgono problemi. <a href="http://code.google.com/p/javamelody/" target="_blank">Javamelody</a><br />
 è uno strumento semplice da usare e da inserire in una web application<br />
che consente con poco sforzo di ottenere risultati soddisfacenti.</p>
<p><span id="more-598"></span></p>
<p><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody.jpg" rel="lightbox[740]"><img class="aligncenter size-full wp-image-741" title="javamelody" src="/wp-content/uploads/2010/07/javamelody.jpg" alt="" height="55" width="267"></a>Vi spiego di seguito la procedura per integrare Javamelody in una web application java. La prima cosa da fare è scaricare dal <a href="http://code.google.com/p/javamelody/downloads/list" target="_self">sito ufficiale</a><br />
 l’ultima versione disponibile del pacchetto. Fra le varie versioni<br />
cercate quella compressa con zip. Apritelo e tenetevi da parte i file<br />
javamelody.jar e jrobin-x.jar. Aggiungete i 2 jar alla directory lib<br />
della vostra webapp. Poi modificate il vostro web.xml inserendo le<br />
seguenti righe:</p>
<pre><span style="color: rgb(0, 0, 255);">&lt;filter&gt;
  &lt;filter-name&gt;monitoring&lt;/filter-name&gt;
  &lt;filter-class&gt;net.bull.javamelody.MonitoringFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
 &nbsp; &lt;filter-name&gt;monitoring&lt;/filter-name&gt;
 &nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&lt;listener&gt;
 &nbsp; &lt;listener-class&gt;net.bull.javamelody.SessionListener&lt;/listener-class&gt;
&lt;/listener&gt;
</span></pre>
<p>A questo punto rideploiate la vostra webapp ed accedete con un<br />
browser alla pagina relativa alle statistiche di monitoraggio,<br />
accessibile tramite l’indirizzo che ha questo schema generale:</p>
<p>http://&lt;server_host&gt;:&lt;server_port&gt;/&lt;context&gt;/monitoring</p>
<p>Ad esempio, nel mio caso ho provato il monitoring su una webapp chiamata ( in modo molto originale <img src="/wp-content/uploads/2010/07/icon_smile.gif" alt=":-)" class="wp-smiley"><br />
  ) test_javamelody, deploiata su un tomcat in locale sulla classica<br />
porta 8080. Quindi l’indirizzo web per il monitoraggio nel mio caso è<br />
http://localhost:8080/test_javamelody/monitoring. La pagina che si<br />
ottiene come risultato fornisce informazioni specifiche della web<br />
application o generiche del sistema su cui il servizio è attivo, grazie<br />
alle quali si può valutare l’andamento istantaneo e nel tempo di vari<br />
parametri critici. Vi riporto di seguito una lista delle informazioni<br />
fornite e le stesse relative alla web application di test:</p>
<ul>
<li>grafici dell’utilizzo di memoria e CPU, numero di sessioni HTTP<br />
attive, thread attivi, connessioni JDBC attive ed utilizzate, numero di<br />
richieste http (con indicazione di quelle andate in errore), il numero<br />
di query SQL eseguite (con indicazione di quelle andate in errore),<br />
tempo di utilizzo del gargabe collector, numero di file aperti</li>
<li>i valori istantanei dell’utilizzo di memoria;</li>
<li>le statistiche relative alle richieste HTTP, SQL, agli errori HTTP e di sistema;</li>
<li>informazioni sul sistema operativo, sulla Java Virtual Machine in uso, sul server utilizzato.</li>
</ul>
<p>Nel complesso <strong>Javamelody</strong> si è rivelato uno strumento molto utile e semplice da utilizzare, anche per effettuare verifiche in ambienti di produzione.</p>
<div id="attachment_744" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody_charts.jpg" rel="lightbox[740]"><img class="size-medium wp-image-744" title="javamelody_charts" src="/wp-content/uploads/2010/07/javamelody_charts-300x203.jpg" alt="" height="203" width="300"></a>
<p class="wp-caption-text">Grafici generali</p>
</div>
<div id="attachment_745" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody_charts_2.jpg" rel="lightbox[740]"><img class="size-medium wp-image-745" title="javamelody_charts_2" src="/wp-content/uploads/2010/07/javamelody_charts_2-300x148.jpg" alt="" height="148" width="300"></a>
<p class="wp-caption-text">Grafici avanzati</p>
</div>
<div id="attachment_746" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody_memory.jpg" rel="lightbox[740]"><img class="size-medium wp-image-746" title="javamelody_memory" src="/wp-content/uploads/2010/07/javamelody_memory-300x131.jpg" alt="" height="131" width="300"></a>
<p class="wp-caption-text">Consumo di memoria</p>
</div>
<div id="attachment_747" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody_statistics.jpg" rel="lightbox[740]"><img class="size-medium wp-image-747" title="javamelody_statistics" src="/wp-content/uploads/2010/07/javamelody_statistics-300x83.jpg" alt="" height="83" width="300"></a>
<p class="wp-caption-text">Statistiche</p>
</div>
<div id="attachment_748" class="wp-caption aligncenter" style="width: 310px;"><a href="http://www.ilsitodiluca.it/wp-content/uploads/2010/07/javamelody_sysinfo.jpg" rel="lightbox[740]"><img class="size-medium wp-image-748" title="javamelody_sysinfo" src="/wp-content/uploads/2010/07/javamelody_sysinfo-300x156.jpg" alt="" height="156" width="300"></a>
<p class="wp-caption-text">Informazioni sul sistema</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ilsitodiluca.it/2010/07/26/javamelody-un-utile-strumento-di-monitoraggio-delle-webapp-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

