Pergunta

Eu estou usando BlazeDS para remoto alguns objetos Java que eu estou consumindo em um aplicativo Flex. Estou recebendo um erro de coerção de tipo com uma das minhas aulas que eu não posso para a vida de me descobrir. Eu tenho outras classes que estão a trabalhar bem usando os mesmos tipos de dados, e eu já passei por cima do meu mapeamento uma dúzia de vezes. Estou seguindo todas as convenções necessárias para getters e setters, tanto quanto eu sei ...

De qualquer forma, a minha pergunta é: como eu posso depurar este problema Executando o aplicativo Flex em espetos modo de depuração alguns erros genéricos para o console que realmente não ajuda muito (TypeError: Error # 1034: Tipo de coerção falhou: não é possível converter objeto @ 5d1d809 para valueObjects.SomeClass)

..

Eu sou novo para todo este AMF / coisa Flex + Java, por isso qualquer dicas seria muito apreciada.

Foi útil?

Solução

Estas são duas das ferramentas que eu uso quando se trabalha com BlazeDS, AMF, etc:.

  • Use um HTTP ferramenta de proxy que mostra as chamadas entre o cliente eo servidor, como Charles

Charles é um proxy HTTP / HTTP monitor / proxy reverso que permite a um desenvolvedor para ver todos do HTTP e SSL / HTTPS o tráfego entre o seu máquina ea Internet. Esta inclui pedidos, respostas e do cabeçalhos HTTP (que contêm o cookies e informações caching).

  • Ligue o log para BlazeDS . Dentro WEB-INF/conf/services-conf.xml, diminuir o nível de depuração para 'debug' como no abaixo snippit. A saída, que é bastante detalhada, aparecerá na {tomcat-home}/logs/localhost.yyyy-mm-dd.log

    <target class="flex.messaging.log.ConsoleTarget" level="debug">

Outras dicas

A maneira mais fácil de verificar a comunicação entre prestadores de clientes AMF mensagens é usar FireFox, instale FireBug extensão e adicionar o AMF Explorador . Você pode ver os pedidos estruturados e respostas.

A classe Java que está a ser desserializadas no lado do cliente tem de ter uma referência a um objecto de classe AS3 correspondente na aplicação (mxml ou AS3). Caso contrário, a classe as3 não será carregado no arquivo SWF e resultará em desserializar a classe java para um objeto AS3 genérico.

atualizados Isso vai acontecer, apesar de ter o mapeamento, getters e setters. Apenas declarar um objeto da classe AS3 correspondente na seção de script de sua mxml.

Eu uso Flex Builder e tê-lo configurado para o cliente e servidor depuração lado. Era uma dor de configurar no início, mas você pode Google para tutoriais passo-a-passo. Acho que é bastante valiosa para a depuração de RPC. Última vez que verifiquei, Flex Builder tem uma versão gratuita e está livre para estudantes e desempregados.

Também é importante notar que a instrumentação em Java também pode causar uma perda de informações e / ou interferir com o processo de serialização e fluxo.

Eu experimentei este TypeError: Error #1034: Type Coercion failed em um projeto (Flex <-> BlazeDS + Primavera), onde a nossa camada de acesso a dados foi implementado com iBatis e tinha carregamento lento ligado -, estava desligada como a medida representou a perda de menor de eficiência (teoricamente, pelo menos), em comparação com outras soluções alternativas que tivemos no lugar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top