mercoledì 29 aprile 2015

BAT per stop Tomcat clean directory e restart servizio

Con questo script è possibile stoppare tomcat ripulire le directory e fare il restart.
E' meglio utilizzare il comando NET START o NET STOP piuttosto che sc in quanto sc è asincrono per cui si rischia vada in errore la cancellazione dei file.
Lo script è il seguente:


    @echo OFF

    set CATALINA_HOME=D:\lavoro\apache-tomcat-7.0.53
    net stop TomcatService
   
    
    

    echo removing work
    rmdir /S /Q "%CATALINA_HOME%\work"
    echo making new work dir
    mkdir "%CATALINA_HOME%\work"
 
    echo removing temp
    rmdir /S /Q "%CATALINA_HOME%\temp"
    echo making new temp dir
    mkdir "%CATALINA_HOME%\temp"
 
    echo removing logs
    rmdir /S /Q "%CATALINA_HOME%\logs"
    echo making new logs dir
    mkdir "%CATALINA_HOME%\logs"
 
    echo starting tomcat service
  
    net start TomcatService


venerdì 17 aprile 2015

Verificare le porte di WebSPhere

WAS  utilizza porte diverse a seconda dell'accesso da console oppure da http o https.
Per verificare quali sono si può aprire il file

AboutThisProfile.txt che si trova tipicamente in

C:\Program Files\IBM\WebSphere\AppServer\profiles\[PROFILO]\logs

Il file presenta queste informazioni:


Ambiente del server delle applicazioni da creare: Server delle applicazioni
Ubicazione: C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01
Spazio su disco richiesto: 200 Mb
Nome profilo: AppSrv01
Imposta questo profilo come valore predefinito: True
Nome nodo: xxxxxxxx
Nome host: xxxxxxxxxxxx
Abilita sicurezza di gestione (consigliato): True
Porta della console di gestione: 9060
Porta sicura della console di gestione: 9043
Porta di trasporto HTTP: 9080
Porta di trasporto HTTPS: 9443
Porta di avvio: 2809
Porta connettore SOAP: 8880
Esegui il server delle applicazioni come servizio: True
Crea una definizione server Web: False
Impostazioni di ottimizzazione delle prestazioni: Standard



mercoledì 15 aprile 2015

PrimeFaces autoscroll dopo update eventi ajax

Spesso in form molto lunghi, quando si scrolla per la compilazione, l'utilizzo di Ajax può essere fastidioso perchè ad ogni esecuzione del codice poi sul client ci si riposiziona in alto e si perde lo scroll.
In javascript questo problema si risolve utilizzando la seguente sintassi:


document.getElementById("idComponente").scrollIntoView();


Dalla versione 3.2 di Primefaces è stato introdotto il metodo  
  RequestContext.getCurrentInstance().scrollTo

Purtroppo però non mi funzionava (stavo utilizzando la versione 3.5).
Comunque un workaround funzionante è quello di utilizzare sempre l'oggetto org.primefaces.context.RequestContext, inserendo il javascript dentro in questo modo:

 RequestContext.getCurrentInstance().execute("document.getElementById( 'componentId' ).scrollIntoView();");


Si noti che l'id deve essere quello generato dal componente a video, per capirci quello che vediamo col viewsource della pagina.

domenica 12 aprile 2015

Java8 iterazione esterna

Esempio iterazione esterna con Java 8.
Supponiamo di avere una lista di oggetti di tipo Persona identificati da alcune proprietà (nome, cognome, età ) ed una proprietà isMaggiorenne che ci filtra le persone con età > 18 anni.
Per avere un conteggio di queste occorrenze prima di Java 8 si operava in questo modo:



int count=0;
  for(Persona p: l){
   if(p.isMaggiorenne()){
    count++;
   }
  }


Questa è la classica iterazione esterna.
Con Java 8 si introduce il concetto di iterazione interna , dove invece di procedere noi all'esecuzione del ciclo for si opera sugli stream inserendo i filtri esplicitamente.
Il caso di esempio precedente si risolve in Java 8 nel seguente modo:

long l= i.getListePersone().stream().filter(person -> person.isMaggiorenne()).count();


Oltre alla maggiore compattezza del codice il vero vantaggio è che l'utilizzo degli stream consente  al compilatore di eseguire lui al meglio le operazioni richieste, magari anche parallelizzando le operazioni se necessario.