Saquei... vc quer manter o escopo do objeto sempre "vivo", independente das requisicoes... ou entao ter o controle de quando manter esse objeto vivo (na sessao) e qnd destrui-lo, certo?
Bom, vc pode usar o FlexSession para guardar objetos na sessao, mas precisa ter cuidado para q esse escopo nao fique "para toda a aplicação" mas só para o FlexClient que solicitou. Pesquise na documentação (blazeds_dev_guide.pdf) por essas duas classes: FlexClient e FlexSession. Também, verifique q vc precisará colocar os seus servicos com scope de "session". Qnd usa o remoting-config.xml é fácil de configurar colocando: <destination id="blablaba'> <source>pacote.da.classe.Servico</source> <scope>session</scope> < ... /> </destination> Mas, como vi q vc está usando o Spring-BlazeDS Integration, precisa olhar na documentação do spring como muda esse contexto (nao sei pq nunca fiz, mas acho q deve ser na própria anotação). Abraços, t+ Em 13 de setembro de 2010 20:44, Leonardo Ribeiro <leojribe...@gmail.com>escreveu: > Beleza Mário, > > Mas me diz uma coisa, supondo a situação (novamente) da nota fiscal que tem > os seus itens (uma collections falando em java). > O objeto nota fiscal tem responsabilidade sobre os seus itens, é através > desse objeto que podemos adicionar e remover itens (na nota não tem o método > setItens(List itens)). > Sendo assim, eu teria um dto nota que contem dto's itens... > > O problema que vejo é que na view (flex) eu vou adicionar dto's notas e > itens (não haverá nenhuma regra aqui).... > quando for submetido para o server a nota com seus itens o serviço > receberá, irá fazer a conversão para as entidades de domínio e a regra será > aplicada, mas se o cara digitou uma nota com uns 15, 20, 50 itens ele só vai > ter um feedback do sistema no final, ou to errado? > > > Agora me diz o que acha da seguinte situação: > > public abstract class DomainEntity implements IDomainEntity { > > private Long id; > } > > public class Usuario extends DomainEntity { > > private String nome; > private String login; > private String senha; > private String email; > } > > @Service > @RemotingDestination > public class UsuarioUseCase implements IUsuarioUseCase { > > public Usuario usuario; > public void novo() { > this.usuario = new Usuario(); > } > public void setNome(String nome) { > this.usuario.setNome(nome); > } > public String getNome() { > return this.usuario.getNome(); > } > > //outros metodos delegate...(para cada atributo de usuario) > } > > Minha view tem acesso a esse useCase e no meu formulário por exemplo, > quando eu > clicasse em "novo" seria invocado o metodo remoto "novo" de > "usuarioUseCase" que criaria uma > nova instancia de Usuario... e a cada campo preenchido invocasse um metodo > correspondente, > por exemplo, no cadastro de usuario eu após entrar com o valor para o nome > seria invocado o > metodo setNome do server e assim para os outros atributos. > Com isso eu poderia já ir quando necessário validando com as regras de > negócio. > E como o flex é assincrono já ajudaria pois o processo no client não vai > "parar" esperando > o retorno do server... > Mas para isso eu precisaria ter uma referência remota para a "sessão" para > saber que o nome > que está sendo setado no metodo setNome, se refere ao usuário previamente > criado pelo metodo > "novo". > Tem como eu fazer isso no Flex (guardar a "sessão" (não sei se é sessão))? > > > > 2010/9/13 Mário Júnior <juninho...@gmail.com> > > Exactly! >> >> A idéia é vc sempre transportar DTOs e nunca expor suas entidades (objetos >> de domínio). >> Em suma, quase sempre os DTOs tem a mesma estrutura de entidades, mas nem >> sempre tb. Isso te permite uma maior flexibilidade em transportar dados >> entre view e services e, também, não expondo seus domínios vc consegue >> manter a regra de negócio entre eles mais "oculta" para sua view (uma vez q >> a view só conhece os DTOs). >> >> Agora, como já comentamos, concordamos é mais "chato" e burocrático >> trabalhar com DTOs, principalmente na hora de vc "converter" para >> entidades... pensando nisso o Bruno Fuster da DClick postou uma ferramenta >> bem interessante: >> >> http://blog.dclick.com.br/2009/10/22/transfer-object-pattern-annotations/pt/ >> >> >> []s >> >> >> >> Em 13 de setembro de 2010 10:40, Leonardo Ribeiro >> <leojribe...@gmail.com>escreveu: >> >> Fala Mário... >>> >>> Só uma dúvida cara, usando a abordagem dos DTOs, se eu vou criar um novo >>> "usuario" por exemplo, no meu código flex eu irei criar um novo DTO usuario >>> e envia-lo para o server e lá irei fazer a "conversão" em um usuario do >>> "dominio" e realizar as operações necessárias, correto? >>> >>> Obrigado >>> >>> 2010/9/8 Leonardo Ribeiro <leojribe...@gmail.com> >>> >>> Sim, eu já havia pensado nisso, nos DTOs, mas queria ter a opinião de >>>> quem já usa ou se deparou com o mesmo problema que o meu aqui agora... >>>> >>>> []'s >>>> >>>> >>>> 2010/9/8 Mário Júnior <juninho...@gmail.com> >>>> >>>>> Sim, trabalhoso, mas pensando de forma mais "politicamente correta" >>>>> seria isso mesmo! >>>>> >>>>> Pela conversa - e pela dúvida específica - me parece q vc está expondo >>>>> diretamente as entidades do seu negócio né? >>>>> No começo eu tb fazia isso ( >>>>> http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensource-para-sistemas-web-parte-2-final/#comment-149.. >>>>> caramba, já tem +2 anos esse meu comentário =P) mas depois com o tempo me >>>>> conscientizei de q, de fato, não é uma boa prática expor entidades do >>>>> hibernate, justamente por me deparar com os principios básicos de >>>>> encapsulamento, code responsability, etc... então adotei o uso de VOs (q >>>>> hj >>>>> já aprendi/acostumei a chamá-los de DTOs). São objetos "burros" q >>>>> simplesmente trafegam dados entre a view e os services, e daí nos services >>>>> eu transfiro os dados desses DTOs para as entidades, respeitando toda a >>>>> regra de negócio encapsulado nesses objetos. >>>>> >>>>> Enfim, como comentei antes, cada caso é um caso, e todos estão sujeitos >>>>> a longas análises... pra isso estamos ae :) >>>>> >>>>> >>>>> []s e boa sorte. >>>>> >>>>> >>>>> >>>>> Em 8 de setembro de 2010 19:07, Leonardo Ribeiro < >>>>> leojribe...@gmail.com> escreveu: >>>>> >>>>> Mário, >>>>>> >>>>>> É, realmente pensando bem não seria uma boa já que teria os casts... >>>>>> Você que já tem experiência em vários projetos java x flex, como >>>>>> resolve o problema do encapsulamento, tendo como exemplo o simples objeto >>>>>> NotaFiscal que tem como atributo Itens ? >>>>>> >>>>>> Sendo que em NotaFiscal não tem um método setItens(List itens) mas >>>>>> sim, por exemplo, addItem(Item item), porque a nota que deve controlar >>>>>> seus >>>>>> itens, fazendo se necessário alguma validação no item passado como >>>>>> parâmetro >>>>>> no método addItem(Item item)? >>>>>> >>>>>> Usa VO? Nesse caso teria que sempre que ler do BD que retorna objetos >>>>>> do domínio, fazer a criação do VO correspondente e enviar para o Flex e >>>>>> quando receber do Flex o VO fazer o inverso para poder trabalhar no >>>>>> server >>>>>> com o objeto de domínio correspondente... isso? Trabalhoso né? hehe >>>>>> >>>>>> Obrigado pela atenção >>>>>> >>>>>> >>>>>> 2010/9/8 Mário Júnior <juninho...@gmail.com> >>>>>> >>>>>> É possível sim. >>>>>>> Abra o source da classe JavaAdapter. Nessa classe vc tem o método >>>>>>> invoke(Message message). >>>>>>> >>>>>>> Dentro de message (faça um cast para RemotingMessage) vc tem tudo oq >>>>>>> precisa saber (qual classe de serviço será chamada e qual o objeto de >>>>>>> transporte será passado como argumento, assim como qual é o seu >>>>>>> homonimo no >>>>>>> java, etc...). >>>>>>> >>>>>>> Agora, precisa ter um bom cuidado com isso, pois ao meu ver, vc >>>>>>> estaria envolvendo uma certa "regra de negócio" dentro desse adapter. >>>>>>> Não >>>>>>> digo que é errado (não sou extremista) mas fique ciente q a medida q o >>>>>>> seu >>>>>>> projeto for crescendo (e as regras aumentando) vc vai ter sempre q >>>>>>> fazer >>>>>>> "testes" no objeto tranportado para saber se é um tipo X ou tipo Y para >>>>>>> daí >>>>>>> então decidir qual método chamar (ou deixar de chamar), etc... >>>>>>> >>>>>>> Daí fica a pergunta: Não seria melhor fazer esses testes na sua >>>>>>> camada de serviços, em vez de fazer na camada de comunicação? >>>>>>> >>>>>>> ps: cada "caso" é um caso... :) >>>>>>> >>>>>>> >>>>>>> []s >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Em 8 de setembro de 2010 15:31, Leonardo Ribeiro < >>>>>>> leojribe...@gmail.com> escreveu: >>>>>>> >>>>>>>> Pessoal, >>>>>>>> >>>>>>>> Alguém que já tenha mexido no fonte do BlazeDS sabe se é possível >>>>>>>> fazer com que ele, ao invés de fazer a "criação/injeção" dos valores do >>>>>>>> objeto as3 -> java via setters publicos usar reflection? >>>>>>>> >>>>>>>> Porque isso? Porque daí eu não precisaria de setID por exemplo, que >>>>>>>> seria a "pk" do objeto, uma vez que essa "pk" seria criada no >>>>>>>> construtor do >>>>>>>> objeto e não tem sentido alterar. Outro caso seria de no objeto java >>>>>>>> ter uma >>>>>>>> coleção como atributo (típico caso de nota fiscal ter uma coleção de >>>>>>>> itens) >>>>>>>> com isso não precisaria ter um setItens(List itens) no objeto >>>>>>>> NotaFiscal.java, e sim um addItem(Item item), mantendo o >>>>>>>> encapsulamento, >>>>>>>> pois quem deve inserir/gerir os itens da nota é a nota. >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> []'s >>>>>>>> Leonardo >>>>>>>> >>>>>>>> Linux User #488650 >>>>>>>> Ubuntu User #27045 >>>>>>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>>>>>>> >>>>>>>> -- >>>>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>>>>>> Para enviar uma mensagem, envie um e-mail para >>>>>>>> flexdev@googlegroups.com >>>>>>>> Para sair da lista, envie um email em branco para >>>>>>>> flexdev-unsubscr...@googlegroups.com >>>>>>>> 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 >>>>>>> flexdev@googlegroups.com >>>>>>> Para sair da lista, envie um email em branco para >>>>>>> flexdev-unsubscr...@googlegroups.com >>>>>>> Mais opções estão disponíveis em >>>>>>> http://groups.google.com/group/flexdev >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> []'s >>>>>> Leonardo >>>>>> >>>>>> Linux User #488650 >>>>>> Ubuntu User #27045 >>>>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>>>>> >>>>>> -- >>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>>>> Para enviar uma mensagem, envie um e-mail para >>>>>> flexdev@googlegroups.com >>>>>> Para sair da lista, envie um email em branco para >>>>>> flexdev-unsubscr...@googlegroups.com >>>>>> 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 >>>>> flexdev@googlegroups.com >>>>> Para sair da lista, envie um email em branco para >>>>> flexdev-unsubscr...@googlegroups.com >>>>> Mais opções estão disponíveis em >>>>> http://groups.google.com/group/flexdev >>>>> >>>> >>>> >>>> >>>> -- >>>> []'s >>>> Leonardo >>>> >>>> Linux User #488650 >>>> Ubuntu User #27045 >>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>>> >>> >>> >>> >>> -- >>> []'s >>> Leonardo >>> >>> Linux User #488650 >>> Ubuntu User #27045 >>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>> >>> -- >>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com >>> Para sair da lista, envie um email em branco para >>> flexdev-unsubscr...@googlegroups.com >>> 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 flexdev@googlegroups.com >> Para sair da lista, envie um email em branco para >> flexdev-unsubscr...@googlegroups.com >> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >> > > > > -- > []'s > Leonardo > > Linux User #488650 > Ubuntu User #27045 > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece > > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > 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 flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev