Internett: www.wis.no E-post: wis@wis.no
Tlf: 7245 0190 Fax: 7245 0191

Startsiden | Produkter | Drift | Markedsføring | Ta kontakt | Gå til
Søk:
Logg innLogg inn 

WIS blogg


Spring og GWT-RPC integrasjon
Av: Stig Runar Vangen Torsdag 03.02.2011 (14:23)

Som en del av implementasjonen av serverbiten av WisWeb 2 har vi gjort en jobb for integrasjon GWT og Spring. I tillegg har det blitt gjort en god del på klientsiden for å integrere RequestFactory innført i GWT 2.1 mot ExtGWT. Dette har til tider vært en frustrerende opplevelse, og ønsker her å publisere noen av de løsningene vi kom frem til slik at andre slipper å oppleve den samme frustrasjonen.

 

For GWT sine RPC-kall ønsker vi å konfigurere plassering av endepunkter gjennom Spring-annotasjoner. Dette krever at vi setter opp Spring-kontrollere i stedet for GWT-servlets. Denne integrasjonen gjøres i følgende kodebit.

 

  1. public abstract class AbstractRpcController extends RemoteServiceServlet {
  2.  
  3.   private static final Log logger = LogFactory.getLog(AbstractRpcController.class);
  4.   private ServletContext servletContext;
  5.  
  6.   @Override
  7.   public final ServletContext getServletContext() {
  8.     return servletContext;
  9.   }
  10.  
  11.   @Autowired
  12.   public final void setServletContext(final ServletContext servletContext) {
  13.     this.servletContext = servletContext;
  14.   }
  15.  
  16.   public abstract RemoteService getRemoteService();
  17.  
  18.   @RequestMapping("/")
  19.   public final void request(final HttpServletRequest request,
  20.       final HttpServletResponse response) {
  21.     this.doPost(request, response);
  22.   }
  23.  
  24.   @Override
  25.   public final String processCall(final String payload)
  26.       throws SerializationException {
  27.     try {
  28.       RPCRequest rpcRequest =
  29.         RPC.decodeRequest(payload, this.getRemoteService().getClass());
  30.       String result =
  31.         RPC.invokeAndEncodeResponse(this.getRemoteService(),
  32.           rpcRequest.getMethod(), rpcRequest.getParameters());
  33.       return result;
  34.     } catch (IncompatibleRemoteServiceException ex) {
  35.       logger.error("Caught an exception", ex);
  36.       return RPC.encodeResponseForFailure(null, ex);
  37.     } catch (Exception ex) {
  38.       logger.error("Caught a generic exception", ex);
  39.       return RPC.encodeResponseForFailure(null, ex);
  40.     }
  41.   }
  42. }

 

Selve kjernen her er den siste metoden. Her rutes en GWT-service inn til GWT sin implementasjon av RPC-behandling. Dette sørger for en sømløs integrasjon mellom GWT og Spring. Referanse til GWT-service er abstract, da hver modul-implementasjon bruker sin egen service.

 

  1. @Controller
  2. @SystemController
  3. @RequestMapping("/rpc/contact")
  4. public class ContactRpcController extends AbstractRpcController {
  5.  
  6.   private ContactService contactService;
  7.  
  8.   @Autowired
  9.   public final void setContactService(final ContactService contactService) {
  10.     this.contactService = contactService;
  11.   }
  12.  
  13.   @Override
  14.   public final RemoteService getRemoteService() {
  15.     return this.contactService;
  16.   }
  17. }

 

Dette er en implementasjon av en modul-spesifikk RPC kontroller. Kontakt-service hentes her fra Spring sin kontekst, og gis tilbake til den abstrakte implementasjonen ved behov. Dette gjør det raskt og enkelt å legge til services for andre moduler.

 

--Emner: Java, Utvikling, Web 2.0, WisWeb 2
Kommentarer: 0


 
 Nye poster
Fixing missing (30.05.2012)
Redirect dll us (30.05.2012)
Laste ned passo (11.05.2012)
Bare si "Nei ti (12.12.2011)
Posten er slett (16.11.2011)
 Søk
 
 Populære emner
Access  Ajax  Ansatte  Brannmur  Database/SQL  Debugging  Delphi  FortiClient  Fortigate  GSI  Hjemmet  Html  Internett  iPhone  iPhone Apps  Java  JavaScript  JVM  Nerdehumor  Nettverk  Operativsystem  Palm  Servere  Skrivere  Sybase  Utvikling  VBA  Vista  VPN  Web 2.0  Windows  WinXP  WIS  Wis Tiltak  WisWeb 1  WisWeb 2  Word  XML
 Vis måned
Mai 2012 (3)
Desember 2011 (1)
November 2011 (1)
September 2011 (2)
August 2011 (1)
 Vis fra forfatter
Ove Halseth (46)
Dag Waade (9)
Stig Runar Vangen (7)
Svein Waade (6)
Inge Valaas (1)
Inger Berg (1)
Kristian Ljøkelsøy Vitsø (1)