Pregunta

Estoy usando BlazeDS a distancia Algunos objetos Java que estoy consumiendo en una aplicación Flex. Estoy recibiendo un error de conversión de tipos con una de mis clases que no puedo por la vida de a averiguar. Tengo otras clases que están trabajando bien utilizando los mismos tipos de datos, y yo he ido por encima del mapeo de una docena de veces. Estoy siguiendo todas las convenciones necesarias para captadores y definidores por lo que yo sé ...

De todos modos, mi pregunta es: ¿cómo puedo depurar este problema Ejecución de la aplicación Flex en modo de depuración escupe algunos errores genéricas a la consola que realmente no ayuda mucho (TypeError: Error # 1034: Tipo de coerción: no se puede convertir objeto @ 5d1d809 a valueObjects.SomeClass)

..

Soy nuevo en todo esto AMF / Flex + Java, por lo que cualquier consejo sería muy apreciada.

¿Fue útil?

Solución

Estos son dos de las herramientas que uso cuando se trabaja con BlazeDS, AMF, etc:.

  • Utilice una herramienta proxy HTTP que muestra las llamadas entre el cliente y el servidor, como Charles
  

Charles es un proxy HTTP / HTTP   monitor / proxy inverso que permite a una   desarrollador ver todos los protocolos HTTP y   SSL / HTTPS tráfico entre su   máquina e Internet. Esta   incluye peticiones, respuestas y la   cabeceras HTTP (que contienen el   cookies y almacenamiento en caché de la información).

  • Activar el registro para BlazeDS . Dentro WEB-INF/conf/services-conf.xml, baje el nivel de depuración a 'debug' como en el snippit a continuación. La salida, que es bastante detallado, aparecerá en {tomcat-home}/logs/localhost.yyyy-mm-dd.log

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

Otros consejos

La forma más fácil de comprobar en la comunicación entre los prestadores de clientes mensajes de AMF es utilizar Firefox, instalar extensión FireBug y agregar el AMF Explorador . Se puede ver las peticiones y respuestas estructuradas.

La clase java que se está deserializar en el lado del cliente debe tener una referencia a un objeto de la clase AS3 correspondiente en la aplicación (mxml o as3). De lo contrario, la clase AS3 no se cargará en el archivo SWF y dará lugar a deserializar la clase Java en un objeto AS3 genérico.

actualización Esto ocurrirá a pesar de tener el mapeo, captadores y definidores. Sólo declarar un objeto de la clase AS3 correspondiente en la sección guión de su mxml.

Puedo utilizar Flex Builder y tenerlo preparado para el cliente y el servidor de depuración lado. Era un dolor de configurar al principio, pero puede google para tutoriales paso a paso. Me parece muy valiosa para la depuración RPC. Que yo sepa, Flex Builder tiene una prueba gratuita y es gratis para los estudiantes y los parados.

Es también digno de mención que la instrumentación en Java también puede causar una pérdida de información y / o interferir con el proceso de serialización y corriente.

He experimentado esto TypeError: Error #1034: Type Coercion failed en un proyecto (Flex <-> + BlazeDS primavera), donde nuestra capa de acceso a datos se llevó a cabo con iBatis y había perezoso carga encendido - que se apagaba como la medida representó la pérdida menor de eficiencia (teóricamente, al menos), en comparación con otras soluciones alternativas que teníamos en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top