Estoy implementando una aplicación GWT 2.4 en Glassfish 3.0.1. Puedo acceder fácilmente a mi solicitud a través de http://host:PORT/appContext/
Sin embargo, cuando me proxy inverso de la aplicación con Apache consigo una excepción con el siguiente extracto (de troncos Glassfish):¿Cuál es el efecto del proxy inverso en una aplicación GWT?
excepción al envío de llamada entrante RPC com.google. gwt.user.client.rpc.SerializationException: El tipo 'com.ozdokmeci.basicgwtproject.shared.GroupData' no se puede asignar a 'com.google.gwt.user.client.rpc.IsSerializable' y no tiene un serializador de campo personalizado . Por motivos de seguridad, este tipo no se serializará.
La implementación de IsSerializable
resuelve el problema según lo aconsejado por Chi en un related question. También hay otras soluciones en la pregunta relacionada.
Mi pregunta es ¿cuál es la causa subyacente de esto y cómo dos soluciones aparentemente no relacionadas (implementando una interfaz de marcador y extendiendo una clase de servlet) resuelven este problema? También hay desventajas para ambos métodos mencionados en el related question?
Nota: La excepción no se produce si se llega directamente a la aplicación.
Nota 2: La clase relacionada con la excepción ya implementa la interfaz Serializable, que debería ser equivalente a IsSerializable en lo que respecta a GWT.
¿Estás seguro de que la excepción solo se produce cuando se accede a través de Apache? Necesitas comprobar esa suposición. Creo que el error está ocurriendo incluso cuando accedes a él directamente. La excepción no tiene nada que ver con el proxy inverso. – gkamal
La excepción se produce solo cuando se envía un proxy detrás de Apache (no estoy sugiriendo que Apache lo esté causando). Cuando accedo a la aplicación directamente, no se produce tal excepción. Esto no era una suposición y revisé los registros más de una vez antes de publicar la pregunta. Sé que la excepción no está directamente relacionada con el proxy inverso y es por eso que hice la pregunta :) – Kaan
Creo que hay algo más que está yendo mal, cuando dices no apache es que el alojado/devmode o el acceso a la versión js compilada . ¿Puede verificar si ambos están ejecutando la misma versión de código (se descartan el almacenamiento en caché, la compilación incorrecta, etc.)? Haga algún cambio visible en la página principal y verifique si el cambio aparece a través del proxy apache. – gkamal