Qual é o propósito da interface IsSerializable no GWT (em relação ao mecanismo RPC)
Pergunta
Qual é o propósito da interface IsSerializable no GWT (em relação ao mecanismo RPC).Nunca consegui encontrar uma boa explicação de por que é assim e por que a interface de marcação Java Serializable padrão não funciona.
Solução
Ambos Serializable
e IsSerializable
trabalho, de acordo com Documentos de serialização do GWT:
Uma classe definida pelo usuário é serializável se todas as condições a seguir se aplicarem:
- É atribuível a IsSerializable ou Serializable, seja porque implementa diretamente uma dessas interfaces ou porque deriva de uma superclasse que não
- Todos os campos de instância não finais e não transitórios são serializáveis e
- A partir do GWT 1.5, ele deve ter um construtor padrão (argumento zero) (com qualquer modificador de acesso) ou nenhum construtor.
Uma diferença fundamental, porém, é que, por razões de segurança, todos Serializable
classes devem ser incluídas em uma política de serialização, que é gerada em tempo de compilação, enquanto IsSerializable
as aulas não têm esse requisito.
Se o seu interesse é puramente no GWT e você não por exemplo. compartilhe suas classes de modelo entre o aplicativo da web e outro aplicativo, sugiro que você implemente suas classes de modelo/DTOs IsSerializable
.
Outras dicas
Se você compartilhar seus objetos com outros programas, use Serializável Como é uma função de biblioteca Java padrão,
Mas se você quiser passar apenas entre o servidor e o cliente no GWT, use Emissorizável. Ajuda a garantir que você não permita começar a passá -lo para lugares que não deve ir.