usando o mecanismo GWT RPC com o meu Servlet personalizado
-
07-07-2019 - |
Pergunta
Actualmente tenho uma aplicação GWT que usa a RequestBuilde
para
enviar mensagens para um servlet eu (usando POST
e GET
), e meu servlet
(Em doPost
e doGet
) "pausa" o pedido (isto é feito usando
Servlets 3.0 especificação) e adiciona-lo para uma fila.
Além disso eu tenho um
fio daemon que roda em segundo plano e "joga" o pedido
quando há dados novos.
Isso funciona muito bem para mim além do fato de que eu só estou enviando
cordas para agora e eu gostaria de utilizar o mecanismo RPC para enviar
Objects.
A minha pergunta é esta:
Se eu criar minha classe myServiceImpl
que se estende
RemoteServiceServlet
como devo lidar com a doPost
e doGet
se em tudo?
eu preciso pausar o meu pedido para utilizar o suporte assíncrono, onde isso deve ser feito? I embora talvez para o método this.getThreadLocalRequest()
chamada no meu método RPC na classe myServiceImpl
mas não tenho certeza de como sábio que será.
Eu não sou
certeza que eu mesmo entender como GWT lida com a chamada do lado do cliente
de que a interface assíncrona.
Será que, por acaso chamar o doGet
por exemplo do servlet e
garante que ele chama o método RPC necessário?
Me desculpe se eu fiz uma confusão de coisas é só que eu não posso encontrar mais
informações técnicas detalhadas como exatamente como este negócio RPC funciona.
Agradeço qualquer empréstimo mão
Itai
Solução 2
Eu acho que o principal mal-entendido que eu tinha na época estava relacionada ao fato de que GWT RPC baseia-se no mecanismo de servlet (internamente) e assim tentar usar esse mecanismo com servlets assíncronos foi, na época, impossível, já que GWT RPC foi construído sobre servlets 2,5 (novamente, na época).
Outras dicas
Para entender RPC esquecer GET e POST funciona de maneira diferente (que é a partir de uma perspectiva de programação. Internamente ele não usá-lo, mas você não vê ou necessidade de compreendê-lo, a menos que você quer fazer algo exótico). Um bom ponto de partida é na RPC é a documentação do GWT: http://code.google .com / webtoolkit / tutoriais / 1.6 / RPC.html
Para lhe dar um resumo. Ao usar RPC suas necessidades myServiceImpl
servlet para implementar os métodos de um myService
interface chamada, além de ampliar o RemoveServiceServlet
. Os métodos de obter como argumentos os dados que deseja enviar para o servidor.
Ao lado da myService
interface que você precisa para criar uma interface myServiceAsync
(ambos de interface deve estar em um subpacote cliente). Este inteface myServiceAsync
deve conter os mesmos métodos que a interface myService
exceto cada void
método retorna e tem uma última AsyncCallback callback
argumento adicional.
Em que você cliente que você precisa instrumento GWT para gerar a RPC via GWT.create (consulte a documentação para os detalhes.
Para usar RPC, chamar os métodos na interface myServiceAsync
em seu código de cliente e GWT cuida de enviá-lo para o servlet. O servlet, então, chamar o método de correspondência com os argumentos que você passou no cliente. Isso é feito assíncrona. Assim, o retorno cliente directamente a partir da chamada.
Quando o servidor envia o resultado de volta o retorno de chamada que você passou myServiceAsync
é usado ou OnError
ou OnSuccess
é chamado. OnError
se o método do lado do servidor emitiu um erro, senão OnSuccess
. O OnSuccess
terá como argumento o valor de retorno do que você voltou no método implementado por seu servlet.