Exemplo: Cache de um objeto de comando
Os comandos que podem ser armazenados em cache são armazenados em cache para reutilização em um mecanismo semelhante para servlets e arquivos JSP (JavaServer Pages).
Este exemplo de armazenamento em cache de comando é um comando simples de cotação de ações.
A seguir é mostrado um bean de comando de cotação de ações. Ela aceita um ticker como um parâmetro de entrada e produz um preço como seu parâmetro de saída.
public class QuoteCommand extends CacheableCommandImpl
{
private String ticker;
private double price;
// chamado para validar que os parâmetros de entrada do comando foram definidos
public boolean isReadyToCallExecute() {
return (ticker!=null);
}
// chamado por uma acerto de cache para copiar propriedades de saída para este objeto
public void setOutputProperties(TargetableCommand fromCommand) {
QuoteCommand f = (QuoteCommand)fromCommand;
this.price = f.price;
}
// método de lógica de negócio chamado quando o preço da ação precisa ser retornado
public void performExecute()throws Exception {...}
//parâmetros de entrada para o comando
public void setTicker(String ticker) { this.ticker=ticker;}
public String getTicker() { return ticker;}
//parâmetros de saída para o comando
public double getPrice() { return price;};
}
Para armazenar em cache o objeto do comando anterior usando o registro de cotações de ações de fluxo como o cache chave e usando um tempo de vida de 60 segundos, use a política de cache a seguir:
<cache>
<cache-entry>
<class>command</class>
<sharing-policy>not-shared</sharing-policy>
<name>QuoteCommand</name>
<cache-id>
<component type="method" id="getTicker">
<required>true</required>
</component>
<priority>3</priority>
<timeout>60</timeout>
</cache-id>
</cache-entry>
</cache>