Archivi tag: How-to

JBoss As 7.1 e SL4J e Log4J

Problemi a loggare dalla nostra applicazione web, utilizzando jboss as 7.1?
Dopo diversi tentativi di gestire le risorse, il file di property , classloader e quanto altro, l’unica soluzione che ho trovato è la seguente.
Jboss utilizza e configura in fase di startup log4j e quindi tutti i nostri messaggi sono intercettati e gestiti dalla sua configurazione. Per bloccare questo comportamento dobbiamo usare le jboss-deployment-structure, ovvero mettere delle direttive nel nostro ear o nel nostro war, tramite file di configurazione, per indicare di escludere i moduli di jboss inerenti il logging, sull’applicazione che stiamo deployando.
Questo sistema evita che jboss in automatico inietti le dipendenze e le responsabilità del logging dei suoi moduli di logging.
il seguente file va messo nella meta-inf dell’Ear o del War.
il seguente esempio è riferito al deploy di un ear, con un war al suo interno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
     </exclusions>
   </deployment>
   <sub-deployment name="miaappweb.war">
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
     </exclusions>
   </sub-deployment>
</jboss-deployment-structure>

Spero sia chiaro.

Aggiunta per Spring:
se si utilizza anche Spring Framework, allora nella lista delle esclusioni va aggiunta anche la librera delle Commons logging, in quanto spring utilizza l’astrazione di Apache per la gestione del logging interno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
       <module name="org.apache.commons.logging"/>
     </exclusions>
   </deployment>
   <sub-deployment name="miaappweb.war">
     <exclusions>
       <module name="org.apache.log4j" />
       <module name="org.slf4j"/>
       <module name="org.apache.commons.logging"/>
     </exclusions>
   </sub-deployment>
</jboss-deployment-structure>

Osx Lion e la cartella Library nel Finder

Installato Lion sul mio mac mi sono reso conto che la cartella Library dell’utente loggato non è più visibile all’interno del Finder..
Grave mancanza soprattutto per chi sviluppa e deve testare continuamente i files generati dalle apps.

Fortunatamente la soluzione è molto semplice, basta renderla nuovamente visibile con questo comando da terminale:

1
chflags nohidden /Users/ILVOSTRONOMEUTENTE/Library

ovviamente al posto di ILVOSTRONOMEUTENTE mettete il nome dell’utente con cui loggate. Non il nome esteso.

Leggere configurazione plist di default

Su mac è possibile leggere il file di default contenente la configurazione dell’applicativo in maniera molto semplice.
basta usare gli NSBundle

per poter accedere al bundle di default, il file info.plist generalmente contenuto delle Resources dell’applicativo:

1
NSBundle* mainBundle = [NSBundle mainBundle];

per poter accedere alle info contenute, basta usare il dictionary.

1
2
BOOL stats=[[[mainBundle infoDictionary] valueForKey:@"ShowStats"]boolValue];
NSString* version= [[mainBundle infoDictionary] valueForKey:@"Version"];

e’ possibile mettere nel bundle anche dictionary :

1
2
3
4
5
6
7
    NSDictionary* list = [[mainBundle infoDictionary ]valueForKey:@"Resolution"];
    if (list!=nil){
       
        NSNumber* width =[list valueForKey:@"Width"];
        NSNumber* height =[list valueForKey:@"Height"];
        return CGSizeMake([width doubleValue],[height doubleValue]);
    }