+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Comunicazione tra due servlet

  1. #1
    accosimo non è in linea Novello
    Salve, premesso che sono molto inesperto in materia, vorrei chiedervi se è possibile e semmai in che modo è possibile far comunicare due servlet che sono ipoteticamente poste in due differenti server (ovviamente ora le ho entrambe in localhost su due distinte porte....).

    sto provando ad utilizzare request.getRequestDispatcher(" ... ").forward(request, response); ma non so bene che passare come stringa... devo anche cambiare qualcosa sul file web.xml?

    scusate la mia profonda ignoranza

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Bisogna chiarire meglio cosa intendi esattamente con "comunicazione" tra le due.

    Il meccanismo di forward della richiesta che hai citato passa il controllo da una servlet all'altra, non permette alla servlet A di interagire con la servlet B, o comunque è un'operazione singola (A può dare indicazioni a B, ma il viceversa non è possibile). Sostanzialmente si tratta di un redirect (forward e redirect non sono esattamente la stessa cosa, per approfondire vedi: Java Practices -> Forward versus redirect)

    Se vuoi, dalla servlet A, effettuare una richiesta in get/post verso la servlet B, recuperare i risultati dell'operazione (una pagina, ma anche altro) ed usarli dovrai usare qualche meccanismo asincrono tipo ajax (jQuery ha tutto quello di cui hai bisogno), oppure se non hai esigenze particolari di sincronia, un HttpClient (consiglio, per usi banali, di non impiegare le versioni 3.x e 4.x - la 2.x è più che sufficiente e molto meno complicata da usare).
    ℹ️ Leggi di più su bottomap ...

  3. #3
    accosimo non è in linea Novello
    Quote Originariamente inviato da bottomap Visualizza il messaggio
    Ciao,

    Bisogna chiarire meglio cosa intendi esattamente con "comunicazione" tra le due.

    Il meccanismo di forward della richiesta che hai citato passa il controllo da una servlet all'altra, non permette alla servlet A di interagire con la servlet B, o comunque è un'operazione singola (A può dare indicazioni a B, ma il viceversa non è possibile). Sostanzialmente si tratta di un redirect (forward e redirect non sono esattamente la stessa cosa, per approfondire vedi: Java Practices -> Forward versus redirect)

    Se vuoi, dalla servlet A, effettuare una richiesta in get/post verso la servlet B, recuperare i risultati dell'operazione (una pagina, ma anche altro) ed usarli dovrai usare qualche meccanismo asincrono tipo ajax (jQuery ha tutto quello di cui hai bisogno), oppure se non hai esigenze particolari di sincronia, un HttpClient (consiglio, per usi banali, di non impiegare le versioni 3.x e 4.x - la 2.x è più che sufficiente e molto meno complicata da usare).
    ok, bene, hai centrato il problema! Quindi mi consigli di utilizzare un client che fa da mediatore tra la servlet A e la servlet B?? In realtà già ho un client che comunica asincronicamente attraverso ajax di jquery con le due servlet...a proposito di questo, vorrei sollevare anche un'altro nodo che non riesco a gestire: c'è un qualche modo di mandare dati al client senza che ci sia stato una richiesta di tipo GET o POST? Io immagino di no, anche perchè credo ci sarebbe qualche problemino a livello di sicurezza poi, ma mai dire mai...

  4. #4
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Riguardo al "client" una delle due effettuerà richieste all'altra... talvolta la servlet principale A è la pagina vera e propria, mentre la seconda genera spezzoni di html che vengono inseriti nella pagina principale (in questo senso non genera un'intera pagina ma, per fare un esempio banale, l'insieme di option contenute in una select in base ai parametri che passi).

    Per la seconda domanda, parlando di servlet in senso stretto la risposta è no (a meno che non si vogliano includere altri metodi html per lo più poco utili e/o poco usati, tipo HEAD, PUT, DELETE, OPTION - per approfondire vedi HTTP/1.1: Method Definitions - Tra l'altro bisogna vedere come gestirle a livello di servlet, sinceramente non ho mai provato).
    Escludendo invece il protocollo http, hai a disposizione un po'tutto quello che vuoi, solo dovrai gestire manualmente (o in maniera parzialmente manuale) i socket e disegnare tu un protocollo ad hoc per il livello di applicazione. Se il sistema si basa comunque su pagine html non credo sia una strada facilmente percorribile.
    ℹ️ Leggi di più su bottomap ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Servlet da HTML in automatico
    Da kannata nel forum Java
    Risposte: 6
    Ultimo Post: 03-02-2010, 16:53
  2. Problema Servlet
    Da domenico066 nel forum Java
    Risposte: 28
    Ultimo Post: 23-11-2009, 11:07
  3. Servlet performance
    Da cescocix nel forum Java
    Risposte: 0
    Ultimo Post: 01-12-2008, 12:43
  4. output di una servlet
    Da stefy81 nel forum Java
    Risposte: 6
    Ultimo Post: 28-11-2008, 16:22
  5. [Java]JSP e Servlet
    Da silsimo nel forum Java
    Risposte: 3
    Ultimo Post: 27-05-2006, 11:54