Visualizzazione post con etichetta java curiosita. Mostra tutti i post
Visualizzazione post con etichetta java curiosita. Mostra tutti i post

martedì 7 agosto 2012

Java stampare IP e MAC Address

Importando il package java.net.*;  si può usare un metodo di questo tipo.
Il pattern  %02X dovrebbe significare "scrivi il carattere esadecimale con almeno 2 caratteri".



public static String getMACAddress() {

        InetAddress ip;
        StringBuilder sb = new StringBuilder();

        try {

            ip = InetAddress.getLocalHost();
            System.out.println("Indirizzo IP : " + ip.getHostAddress());

            NetworkInterface network = NetworkInterface.getByInetAddress(ip);

            byte[] mac = network.getHardwareAddress();

            System.out.print("MAC address : ");

            for (int i = 0; i < mac.length; i++) {

                sb.append(String.format("%02X%s", mac[i],
                        (i < mac.length - 1) ? "-" : ""));

            }

        } catch (UnknownHostException e) {

            e.printStackTrace();

        } catch (SocketException e) {

            e.printStackTrace();

        }

        return sb.toString();
    }

lunedì 28 maggio 2012

File .class con costanti

Mi è capitato di dover intervenire in fretta e furia su una applicazione deployata  e cercare di fixare un bug senza rilasciare tutto il war ma soltanto i .class necessari.
In particolare in quest'ultimo caso si trattava di modificare una  query che era stata inserita in modo statico su una interfaccia come Stringa.
Ho quindi inviato soltanto il .class con l'interfaccia ricompilata ma ovviamente non ha funzionato.
Questo perchè a compile time Java esplode i valori delle costanti direttamente dentro i .class creati, quindi tutte le classi che utilizzavano quella query continuavano tranquillamente a leggersi il vecchio valore, cablato in fase di compilazione al loro interno.
Beh ammetto di essere stato poco accorto, comunque questa è una riprova di quanto sia più pulito e corretto inserire i valori costanti mutabili spesso nel corso di  vita di una applicazione (le query) in file xml esterni piuttosto che dentro costanti scolpite nel codice.