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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top