<?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>Nothing2Hide &#187; Java</title>
	<atom:link href="http://www.n2h.it/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.n2h.it</link>
	<description>Notizie, trucchi, recensioni, curiosità e guide per non perdersi nel mondo di Internet e per sfruttare al meglio le potenzialità del proprio computer.</description>
	<lastBuildDate>Fri, 02 Sep 2011 16:39:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Creare portali professionali a costo zero con Liferay: utopia o realtà?</title>
		<link>http://www.n2h.it/java/creare-portali-professionali-a-costo-zero-con-liferay-utopia-o-realta/</link>
		<comments>http://www.n2h.it/java/creare-portali-professionali-a-costo-zero-con-liferay-utopia-o-realta/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 23:25:13 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Liferay]]></category>
		<guid isPermaLink="false">http://www.n2h.it/?p=2645</guid>
		<description><![CDATA[
Con più di 80.000 download al mese rappresenta uno dei prodotti open source più &#8220;caldi&#8221; del momento tanto che anche in Italia nel giro di pochissimo tempo ha catalizzato l&#8217;interesse di pubbliche amministrazioni, istituti di credito e aziende di tutte le dimensioni e l&#8217;interesse nei suoi confronti continua ad aumentare tanto che nessuna software house [...]<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-2646" title="liferay2" src="http://www.n2h.it/blog/wp-content/uploads/2009/07/liferay2.jpg" alt="liferay2" width="588" height="240" /><br />
Con più di <strong>80.000 download al mese</strong> rappresenta uno dei prodotti open source più &#8220;caldi&#8221; del momento tanto che anche in Italia nel giro di pochissimo tempo ha catalizzato l&#8217;interesse di pubbliche amministrazioni, istituti di credito e aziende di tutte le dimensioni e l&#8217;interesse nei suoi confronti continua ad aumentare tanto che nessuna software house che si occupi di sviluppo su web di alto livello può più permettersi di non conoscerlo.</p>
<p>Stiamo ovviamente parlando di <strong>Liferay</strong>, un <strong>portal server</strong> conforme allo <strong>standard portlet (JSR 168/268) </strong> distribuito in <a href="http://www.liferay.com/web/guest/downloads/portal" target="_blank"><strong>versione  open source</strong></a> con un <strong>bundle di oltre 60 portlet già pronte all&#8217;uso</strong> che possono essere sinteticamente rraggruppate nei seguenti insiemi:</p>
<ul>
<li><strong>Portlet per la gestione dei contenuti</strong>: servono per gestire a livello di editing e di publishing tutto il ciclo di vita dei contenuti web (e non) che il portale dovrà erogare</li>
<li><strong>Portlet di collaboration</strong>: sono disponibili in versione &#8220;portlet&#8221; tutti i principali strumenti e funzionalità di collaboration più conosciuti e diffusi: rating e commenti sui contenuti, forum, wiki, blog, client IM, Calendario condiviso, client webmail</li>
<li><strong>Portlet di integrazione</strong>: si tratta di portlet finalizzate ad integrare contenuti e/o siti web esterni (via Iframe o Proxy), mappe di Google, feed RSS</li>
<li>Portlet varie: sono per la maggior parte delle portlet &#8220;inutili&#8221; con finalità di demo. La più singolare è sicuramente la portlet &#8220;<em>Random Bible Verse</em>&#8221; <img src='http://www.n2h.it/blog/wp-includes/images/smilies/icon_smile.gif' alt="icon smile" class='wp-smiley' title="Creare portali professionali a costo zero con Liferay: utopia o realtà?" /> </li>
</ul>
<p><img class="alignnone size-full wp-image-2647" title="article" src="http://www.n2h.it/blog/wp-content/uploads/2009/07/article.jpg" alt="article" width="455" height="325" /><br />
A queste si aggiungono moltissime funzionalità trasversali come ad esempio  la <strong>status bar in stile Facebook</strong> per contattare gli amici attualmente collegati ed il <strong>pannello di controllo</strong> che consente ad ogni utente normale di gestire il suo profilo e all&#8217;amministratore di tener sotto controllo tutto quello che avviene nel portale, dalle singole azioni degli utenti alle risorse di memoria allocate.<span id="more-2645"></span></p>
<p>Una volta effettuata l&#8217;installazione,<strong> lo startup di un portale basato su Liferay rappresenta una procedura molto veloce</strong> che può essere effettuata interamente via web attraverso funzioni user-friendly quasi interamente basate sul solo utilizzo del mouse. L&#8217;assemblaggio di un portale viene effettuato secondo la seguente sequenza di operazioni:</p>
<ul>
<li><strong>Scelta del tema grafico:</strong> si tratta di un componente installabile proprio come qualunque altro plugin e che per questo motivo deve essere creato secondo precisi standard e convenzioni. Questo consente da un lato di poter effettuare delle sostituzioni a caldo dell&#8217;aspetto grafico e dall&#8217;altro ha favorito la nascita di un discreto repository di temi grafici gratuiti che vanno ad aggiungersi a quelli già inclusi nel bundle di installazione di Liferay</li>
<li><strong>Costruzione dell&#8217;alberatura del sito</strong>: le pagine possono essere create in maniera visuale con pochi click, quindi possono essere copiate, duplicate e spostate attraverso drag &amp; drop in maniera istantanea</li>
<li><strong>Assemblaggio delle portlet nelle pagine</strong>: per ogni pagina sono disponibili svariati layout (singola colonna, due colonne, tre colonne, ecc&#8230;) all&#8217;interno dei quali è possibile trascinare le diverse portlet con l&#8217;utilizzo del mouse</li>
<li><strong>Configurazione utenze e permessi</strong>: uno dei punti di forza maggiori di questo prodotto (usabilità a parte) consiste proprio nella possibilità di controllare i permessi in maniera molto granulare. Ad esempio è possibile definire quali gruppi di utenti possono vedere una certa pagina o addirittura una certa portlet all&#8217;interno di una certa pagina!</li>
<li><strong>Creazione community e sottositi</strong>: il motore di Liferay consente da un lato di gestire più virtual host separati all&#8217;interno di un&#8217;unica istanza, dando così la possibilità di gestire più portali indipendenti, dall&#8217;altro di fornire ai gruppi e ai singoli utenti la possibilità di gestire in piena autonomia una propria area personale che può essere pubblica o privata. In questo senso Liferay si presta molto bene alla gestione di community e social network: non a caso ne esiste anche una versione denominata Liferay Social Office (destinata all&#8217;ambito professionale)</li>
</ul>
<p>Ovviamente però <strong>non è tutto oro quel che luccica</strong>: per poter funzionare Liferay richiede un hosting Java dedicato e notevoli risorse hardware, motivo per cui si cofigura come un prodotto prevalentemente destinato ad un&#8217; utenza professionale. Dal punto di vista poi della qualità presenta sicuramente anche <strong>svariati difetti</strong>. In particolare:</p>
<ul>
<li><strong>Un sito sviluppato con Liferay rischia di essere particolarmente pesante anche per il browser</strong>: l&#8217;uso massiccio di Javascript per la costruzione di un&#8217;interfaccia user-friendly fa sentire tutto il suo peso. I tempi di latenza nel caricamento delle pagine spesso sono fin troppo percettibili. In questo senso però, soprattutto con le versioni più recenti, sono stati fatti notevoli passi in avanti, grazie all&#8217;introduzione di sistemi di compressione, caching ed ottimizzazione.</li>
<li><strong>La versione open source non è mai bug-free</strong>: il team di Liferay rilascia quasi mensilmente una nuova versione, spesso non retrocompatibile, con lo scopo (a mio avviso fin troppo palese) di sfruttare la community nell&#8217;identificazione e correzione dei bug. Le versioni stabili e consolidate convergono poi (purtroppo per noi) in Liferay Enterprise, la versione commerciale del portale. Chi decide di sviluppare su Liferay deve quindi <strong>preventivare anche un certo impegno nella risoluzione autonoma di problemi e bug</strong> di vario genere (personalmente, nei progetti che ho seguito, ne ho dovuti correggere almeno una decina)</li>
<li><strong>L&#8217;infrastruttura applicativa di Liferay è fortemente monolitica</strong>: le modifiche o estensioni finalizzate a correggere bug o a modificare/adattare il funzionamento delle portlet in bundle (capita molto spesso, motivo per cui lo svilupaptore ha a disposizione il cosiddetto &#8220;Extension Environment&#8221;), hanno sempre una portata trasversale su tutti i layer applicativi e nella maggioranza dei casi non sono mai portabili da una versione di Liferay a quella successiva. I problemi poi emergono maggiormente nel momento in cui si renda necessario intervenire sulla logica di presentazione (front end) layer implementato con soluzioni spesso spartane e poco modulari.</li>
</ul>
<p>Liferay è distribuito in bundle con tutti i più diffusi application server e servlet engine in circolazione (open source e commerciali): si va da Jetty,Resin,Tomcat a Apache Geronimo, Sun GlassFish 2 UR1, JBoss, JOnAS, OracleAS, SUN JSAS, WebLogic, WebSphere. Anche a livello di database è compatibile praticamente con tutti i prodotti in circolazione: Apache Derby, IBM DB2, Firebird,Hypersonic, InterBase, JDataStore, MySQL, Oracle, PostgresSQL, SAP MaxDB, SQL Server, Sybase.</p>
<p>Di seguito un video che può servirvi per farvi un&#8217;idea sull&#8217;<strong>usabilità di Liferay</strong> e sulla velocità con cui un utente (esperto) possa configurare un portale complesso e pronto per il <strong>go-live</strong>:<br />
<object width="425" height="344" data="http://www.youtube.com/v/WqjxI3kFPH0&amp;hl=it&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/WqjxI3kFPH0&amp;hl=it&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>In conclusione, ritengo che nonostante i concorrenti commerciali lo definiscano come &#8220;fumo negli occhi&#8221;, <strong>Liferay si configura sicuramente come un buon prodotto in grado di apportare notevoli vantaggi in svariate situazioni</strong>, soprattutto se lo si adotta &#8220;<strong>as is</strong>&#8221; accettandone quindi il funzionamento di default soprattutto in relazione alle portlet che fornisce già pronte in bundle. Nel momento in cui si inizia ad apportarvi estensioni e modifiche tutti i vantaggi acquisiti rischiano di scemare molto velocemente e di farvi convergere verso derive che possono diventare molto insidiose.</p>
<p>Visita il <a href="http://www.liferay.com"><strong>sito ufficiale di Liferay</strong></a></p>
<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.n2h.it/java/creare-portali-professionali-a-costo-zero-con-liferay-utopia-o-realta/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Cosa c&#8217;e&#8217; di nuovo in Spring 2.0 ?</title>
		<link>http://www.n2h.it/varie/cosa-ce-di-nuovo-in-spring-20/</link>
		<comments>http://www.n2h.it/varie/cosa-ce-di-nuovo-in-spring-20/#comments</comments>
		<pubDate>Thu, 22 Feb 2007 13:53:07 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[rod_johnson]]></category>
		<category><![CDATA[spring]]></category>
		<guid isPermaLink="false">http://www.n2h.it/blog/2007/02/22/cosa-ce-di-nuovo-in-spring-20/</guid>
		<description><![CDATA[Ce lo spiega in maniera semplice direttamente Rod Johnson con una presentazione preparata da lui stesso in occasione di alcuni meeting avuti con l&#8217; &#8221;Australian Spring User Group&#8221; nel dicembre scorso.
Consiglio: Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC
Scarica gratis Google Images Downloader 2.0: [versione per Windows] [versione [...]<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></description>
			<content:encoded><![CDATA[<p>Ce lo spiega in maniera semplice direttamente Rod Johnson con una <a href="http://blog.interface21.com/main/wp-content/uploads/2006/12/whats%20new%20and%20cool%20in%20spring%2020.pdf" target="_blank">presentazione</a> preparata da lui stesso in occasione di alcuni meeting avuti con l&#8217; &#8221;<strong>Australian Spring User Group</strong>&#8221; nel dicembre scorso.</p>
<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.n2h.it/varie/cosa-ce-di-nuovo-in-spring-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rilasciato Maven 2.0.5: era ora !</title>
		<link>http://www.n2h.it/java/rilasciato-maven-205-era-ora/</link>
		<comments>http://www.n2h.it/java/rilasciato-maven-205-era-ora/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 13:06:12 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[maven]]></category>
		<guid isPermaLink="false">http://www.n2h.it/blog/2007/02/19/rilasciato-maven-205-era-ora-2/</guid>
		<description><![CDATA[Dopo circa 10 mesi di silenzio, finalmente è stata rilasciata la versione 2.0.5 di Maven. Confesso che avevo iniziato a nutrire forti dubbi e anche qualche sospetto relativamente all&#8217;andamento del progetto&#8230;Anche perché la 2.0.4 di problemini ne aveva non pochi&#8230;
Nei prossimi giorni cercherò di analizzarla a fondo per vedere effettivamente quanti problemi sono stati corretti, [...]<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></description>
			<content:encoded><![CDATA[<p>Dopo circa 10 mesi di silenzio, finalmente è stata rilasciata la <a href="http://maven.apache.org/">versione 2.0.5 di Maven</a>. Confesso che avevo iniziato a nutrire forti dubbi e anche qualche sospetto relativamente all&#8217;andamento del progetto&#8230;Anche perché la 2.0.4 di problemini ne aveva non pochi&#8230;<br />
Nei prossimi giorni cercherò di analizzarla a fondo per vedere effettivamente quanti problemi sono stati corretti, anche se dando un&#8217;occhiata alle <a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10500&amp;styleName=Html&amp;version=12294">release notes</a> non mi sembra di vedere un gran che&#8230;</p>
<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.n2h.it/java/rilasciato-maven-205-era-ora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un MBean per modificare a caldo il livello di log di Log4j</title>
		<link>http://www.n2h.it/java/un-mbean-per-modificare-a-caldo-il-livello-di-log-di-log4j/</link>
		<comments>http://www.n2h.it/java/un-mbean-per-modificare-a-caldo-il-livello-di-log-di-log4j/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 16:54:22 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[mbean]]></category>
		<guid isPermaLink="false">http://www.n2h.it/blog/2007/02/16/un-mbean-per-modificare-a-caldo-il-livello-di-log-di-log4j/</guid>
		<description><![CDATA[La modifica a caldo (ovvero senza riavvio dell&#8217; Application Server) rappresenta una delle esigenze solitamente più frequenti nell&#8217;ambito dello sviluppo di applicazioni enterprise in Java.
Nel tempo ho potuto vedere e provare differenti soluzioni (più o meno eleganti) che però il più delle volte erano piuttosto laboriose ed articolate, e che di fatto consistevamo sempre in [...]<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></description>
			<content:encoded><![CDATA[<p>La modifica a caldo (ovvero senza riavvio dell&#8217; Application Server) rappresenta una delle esigenze solitamente più frequenti nell&#8217;ambito dello sviluppo di applicazioni enterprise in Java.<br />
Nel tempo ho potuto vedere e provare differenti soluzioni (più o meno eleganti) che però il più delle volte erano piuttosto laboriose ed articolate, e che di fatto consistevamo sempre in dei sistemi di polling sui files di configurazione o delle servlet da invocare manualmente per il ricaricamento del file log4j.properties o log4j.xml modificati.<br />
Oggi invece con l&#8217;ausilio di Spring ed in particolare della classe &#8220;org.springframework.jmx.export.MBeanExporter&#8221;, diventa veramente semplicissimo creare un MBean in grado di esporre tutti i metodi necessari a manipolare a caldo un &#8220;Logger&#8221;.<br />
<span id="more-147"></span><br />
Passiamo subito al dettaglio dell&#8217;implementazione; quello che ci serve per partire è una semplice classe in grado di esporre i metodi per manipolare i loggers:</p>
<pre><code>
package net.nothing2hide.jmx;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
public class Log4jConfigurator {
  /**
   * Set the log level to INFO for the target logger
   * @param target The name of the logger to change
   */
  public void enableInfo(String target) {
    LogManager.getLogger(target).setLevel(Level.INFO);
  }
  /**
   * Set the log level to WARN for the target logger
   * @param target The name of the logger to change
   */
  public void enableWarn(String target) {
    LogManager.getLogger(target).setLevel(Level.WARN);
  }
  /**
   * Set the log level to ERROR for the target logger
   * @param target The name of the logger to change
   */
  public void enableError(String target) {
    LogManager.getLogger(target).setLevel(Level.ERROR);
  }
  /**
   * Set the log level to DEBUG for the target logger
   * @param target The name of the logger to change
   */
  public void enableDebug(String target) {
    LogManager.getLogger(target).setLevel(Level.DEBUG);
  }
  /**
   * Set the log level to INFO for the ROOT logger
   */
  public void enableInfoGlobally() {
    LogManager.getRootLogger().setLevel(Level.INFO);
  }
  /**
   * Set the log level to WARN for the ROOT logger
   */
  public void enableWarnGlobally() {
    LogManager.getRootLogger().setLevel(Level.WARN);
  }
  /**
   * Set the log level to ERROR for the ROOT logger
   */
  public void enableErrorGlobally() {
    LogManager.getRootLogger().setLevel(Level.ERROR);
  }
  /**
   * Set the log level to DEBUG for the ROOT logger
   */
  public void enableDebugGlobally() {
    LogManager.getRootLogger().setLevel(Level.DEBUG);
  }
  /**
   * @return The list of all the available loggers
   */
  public String listAvailableLoggers(){
    Enumeration en = LogManager.getLoggerRepository()
      .getCurrentLoggers();
    StringBuffer res = new StringBuffer();
    while(en.hasMoreElements()){
      Logger logger = (Logger)en.nextElement();
      res.append(logger.getName()).append("n");
    }
    return res.toString();
  }
}
</code></pre>
<p>Lo step successivo consiste nell&#8217; esportazione della classe &#8220;Log4jConfigurator&#8221; come MBean attraverso Spring:</p>
<pre><code>
<bean id="myMBeansExporter"
    class="org.springframework.jmx.export.MBeanExporter"
    lazy-init="false">
<property name="beans">
<map>
      <entry key="n2h:name=log4jConfigurator"
        value-ref="log4jConfigurator"/>
    </map>
</property>
<property name="registrationBehaviorName"
    value="REGISTRATION_REPLACE_EXISTING" />
</bean>
<bean id="log4jConfigurator"
  class="net.nothing2hide.jmx.Log4jConfigurator" /></code></pre>
<p>A questo punto, una volta deployata la nostra applicazione, avremo a disposizione l&#8217;MBean &#8220;n2h:log4jConfigurator&#8221; che attraverso una qualsiasi console JMX ci metterà a disposizione tutti i metodi della classe &#8220;Log4jConfigurator&#8221;.</p>
<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.n2h.it/java/un-mbean-per-modificare-a-caldo-il-livello-di-log-di-log4j/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invocare dall&#8217;esterno un metodo protetto o privato di una classe java: sicuri che sia impossibile ?</title>
		<link>http://www.n2h.it/java/invocare-dallesterno-un-metodo-protetto-o-privato-di-una-classe-java-sicuri-che-sia-impossibile/</link>
		<comments>http://www.n2h.it/java/invocare-dallesterno-un-metodo-protetto-o-privato-di-una-classe-java-sicuri-che-sia-impossibile/#comments</comments>
		<pubDate>Wed, 07 Feb 2007 12:15:05 +0000</pubDate>
		<dc:creator>davide</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[security_manager]]></category>
		<guid isPermaLink="false">http://www.n2h.it/blog/2007/02/07/invocare-dallesterno-un-metodo-protetto-o-privato-di-una-classe-java-sicuri-che-sia-impossibile/</guid>
		<description><![CDATA[La risposta più corretta è: &#8220;dipende dalla presenza o meno di un security manager&#8221;.
Infatti attraverso la reflection è effettivamente possibile andare a forzare i vincoli del linguaggio Java senza eccessiva difficoltà, ammenochè appunto non sia presente un security manager, unico attore in grado realmente di gestire ed eventualmente bloccare tali tipologie di forzature.
Ma veniamo subito [...]<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></description>
			<content:encoded><![CDATA[<p>La risposta più corretta è: &#8220;dipende dalla presenza o meno di un security manager&#8221;.</p>
<p>Infatti attraverso la reflection è effettivamente possibile andare a forzare i vincoli del linguaggio Java senza eccessiva difficoltà, ammenochè appunto non sia presente un security manager, unico attore in grado realmente di gestire ed eventualmente bloccare tali tipologie di forzature.</p>
<p>Ma veniamo subito all&#8217;esempio pratico che vale più di molte disquisizioni. Data la seguente classe:</p>
<pre><code>
package net.nothing2hide.test;
public class ClassWithMethodsToHack {
  private void sayHello(String name){
      System.out.println("Hello " + name +
          "! You're calling a private method");
  }
}
</code></pre>
<p>vogliamo dimostrare come sia facilmente invocabile dall&#8217;esterno il metodo privato &#8220;<code>sayHello</code>&#8220;; come già vi ho anticipato per farlo utilizzeremo pesantemente la reflection:</p>
<pre><code>
package net.nothing2hide.test;
public class PrivateMethodInvocationTest {
  /**
  * This sample class demonstrates how to
  * invoke a protected method on another class
  *
  * @param args
  */
  public static void main(String[] args) {
    String myName = "Davide";
    Method m;
    try {
      //Let'access the private method
      //by reflection. You could do the same
      //with a protected method
      m = ClassWithMethodsToHack.class.getDeclaredMethod(
      "sayHello", new Class[]{String.class});
      if (m != null) {
        //Let's force the java language access
        //checks on the reflected method. Note
        //that if a security manager is defined
        //this workaround could not be permitted
        //and a SecurityException could be raised
        m.setAccessible(true);
        //And finally let's invoke the protected method
        m.invoke(new ClassWithMethodsToHack(),
        new Object[]{myName});
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
</code></pre>
<p><br/>
<div style="border-top: 1px solid rgb(187, 187, 187); border-bottom: 1px solid rgb(187, 187, 187); margin: 10px 0pt; padding: 10px; background: rgb(236, 239, 245) none repeat scroll 0% 0%;font-family:Arial"><strong>Consiglio:</strong> <a style="text-decoration:underline;" href="http://www.liutilities.com/affcb/?id=RBgen&#038;aff=6088&#038;xat=fdd" target="_blank">Clicca qui per avviare una scansione degli errori del sistema ed ottimizzare le prestazioni del PC</a></div>
<div style=" padding:5px;font-size:10px;font-family:Arial">Scarica gratis Google Images Downloader 2.0: [<a href="http://www.n2h.it/gid.php?ver=win">versione per Windows</a>] [<a href="http://www.n2h.it/gid.php?ver=mul">versione multipiattaforma</a>]</div>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.n2h.it/java/invocare-dallesterno-un-metodo-protetto-o-privato-di-una-classe-java-sicuri-che-sia-impossibile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

