vlw Mario,

minha preocupacao e justamente esssa... a performace do banco... vou
aperfeiçoar essa ideia. De qualquer forma vlw... vou dar uma olha no TIDE...

abrass...

Em 10 de maio de 2010 13:10, Mário Júnior <[email protected]> escreveu:

> Sim... desde que a consulta nao seja tao grande (ter muitos filhos
> associados ao registro pai) tudo bem.
>
> Senao, vc pode matar seu server... para essas situações é bem propício q
> apareça o classico "out of memory: pergem space".
>
>
> Bom.. dá uma olhada no TIDE do GraniteDS, derepente seja uma boa solucao
> pra vc. Ou, manipular os VOs para q traga so qndo vc realmente precisar
> desses dados.
>
>
> []s
>
>
>
>
> Em 10 de maio de 2010 09:18, Marcelo Caser <[email protected]>escreveu:
>
> opa!!
>>
>> grande Mário!
>>
>> Finalmente uma luz... qual seria sua sugestão!?! rsrsrs...
>>
>> Apriore o que fiz foi fazer o usar a anotacao @ManyToOne sem
>> FetchType.LAZY, assim ele me traz os objetos filhos...
>>
>> Em 10 de maio de 2010 00:21, Mário Júnior <[email protected]>escreveu:
>>
>>  Vc esta tentando fazer isso para fugir do famoso (e difamado) problema de
>>> lazy-load na serializacao das consultas?
>>> Se sim, creio q nao vá funcionar, pq no momento da serializacao, o
>>> JavaAdapter "padrao" do blaze não vai conseguir ler o objeto pq a lista
>>> ainda "nao existe". Até existe uma referencia lá, mas repare q não sao os
>>> objetos (registros) relacionados ao registro pai... na verdade é apenas um
>>> para o interceptor do Hibernate poder ter referencia do objeto pai para
>>> anexar os filhos, depois de carrega-los do banco Vc vai perceber tb q uma
>>> série de atributos q vc não declarou estará sendo mostrado naquele objeto,
>>> pq o Hibernate usa o .
>>>
>>> Enfim, oq poderia tentar fazer (veja só, "tentar" significa q eu ainda
>>> nao fiz, mas teoricamente não vai funcionar também :P) seria estender o
>>> adapter e dar um Hibernate.initialize() na colecao que vc quer, mas isso num
>>> pontos específico onde vc teria q varrer todos os objetos passados pela
>>> decodificacao da classe Amf3Output.java para só dar initialize quando
>>> realmente precisar.
>>>
>>> Na pratica, é mais-ou-menos isso que o GraniteDS faz, mas de uma forma
>>> bem mais estruturada (não só estendendo o adapter, mas criando outras
>>> factories e um interceptor. Isso ficou melhor no framework que o Frank Wolf
>>> criou, chamando de TIDE).
>>>
>>> Concluindo, não é algo relativamente "simples".
>>>
>>> Boa sorte, []s
>>>
>>>
>>>
>>>
>>> Em 9 de maio de 2010 22:16, Marcelo Caser <[email protected]>escreveu:
>>>
>>>> nao, nao... estou trabalhando com hibernate+spring+blazeds+java... estou
>>>> mapeando as classes do java, os "TO", Externalizable.
>>>>
>>>> Para entender melhor o quadro segue abaixo o que estou fazendo: sao 3
>>>> classes java que estou usando no momento.
>>>>
>>>> *Classes Java:*
>>>>
>>>> package br.org.oabgo.saeo.entidade;
>>>>
>>>> import static javax.persistence.GenerationType.IDENTITY;
>>>>
>>>> import java.io.Externalizable;
>>>> import java.io.IOException;
>>>> import java.io.ObjectInput;
>>>> import java.io.ObjectOutput;
>>>> import java.io.Serializable;
>>>> import java.sql.Timestamp;
>>>> import java.util.HashSet;
>>>> import java.util.Set;
>>>>
>>>> import javax.persistence.CascadeType;
>>>> import javax.persistence.Column;
>>>> import javax.persistence.Entity;
>>>> import javax.persistence.FetchType;
>>>> import javax.persistence.GeneratedValue;
>>>> import javax.persistence.Id;
>>>> import javax.persistence.OneToMany;
>>>> import javax.persistence.Table;
>>>> import javax.persistence.Transient;
>>>>
>>>> import core.dao.TransferObject;
>>>>
>>>> @Entity
>>>> @Table(name = "tbDsCertameExameOrdem")
>>>> public class *CertameTO* extends TransferObject implements
>>>> Externalizable {
>>>>
>>>>     @Id
>>>>     @GeneratedValue(strategy = IDENTITY)
>>>>     @Column(name = "Id", unique = true, nullable = false, precision =
>>>> 18, scale = 0)
>>>>     private Long id;
>>>>
>>>>     @Column(name = "intNumeroLivro")
>>>>     private Integer intNumeroLivro;
>>>>
>>>>     @Column(name = "vchDescricao", nullable = false, length = 50)
>>>>     private String vchDescricao;
>>>>
>>>>     @Column(name = "datDataProvaObjetiva", length = 23)
>>>>     private Timestamp datDataProvaObjetiva;
>>>>
>>>>     @Column(name = "datDataProvaEscrita", length = 23)
>>>>     private Timestamp datDataProvaEscrita;
>>>>
>>>>     @Column(name = "datDataProvaOral", length = 23)
>>>>     private Timestamp datDataProvaOral;
>>>>
>>>>     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
>>>> mappedBy = "certameTO")
>>>>     private Set<CandidatoTO> candidatoTOs = new HashSet<CandidatoTO>(0);
>>>>
>>>>     public CertameTO() {
>>>>     }
>>>>
>>>>     // *** Gets and Sets ***
>>>>
>>>>     @Transient
>>>>     public Serializable getKey() {
>>>>         return getId();
>>>>     }
>>>>
>>>>     public void setId(Serializable id) {
>>>>         this.id = (Long) id;
>>>>     }
>>>>
>>>>     public Long getId() {
>>>>         return id;
>>>>     }
>>>>
>>>>     public Integer getIntNumeroLivro() {
>>>>         return intNumeroLivro;
>>>>     }
>>>>
>>>>     public void setIntNumeroLivro(Integer intNumeroLivro) {
>>>>         this.intNumeroLivro = intNumeroLivro;
>>>>     }
>>>>
>>>>     public String getVchDescricao() {
>>>>         return vchDescricao;
>>>>     }
>>>>
>>>>     public void setVchDescricao(String vchDescricao) {
>>>>         this.vchDescricao = vchDescricao;
>>>>     }
>>>>
>>>>     public Timestamp getDatDataProvaObjetiva() {
>>>>         return datDataProvaObjetiva;
>>>>     }
>>>>
>>>>     public void setDatDataProvaObjetiva(Timestamp datDataProvaObjetiva)
>>>> {
>>>>         this.datDataProvaObjetiva = datDataProvaObjetiva;
>>>>     }
>>>>
>>>>     public Timestamp getDatDataProvaEscrita() {
>>>>         return datDataProvaEscrita;
>>>>     }
>>>>
>>>>     public void setDatDataProvaEscrita(Timestamp datDataProvaEscrita) {
>>>>         this.datDataProvaEscrita = datDataProvaEscrita;
>>>>     }
>>>>
>>>>     public Timestamp getDatDataProvaOral() {
>>>>         return datDataProvaOral;
>>>>     }
>>>>
>>>>     public void setDatDataProvaOral(Timestamp datDataProvaOral) {
>>>>         this.datDataProvaOral = datDataProvaOral;
>>>>     }
>>>>
>>>>     public Set<CandidatoTO> getCandidatoTOs() {
>>>>         return candidatoTOs;
>>>>     }
>>>>
>>>>     public void setCandidatoTOs(Set<CandidatoTO> candidatoTOs) {
>>>>         this.candidatoTOs = candidatoTOs;
>>>>     }
>>>>
>>>>     public void setId(Long id) {
>>>>         this.id = id;
>>>>     }
>>>>
>>>>     @SuppressWarnings("unchecked")
>>>>     @Override
>>>>     public void readExternal(ObjectInput in) throws IOException,
>>>>             ClassNotFoundException {
>>>>         id = in.readLong();
>>>>         intNumeroLivro = (Integer) in.readObject();
>>>>         vchDescricao = (String) in.readObject();
>>>>         datDataProvaObjetiva = (Timestamp) in.readObject();
>>>>         datDataProvaEscrita = (Timestamp) in.readObject();
>>>>         datDataProvaOral = (Timestamp) in.readObject();
>>>>         candidatoTOs = (Set<CandidatoTO>) in.readObject();
>>>>     }
>>>>
>>>>     @Override
>>>>     public void writeExternal(ObjectOutput out) throws IOException {
>>>>         out.writeObject(id);
>>>>         out.writeObject(intNumeroLivro);
>>>>         out.writeObject(vchDescricao);
>>>>         out.writeObject(datDataProvaObjetiva);
>>>>         out.writeObject(datDataProvaEscrita);
>>>>         out.writeObject(datDataProvaOral);
>>>>         out.writeObject(candidatoTOs);
>>>>     }
>>>>
>>>> }
>>>>
>>>> package br.org.oabgo.saeo.entidade;
>>>>
>>>> import static javax.persistence.GenerationType.IDENTITY;
>>>>
>>>> import java.io.Externalizable;
>>>> import java.io.IOException;
>>>> import java.io.ObjectInput;
>>>> import java.io.ObjectOutput;
>>>> import java.io.Serializable;
>>>>
>>>> import javax.persistence.Column;
>>>> import javax.persistence.Entity;
>>>> import javax.persistence.FetchType;
>>>> import javax.persistence.GeneratedValue;
>>>> import javax.persistence.Id;
>>>> import javax.persistence.JoinColumn;
>>>> import javax.persistence.ManyToOne;
>>>> import javax.persistence.Table;
>>>> import javax.persistence.Transient;
>>>>
>>>> import core.dao.TransferObject;
>>>>
>>>> @Entity
>>>> @Table(name = "tbCdCandidatoAnteriorExameOrdem")
>>>> public class *CandidatoTO* extends TransferObject implements
>>>> Externalizable {
>>>>
>>>>     @Id
>>>>     @GeneratedValue(strategy = IDENTITY)
>>>>     @Column(name = "Id", unique = true, nullable = false, precision =
>>>> 18, scale = 0)
>>>>     private Long id;
>>>>
>>>>     @ManyToOne(fetch = FetchType.LAZY)
>>>>     @JoinColumn(name = "IdCertame")
>>>>     private CertameTO certameTO;
>>>>
>>>>     @ManyToOne(fetch = FetchType.LAZY)
>>>>     @JoinColumn(name = "IdAreaAtuacao")
>>>>     private AreaAtuacaoTO areaAtuacao;
>>>>
>>>>     @Column(name = "intNumeroSequencia", nullable = false)
>>>>     private Integer intNumeroSequencia;
>>>>
>>>>     @Column(name = "intPaginaLivro", nullable = false)
>>>>     private Integer intPaginaLivro;
>>>>
>>>>     @Column(name = "vchNomeCandidato", nullable = false, length = 60)
>>>>     private String vchNomeCandidato;
>>>>
>>>>     @Column(name = "bitSituacao", nullable = false)
>>>>     private Boolean bitSituacao;
>>>>
>>>>     @Column(name = "texObservacao")
>>>>     private String texObservacao;
>>>>
>>>>
>>>>     public CandidatoTO() {
>>>>     }
>>>>
>>>>     // *** Gets and Sets ***
>>>>
>>>>     @Transient
>>>>     public Serializable getKey() {
>>>>         return getId();
>>>>     }
>>>>
>>>>     public void setId(Serializable id) {
>>>>         this.id = (Long)id;
>>>>     }
>>>>
>>>>     public Long getId() {
>>>>         return id;
>>>>     }
>>>>
>>>>     public void setId(Long id) {
>>>>         this.id = id;
>>>>     }
>>>>
>>>>     public CertameTO getCertameTO() {
>>>>         return certameTO;
>>>>     }
>>>>
>>>>     public void setCertameTO(CertameTO certameTO) {
>>>>         this.certameTO = certameTO;
>>>>     }
>>>>
>>>>     public AreaAtuacaoTO getAreaAtuacao() {
>>>>         return areaAtuacao;
>>>>     }
>>>>
>>>>     public void setAreaAtuacao(AreaAtuacaoTO areaAtuacao) {
>>>>         this.areaAtuacao = areaAtuacao;
>>>>     }
>>>>
>>>>     public Integer getIntNumeroSequencia() {
>>>>         return intNumeroSequencia;
>>>>     }
>>>>
>>>>     public void setIntNumeroSequencia(Integer intNumeroSequencia) {
>>>>         this.intNumeroSequencia = intNumeroSequencia;
>>>>     }
>>>>
>>>>     public Integer getIntPaginaLivro() {
>>>>         return intPaginaLivro;
>>>>     }
>>>>
>>>>     public void setIntPaginaLivro(Integer intPaginaLivro) {
>>>>         this.intPaginaLivro = intPaginaLivro;
>>>>     }
>>>>
>>>>     public String getVchNomeCandidato() {
>>>>         return vchNomeCandidato;
>>>>     }
>>>>
>>>>     public void setVchNomeCandidato(String vchNomeCandidato) {
>>>>         this.vchNomeCandidato = vchNomeCandidato;
>>>>     }
>>>>
>>>>     public Boolean getBitSituacao() {
>>>>         return bitSituacao;
>>>>     }
>>>>
>>>>     public void setBitSituacao(Boolean bitSituacao) {
>>>>         this.bitSituacao = bitSituacao;
>>>>     }
>>>>
>>>>     public String getTexObservacao() {
>>>>         return texObservacao;
>>>>     }
>>>>
>>>>     public void setTexObservacao(String textObservacao) {
>>>>         this.texObservacao = textObservacao;
>>>>     }
>>>>
>>>>     @Override
>>>>     public void readExternal(ObjectInput in) throws IOException,
>>>>             ClassNotFoundException {
>>>>         id = in.readLong();
>>>>         certameTO = (CertameTO) in.readObject();
>>>>         areaAtuacao = (AreaAtuacaoTO) in.readObject();
>>>>         intNumeroSequencia = (Integer) in.readObject();
>>>>         intPaginaLivro = (Integer) in.readObject();
>>>>         vchNomeCandidato = (String) in.readObject();
>>>>         bitSituacao = in.readBoolean();
>>>>         texObservacao = (String) in.readObject();
>>>>     }
>>>>
>>>>     @Override
>>>>     public void writeExternal(ObjectOutput out) throws IOException {
>>>>         out.writeObject(id);
>>>>         out.writeObject(certameTO);
>>>>         out.writeObject(areaAtuacao);
>>>>         out.writeObject(intNumeroSequencia);
>>>>         out.writeObject(intPaginaLivro);
>>>>         out.writeObject(vchNomeCandidato);
>>>>         out.writeObject(bitSituacao);
>>>>         out.writeObject(texObservacao);
>>>>     }
>>>>
>>>> }
>>>>
>>>> package br.org.oabgo.saeo.entidade;
>>>>
>>>> import static javax.persistence.GenerationType.IDENTITY;
>>>>
>>>> import java.io.Externalizable;
>>>> import java.io.IOException;
>>>> import java.io.ObjectInput;
>>>> import java.io.ObjectOutput;
>>>> import java.io.Serializable;
>>>>
>>>> import javax.persistence.Column;
>>>> import javax.persistence.Entity;
>>>> import javax.persistence.GeneratedValue;
>>>> import javax.persistence.Id;
>>>> import javax.persistence.Table;
>>>> import javax.persistence.Transient;
>>>> import javax.persistence.UniqueConstraint;
>>>>
>>>> import core.dao.TransferObject;
>>>>
>>>> @Entity
>>>> @Table(name = "tbDsAreasAtuacoes", uniqueConstraints =
>>>> @UniqueConstraint(columnNames = "vchDescricao"))
>>>> public class *AreaAtuacaoTO* extends TransferObject implements
>>>> Externalizable {
>>>>
>>>>     @Id
>>>>     @GeneratedValue(strategy = IDENTITY)
>>>>     @Column(name = "Id", unique = true, nullable = false, precision =
>>>> 18, scale = 0)
>>>>     private Long id;
>>>>
>>>>     @Column(name = "intCodigo")
>>>>     private Integer intCodigo;
>>>>
>>>>     @Column(name = "vchDescricao", unique = true, nullable = false,
>>>> length = 50)
>>>>     private String vchDescricao;
>>>>
>>>>     public AreaAtuacaoTO() {
>>>>     }
>>>>
>>>>     // *** Gets and Sets ***
>>>>
>>>>     @Transient
>>>>     public Serializable getKey() {
>>>>         return getId();
>>>>     }
>>>>
>>>>     public void setId(Serializable id) {
>>>>         this.id = (Long) id;
>>>>     }
>>>>
>>>>     public Long getId() {
>>>>         return id;
>>>>     }
>>>>
>>>>     public void setId(Long id) {
>>>>         this.id = id;
>>>>     }
>>>>
>>>>     public Integer getIntCodigo() {
>>>>         return intCodigo;
>>>>     }
>>>>
>>>>     public void setIntCodigo(Integer intCodigo) {
>>>>         this.intCodigo = intCodigo;
>>>>     }
>>>>
>>>>     public String getVchDescricao() {
>>>>         return vchDescricao;
>>>>     }
>>>>
>>>>     public void setVchDescricao(String vchDescricao) {
>>>>         this.vchDescricao = vchDescricao;
>>>>     }
>>>>
>>>>     @Override
>>>>     public void readExternal(ObjectInput in) throws IOException,
>>>>             ClassNotFoundException {
>>>>         id = in.readLong();
>>>>         intCodigo = (Integer) in.readObject();
>>>>         vchDescricao = (String) in.readObject();
>>>>     }
>>>>
>>>>     @Override
>>>>     public void writeExternal(ObjectOutput out) throws IOException {
>>>>         out.writeObject(id);
>>>>         out.writeObject(intCodigo);
>>>>         out.writeObject(vchDescricao);
>>>>     }
>>>>
>>>> }
>>>>
>>>> e abaixo eu tenho minhas classes em AS3 mapeadas:
>>>>
>>>> package br.org.oabgo.saeo.entidade
>>>> {
>>>>     import flash.utils.IDataInput;
>>>>     import flash.utils.IDataOutput;
>>>>     import flash.utils.IExternalizable;
>>>>
>>>>     import mx.collections.ArrayCollection;
>>>>
>>>>
>>>>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.CertameTO")]
>>>>     [Bindable]
>>>>     public class* CertameTO* implements IExternalizable
>>>>     {
>>>>
>>>>         public var id:Number;
>>>>
>>>>         public var intNumeroLivro:int;
>>>>
>>>>         public var vchDescricao:String;
>>>>
>>>>         public var datDataProvaObjetiva:Date;
>>>>
>>>>         public var datDataProvaEscrita:Date;
>>>>
>>>>         public var datDataProvaOral:Date;
>>>>
>>>>         public var candidatoTOs:ArrayCollection;
>>>>
>>>>         public function CertameTO()
>>>>         {
>>>>         }
>>>>
>>>>         public function readExternal(input:IDataInput):void
>>>>         {
>>>>             id = input.readObject() as Number;
>>>>             intNumeroLivro = input.readObject() as int;
>>>>             vchDescricao = input.readObject() as String;
>>>>             datDataProvaObjetiva = input.readObject() as Date;
>>>>             datDataProvaEscrita = input.readObject() as Date;
>>>>             datDataProvaOral = input.readObject() as Date;
>>>>             candidatoTOs = input.readObject() as ArrayCollection;
>>>>         }
>>>>
>>>>         public function writeExternal(output:IDataOutput):void
>>>>         {
>>>>             output.writeObject(id);
>>>>             output.writeObject(intNumeroLivro);
>>>>             output.writeObject(vchDescricao);
>>>>             output.writeObject(datDataProvaObjetiva);
>>>>             output.writeObject(datDataProvaEscrita);
>>>>             output.writeObject(datDataProvaOral);
>>>>             output.writeObject(candidatoTOs);
>>>>         }
>>>>     }
>>>> }
>>>>
>>>> package br.org.oabgo.saeo.entidade
>>>> {
>>>>     import flash.utils.IDataInput;
>>>>     import flash.utils.IDataOutput;
>>>>     import flash.utils.IExternalizable;
>>>>
>>>>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.CandidatoTO")]
>>>>     [Bindable]
>>>>     public class *CandidatoTO* implements IExternalizable
>>>>     {
>>>>
>>>>         public var id:Number;
>>>>
>>>>         public var certameTO:CertameTO;
>>>>
>>>>         public var areaAtuacao:AreaAtuacaoTO;
>>>>
>>>>         public var intNumeroSequencia:int;
>>>>
>>>>         public var intPaginaLivro:int;
>>>>
>>>>         public var vchNomeCandidato:String;
>>>>
>>>>         public var bitSituacao:Boolean;
>>>>
>>>>         public var texObservacao:String;
>>>>
>>>>         public function CandidatoTO()
>>>>         {
>>>>         }
>>>>
>>>>         public function readExternal(input:IDataInput):void
>>>>         {
>>>>             id = input.readObject() as Number;
>>>>             certameTO = input.readObject() as CertameTO;
>>>>             areaAtuacao = input.readObject() as AreaAtuacaoTO;
>>>>             intNumeroSequencia = input.readObject() as int;
>>>>             intPaginaLivro = input.readObject() as int;
>>>>             vchNomeCandidato = input.readObject() as String
>>>>             bitSituacao = input.readBoolean();
>>>>             texObservacao = input.readObject() as String;
>>>>         }
>>>>
>>>>         public function writeExternal(output:IDataOutput):void
>>>>         {
>>>>             output.writeObject(id);
>>>>             output.writeObject(certameTO);
>>>>             output.writeObject(areaAtuacao);
>>>>             output.writeObject(intNumeroSequencia);
>>>>             output.writeObject(intPaginaLivro);
>>>>             output.writeObject(vchNomeCandidato);
>>>>             output.writeObject(bitSituacao);
>>>>             output.writeObject(texObservacao);
>>>>         }
>>>>     }
>>>> }
>>>>
>>>> package br.org.oabgo.saeo.entidade
>>>> {
>>>>     import flash.utils.IDataInput;
>>>>     import flash.utils.IDataOutput;
>>>>     import flash.utils.IExternalizable;
>>>>
>>>>     [RemoteClass(alias="br.org.oabgo.saeo.entidade.AreaAtuacaoTO")]
>>>>     [Bindable]
>>>>     public class* AreaAtuacaoTO* implements IExternalizable
>>>>     {
>>>>
>>>>         public var id:Number;
>>>>
>>>>         public var intCodigo:Number;
>>>>
>>>>         public var vchDescricao:String;
>>>>
>>>>         public function AreaAtuacaoTO()
>>>>         {
>>>>         }
>>>>
>>>>         public function readExternal(input:IDataInput):void
>>>>         {
>>>>             id = input.readObject() as Number;
>>>>             intCodigo = input.readObject() as int;
>>>>             vchDescricao = input.readObject() as String;
>>>>         }
>>>>
>>>>         public function writeExternal(output:IDataOutput):void
>>>>         {
>>>>             output.writeObject(id);
>>>>             output.writeObject(intCodigo);
>>>>             output.writeObject(vchDescricao);
>>>>         }
>>>>
>>>>     }
>>>> }
>>>>
>>>> O erro ocorre quando eu trago todos os "Certames" cadastrados, vindos de
>>>> um metodo List<CertamesTO>. Estou fazendo algo errado?
>>>>
>>>>  --
>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>>> Para sair da lista, envie um email em branco para
>>>> [email protected]
>>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>>>
>>>
>>>
>>>
>>> --
>>> Mario Junior
>>> http://blog.mariojunior.com/
>>> @mariojunior
>>>
>>>  --
>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>>> Para enviar uma mensagem, envie um e-mail para [email protected]
>>> Para sair da lista, envie um email em branco para
>>> [email protected]
>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>>
>>
>>  --
>> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
>> Para enviar uma mensagem, envie um e-mail para [email protected]
>> Para sair da lista, envie um email em branco para
>> [email protected]
>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>>
>
>
>
> --
> Mario Junior
> http://blog.mariojunior.com/
> @mariojunior
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a