Pregunta

Actualmente tengo una aplicación GWT que usa RequestBuilde para enviar mensajes a un servlet que tengo (usando POST y GET ), y mi servlet (en doPost y doGet ) " pausa " la solicitud (esto se hace usando Especificación de Servlets 3.0) y la agrega a una cola.
Además tengo un Hilo de demonio que se ejecuta en segundo plano y "reproduce" la solicitud cuando hay nuevos datos
Esto funciona muy bien para mí, aparte del hecho de que solo estoy enviando cadenas por ahora y me gustaría utilizar el mecanismo RPC para enviar Objetos.
Mi pregunta es esta:
Si creo mi clase myServiceImpl que se extiende RemoteServiceServlet ¿cómo debo manejar el doPost y doGet si es necesario?
Necesito pausar mi solicitud para utilizar el soporte asíncrono, donde ¿Debería lograrse esto? Aunque quizás debería llamar al método this.getThreadLocalRequest () en mi método RPC en la clase myServiceImpl , pero no estoy seguro de lo acertado que será.
Estoy no Seguro, incluso entiendo cómo GWT maneja la llamada desde el lado del cliente de esa interfaz asincrónica. ¿Por casualidad llama al doGet por ejemplo del servlet y se asegura de que llame al método RPC requerido?
Lo siento si hice un lío de cosas, es solo que no puedo encontrar más información técnica detallada como exactamente cómo funciona este negocio RPC.
Agradezco cualquier mano de préstamo
Ittai

¿Fue útil?

Solución 2

Creo que el principal malentendido que tuve en ese momento estaba relacionado con el hecho de que GWT RPC se basa en el mecanismo de servlet (internamente) y, por lo tanto, tratar de usar ese mecanismo con servlets asíncronos era, en ese momento, imposible ya que GWT RPC era construido en servlets 2.5 (nuevamente, en ese momento).

Otros consejos

Para entender RPC, olvídate de POST y GET, funciona de manera diferente (eso es desde una perspectiva de programación. Internamente lo usa, pero no lo ves ni necesitas entenderlo, a menos que quieras hacer algo exótico). Un buen punto de partida para RPC son los documentos de GWT: http://code.google .com / webtoolkit / tutorials / 1.6 / RPC.html

Para darle un resumen. Al usar RPC, su servlet myServiceImpl necesita implementar los métodos de una interfaz llamada myService , además de extender el RemoveServiceServlet . Los métodos obtienen como argumentos los datos que desea enviar al servidor.

Junto a la interfaz myService debe crear una interfaz myServiceAsync (ambas interfaces deben estar en un subpaquete del cliente). Esta interfaz myServiceAsync debe contener los mismos métodos que la interfaz myService , excepto que cada método devuelve void y tiene un último argumento adicional AsyncCallback callback .

En su cliente, necesita instrumentar GWT para generar el RPC a través de GWT.create (consulte la documentación para obtener detalles.

Para usar RPC, llame a los métodos en la interfaz myServiceAsync en su código de cliente y GWT se encarga de enviarlo al servlet. El servlet llamará al método de coincidencia con los argumentos que le pasó al cliente. Esto se hace asíncrono. Por lo tanto, el cliente regresa directamente de la llamada.

Cuando el servidor devuelve el resultado, se devuelve la devolución de llamada que pasó myServiceAsync o se usa OnError o OnSuccess . OnError si el método en el lado del servidor arrojó un error, de lo contrario OnSuccess . El OnSuccess tendrá como argumento el valor de retorno de lo que devolvió en el método implementado por su servlet.

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