2011-05-03 19 views
6

Voglio chiamare servlet con alcuni parametri e ricevere una risposta. Il codice è scritto in Java. Qual è il modo migliore (più pulito) per farlo?Come chiamare un servlet da codice Java

Inoltre, posso chiamare un servlet e continuare con il codice senza attendere che il servlet termini (chiudere la connessione e "dimenticarsene")?

+0

È possibile attivare la richiesta in un thread separato se si desidera continuare con altre parti dell'applicazione. Vedere anche: http://stackoverflow.com/questions/4349854/calling-a-servlet-from-a-java-application – Catchwa

+0

"Qual è il modo migliore (più pulito) per farlo" cosa è * migliore * o * più pulito * significa. – Raedwald

risposta

4

Migliore utilizzo di Apache HttpClient API per la gestione e la comunicazione con servlet

http://hc.apache.org/httpcomponents-client-ga/index.html

Caratteristiche:

  1. Param sono facili da passare e analizzare la risposta.
  2. Esso consente anche la comunicazione tramite proxy
  3. Open source
  4. 'anche il supporto asincrono e molti altri prega di fare riferimento URL sopra.
4

Esempio da here:

import java.net.*; 
import java.io.*; 

public class URLConnectionReader { 
    public static void main(String[] args) throws Exception { 
    URL yahoo = new URL("http://www.yahoo.com/"); 
    URLConnection yc = yahoo.openConnection(); 
    BufferedReader in = new BufferedReader(
          new InputStreamReader(
          yc.getInputStream())); 
    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
     System.out.println(inputLine); 
    in.close(); 
    } 
} 

Dal vostro punto di vista, servlet è solo un URL su alcuni server. Per quanto riguarda non aspettare una risposta - leggi sui thread Java. Ma non è possibile chiudere la connessione HTTP senza attendere il completamento di un servlet, poiché ciò potrebbe causare il fallimento di un servlet. Aspetta semplicemente la risposta in un thread separato e scartala se non ha importanza.

+0

Devo aspettare una risposta (se la soluzione se utilizzare un thread, la risposta è ancora sì - devo aspettare una risposta). Che ne dici di passare i parametri al servlet? devo bild l'url da solo (usando '?' e '&') o c'è un modo più pulito? –

2

Si potrebbe utilizzare Apache HttpClient Apache HttpClient

Questa funzionalità ha anche non-blocking I/O disponibili NIO extensions

Ecco un Tutorial per l'Apache HttpComponents.

Si potrebbe anche provare Jetty o Async Http Client

+1

a me non piacciono molto le persone che hanno votato senza commento. Ecco un upvote per bilanciare la forza. – Nico