Java:Usando Objetos Serializados em Java: Difference between revisions
(Criou página com: 'Ao serializar objetos em java, convertemos aquele "objeto/dado" em um conjunto de bytes que podem ser armazenados em um arquivo, para que posteriormente possamos utilizar os ...') |
No edit summary |
||
Line 30: | Line 30: | ||
== Distribuidor.java == | == Distribuidor.java == | ||
package net.ebasso; | |||
import java.io.FileOutputStream; | |||
import java.io.ObjectOutputStream; | |||
import java.util.ArrayList; | |||
public class Distribuidor { | |||
private static String outputCorreioDiretorio="/tmp/Correios"; | |||
private static int cartas = 100; | |||
public static void main(String[] args) { | |||
executaExemplo02(); | |||
} | |||
public static void executaExemplo02() { | |||
Distribuidor application = new Distribuidor(); | |||
try { | |||
String sufixo = ""; | |||
int j = 1; | |||
String carteiro = String.format("%03d", j); | |||
for (int i = 1; i < cartas; i++) { | |||
sufixo = String.format("%03d", i) ; | |||
ArrayList<String> destinatarios = new ArrayList<String>(); | |||
destinatarios.add("Ciclano da Silva " + sufixo); | |||
destinatarios.add("Beltrano de Oliveira " + sufixo); | |||
application.runOnce("A"+sufixo , carteiro,"Fulano de Tal " + sufixo, destinatarios, "Meus amigos .... Feliz Natal"); | |||
if ((i % 10) == 0) { | |||
j++; | |||
carteiro = String.format("%03d", j); | |||
} | |||
} | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
public static void executaExemplo01() { | |||
Distribuidor application = new Distribuidor(); | |||
try { | |||
ArrayList<String> destinatarios = new ArrayList<String>(); | |||
destinatarios.add("Ciclano da Silva"); | |||
destinatarios.add("Beltrano de Oliveira"); | |||
application.runOnce("A000","001","Fulano de Tal", destinatarios, "Meus amigos .... Feliz Natal"); | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
private void runOnce(String messageId, String cep, String remetente, ArrayList<String> destinatarios, String conteudo ) throws Exception { | |||
// Criando a carta e definindo os valores | |||
Carta carta = new Carta(); | |||
carta.setMessageId(messageId); | |||
carta.setCep(cep); | |||
carta.setRemetente(remetente); | |||
carta.setConteudo(conteudo); | |||
carta.setDestinatarios(destinatarios); | |||
// Armazenando o objeto serializado | |||
String ojbFilename = outputCorreioDiretorio + "/" + cep + "/" + messageId + ".obj"; | |||
FileOutputStream arquivoAGravar = new FileOutputStream(ojbFilename); | |||
ObjectOutputStream objetoAGravar = new ObjectOutputStream(arquivoAGravar); | |||
objetoAGravar.writeObject(carta); | |||
objetoAGravar.flush(); | |||
objetoAGravar.close(); | |||
arquivoAGravar.close(); | |||
} | |||
} | |||
== Carteiro.java == | == Carteiro.java == |
Revision as of 12:33, 30 December 2014
Ao serializar objetos em java, convertemos aquele "objeto/dado" em um conjunto de bytes que podem ser armazenados em um arquivo, para que posteriormente possamos utilizar os dados novamente como o objeto original.
Complexo!!! Mas vamos utilizar uma problema de negócio para explicar isso.
Problema: Um Agência dos correios precisamos entregar 100 cartas rapidamente, sendo que a mesma tem 10 carteiros para executar o serviço?
Para resolvermos esse problema de distribuição criamos 3 classes;
- Distribuidor = Pega todas as cartas, classifica e distribui entre os carteiros.
- Ao classificarmos as cartas criamos o objeto Carta e serializo o mesmo para ser utilizado pelo Carteiro, armazenando o objeto no respectivo diretório do carteiro. Exemplo
- /tmp/Correios/001
- /tmp/Correios/002
- ...
- /tmp/Correios/010
- Ao classificarmos as cartas criamos o objeto Carta e serializo o mesmo para ser utilizado pelo Carteiro, armazenando o objeto no respectivo diretório do carteiro. Exemplo
- Carteiro = Pega as respectivas cartas, no seu diretório e faz a entrega.
- O Carteiro pega o arquivo com o objeto e cria novamente o objeto Carta. Fazemos um print do Objeto.
No meu exemplo de negócio podemos
Classes
Observação:
Para simplificação do artigo, criamos os diretórios
Distribuidor.java
package net.ebasso; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; public class Distribuidor { private static String outputCorreioDiretorio="/tmp/Correios"; private static int cartas = 100; public static void main(String[] args) { executaExemplo02(); } public static void executaExemplo02() { Distribuidor application = new Distribuidor(); try { String sufixo = ""; int j = 1; String carteiro = String.format("%03d", j); for (int i = 1; i < cartas; i++) { sufixo = String.format("%03d", i) ; ArrayList<String> destinatarios = new ArrayList<String>(); destinatarios.add("Ciclano da Silva " + sufixo); destinatarios.add("Beltrano de Oliveira " + sufixo); application.runOnce("A"+sufixo , carteiro,"Fulano de Tal " + sufixo, destinatarios, "Meus amigos .... Feliz Natal"); if ((i % 10) == 0) { j++; carteiro = String.format("%03d", j); } } } catch (Exception e) { e.printStackTrace(); } } public static void executaExemplo01() { Distribuidor application = new Distribuidor(); try { ArrayList<String> destinatarios = new ArrayList<String>(); destinatarios.add("Ciclano da Silva"); destinatarios.add("Beltrano de Oliveira"); application.runOnce("A000","001","Fulano de Tal", destinatarios, "Meus amigos .... Feliz Natal"); } catch (Exception e) { e.printStackTrace(); } } private void runOnce(String messageId, String cep, String remetente, ArrayList<String> destinatarios, String conteudo ) throws Exception { // Criando a carta e definindo os valores Carta carta = new Carta(); carta.setMessageId(messageId); carta.setCep(cep); carta.setRemetente(remetente); carta.setConteudo(conteudo); carta.setDestinatarios(destinatarios); // Armazenando o objeto serializado String ojbFilename = outputCorreioDiretorio + "/" + cep + "/" + messageId + ".obj"; FileOutputStream arquivoAGravar = new FileOutputStream(ojbFilename); ObjectOutputStream objetoAGravar = new ObjectOutputStream(arquivoAGravar); objetoAGravar.writeObject(carta); objetoAGravar.flush(); objetoAGravar.close(); arquivoAGravar.close(); } }