segunda-feira, 23 de novembro de 2009

Usando "reflection" para conexões com diferentes sistemas

Um simples exemplo prático do uso de reflection para comunicação com backends distintos, definidos em tempo de execução.

- Definindo uma interface comum, a ser seguida por todos os possíveis adaptadores a serem utilizados:


public interface Logger {
void log();
}


- Implementando a interface de logging de dois modos distintos:

public class DBLogger implements Logger {

public void log() {
// TODO Auto-generated method stub
System.out.println("Logging on the Database");
}

}

e, em seguida:

public class TextLogger implements Logger {

public void log() {
// TODO Auto-generated method stub
System.out.println("Logging on a text file");
}

}

- Executando a aplicação, definindo o mecanismo de logging a ser utilizado em tempo de execução:

public class Test {
public static void main(String [] args) {

Logger myLogger = null;

try {
Class myClass = Class.forName("DBLogger");
myLogger = (Logger) myClass.newInstance();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}

myLogger.log();

}
}


Obviamente o nome da classe a ser utilizada não será definida de modo estático, como apresentado acima, para fins de ilustração. Desse modo conseguimos utilizar o mecanismo desejado, podendo criar novas classes implementadoras sem a necessidade de alterar a classe principal (ou chamadora).

sexta-feira, 28 de agosto de 2009

Windows Vista + localhost

Localhost por padrão, não resolve no windows Vista para 127.0.0.1. Para corrigir faça:

1 - Clique em "Start"
2 - Digite: "notepad"
3 - Clique com o botão direito no aplicativo (notepad) e execute-o como Administrador
4 - Abra o arquivo: "C:\Windows\System32\drivers\etc\hosts" e Adicione a linha abaixo:

127.0.0.1 localhost

5 - Salve o arquivo e pronto.

6 - Instale o Linux em sua máquina.

Abraços,

Fernando Giorgetti