Pregunta

Recibo la siguiente excepción:

com.google.gwt.user.client.rpc.SerializationException:El tipo 'java.lang.Long' no se incluyó en el conjunto de tipos que pueden ser serializados mediante esta SerializationPolicy o su objeto Class no se pudo cargar.Por motivos de seguridad, este tipo no se serializará.

utilizando GWT 2.1 y el servidor Jetty integrado.Según los documentos, este tipo es definitivamente serializable...¿Cómo puedo incluirlo en la SerializationPolicy?

¿Fue útil?

Solución 2

Es necesario incluir un método superfluo en el servicio RPC que "ponga en la lista blanca" una serie de objetos.Esto surge debido al uso de genéricos, GWT no puede determinar necesariamente qué objeto puedo serializar para incluir dentro de algún genérico.

Incluí todos los tipos que pueden necesitar ser (des) serializados como miembros de un objeto (SerializableWhitelist).Agregué un método al objeto servlet RPC como:

public SerializableWhitelist junk(SerializableWhitelist l) { return null; }

Vale la pena señalar que usted necesidad incluir los tipos de datos de la lista blanca como argumento y como tipo de retorno, ya que GWT aparentemente mantiene dos políticas de serialización separadas.

Otros consejos

Aquí está el enlace que debe resolver el problema: http://developerlife.com/tutorials/?p=131

  

Una clase definida por el usuario es serializable si:

     
      
  1. la clase es asignable a IsSerializable o java.io.Serializable, ya sea porque implementa una de estas interfaces, o porque se deriva de una superclase que implementa una de estas interfaces.
  2.   
  3. todos los campos que no son finales, no transitorios ejemplar de la clase son serializable
  4.   
  5. la clase tiene un público predeterminado (argumento cero) constructor
  6.   

Trate de eliminar los archivos * .gwt.rpc en el directorio de la guerra / app, limpio y reconstruir.

Una cosa a la nota: se debe evitar a largo o largo, si es posible, ya que son
emulado en GWT (porque no hay Javascript nativa de longitud) y muy
lento. Uso int lugar donde cada vez que puede.

Para su información que he planteado esto como un error GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=5811

Vamos a ver lo que dicen.

Fwiw, yo estaba teniendo este problema, pero mi tipo 'Objeto' era clases ocultos detrás generified . El mensaje de error en sí estaba mal.

Así que si uno de sus métodos de RPC consiste en una clase:

class Xxx<T> implements IsSerializable {...

Se tiene que cambiar a:

class Xxx<T extends IsSerializable> implements IsSerializable {...

El problema también puede ser debido a que el código en el equipo local en el que está ejecutando modo de host no es el mismo que el del servidor externo que se conecta a través de RPC. Así que en mi caso me faltaba un git pull en mi máquina local para que coincida con lo que se despliega en el servidor externo. Los cambios fueron mínimos, sólo una nueva propiedad en una de las clases que se incluyeron en el gwt.rpc, pero esto ya fue suficiente que el gwt.rpc md5 nombres de archivo eran diferentes y por lo tanto se produjo el error mencionado anteriormente.

http://groups.google.com/ grupo / google-web-toolkit / browse_thread / hilo / 7dd5123d359ddfa8

Uso de Eclipse y Maven y gwt 2.1.1

Compilar y GWT implementar WAR.

Trate de usar OOPHM lanzado desde Eclipse.

Esto sería un fracaso para mí.

Esto generará en los registros del servidor:

ERROR: El archivo de política serialización 'blah.gwt.rpc' no se encontró; ¿Usted se olvidó incluirlo en este despliegue?

ADVERTENCIA: No se pudo obtener el SerializationPolicy '94DEC228B2828D3A5897FEE3D6845A40' para el módulo 'http: // bla: 8080 / BlahUI / BlahUI /'; un legado, se utilizará 1.3.3, la política de serialización compatibles. Puede experimentar SerializationExceptions como resultado.

Y a continuación,

excepción al envío de llamada entrante RPC com.google.gwt.user.client.rpc.SerializationException: Tipo '[LpathToClass;' No era asignable a 'com.google.gwt.user.client.rpc.IsSerializable' y no tenía un campo personalizado razones de seguridad serializer.For, no se puede serializar este tipo .: instancia = [LpathToClass; @ 9d524af     en com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize (ServerSerializationStreamWriter.java:614)

Ahora que los archivos gwt.rpc adicionales se han generado (ya sea por el eclipse / plugins experto que conoce?)

recompilación (incluso una compilación limpia funcionará porque los archivos gwt.rpc no están en la carpeta de destino, mis archivos OOPHM gwt.rpc están a punto de entrada misma carpeta que el HTML) y volver a implementar. Este nuevo archivo de la guerra contendrá los archivos generados gwt.rpc.

Relanzamiento OOPHM desde Eclipse.

funciona para mí.

Otra Fwiw: Creo Despejé un problema similar en una clase de enumeración cambiando el modificador de acceso de la individual, un constructor argumento de defecto (sin modificador) a 'privado'. En cualquier caso, haciendo que no se rompió porque está trabajando de esa manera ahora.

Me enfrentó este error y quedó atascado por 1 días por completo. Entonces llegué a través siguiente solución rápida:

Asegúrese de que sus DTO o Entidades clases siguiendo las reglas de interfaz serializable. Es la que lo único que tiene que hacer porque el descanso de los temas estará con su creación de construcción. Así que si usted está utilizando Maven continuación, asegúrese de hacerlo generación limpia y borrar toda la caché del navegador. Resolví mis problemas con esto. Espero que le ayudará. ¡Gracias!

Asegúrese de que la clase está en la carpeta compartida. Esto es lo que me faltaba.

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