Pessoal, eu tenho a seguinte situação, tenho varios " clientes " que enviam dados para um “proxy” esse proxy envia os dados para os “servidores” que processam os dados e enviam o resultado, o problema eh que eu preciso armazenar um cache com os dados e o resultado, enviados pelos clientes para que se eles enviarem os msm dados eu retorne o resultado sem utilizar os servidores. Não estou querendo a resposta soh preciso de um direcionamento para pesquisar…desde ja , grato…
Esse proxy é um programa que vc tem acesso?
Se for… monte um mapa onde a chave é a requisicao… e a resposta seja o valor…
Assim vc compara a requisicao atual com as que já foram feitas… e devolve a página em cache… ou pede ao servidor
Use para isso um Map. Por exemplo, o programa abaixo usa um cache para evitar que o mesmo fibonacci seja calculado duas vezes:
[code]public class Fibonacci {
private Map<Integer, Long> cache = new HashMap<Integer, Long>();
public long fib(int i) {
if (i == 0)
return 0;
if (i == 1)
return 1;
//Verifica se o valor já está em cache
Long num = cache.get(i);
if (num != null) //Se estiver, retorna o do cache
return num;
//Se não estiver, faz o calculo
long f = fib(i-1) + fib(i-2);
//Armazena no cache.
cache.put(f);
//Retorna o valor calculado
return f;
}
} [/code]
Esse cache não expira. Se o seu precisar expirar, você pode ao invés de armazenar o valor diretamente, armazenar um objeto que contenha o valor e o timestamp de quando ele foi colocado lá (com System.currentTimeMillis). Aí, basta verificar se o valor que já está no cache excede um determinado intervalo de tempo estipulado e forçar que ele seja recalculado, caso isso ocorra.
Valeu galera… agora eu ja tenho uma base para resolver o problema