2009-05-18 7 views
1

J'ai deux servlets qui s'exécutent sur différents serveurs Tomcat.Appel de servlet à partir d'une autre servlet

J'ai essayé d'appeler une servlet1 à partir de servlet2 de la manière suivante et j'ai voulu écrire un objet dans le flux de sortie.

URL url=new URL("http://msyserver/abc/servlet1"); 
URLConnection con=url.openConnection(); 
con.setDoOutput(true); 
con.setDoInput(true); 
OutputStream os=con.getOutputStream(); 
ObjectOutputStream oos=new ObjectOutputStream(os); 
oos.writeObject(pushEmailDTO); 
oos.flush(); 
oos.close(); 

Le problème est que je suis incapable de frapper le servlet? Je ne peux pas comprendre ce qui me manque.

Répondre

1

Je ne peux pas comprendre mais cela a fonctionné en ajoutant la ligne suivante dans le code.

con.getExpiration(); 

comme celui-ci

URL url=new URL("http://msyserver/abc/servlet1"); 
URLConnection con=url.openConnection(); 
con.setDoOutput(true); 
con.setDoInput(true); 
con.getExpiration();//<---------- 
OutputStream os=con.getOutputStream(); 
ObjectOutputStream oos=new ObjectOutputStream(os); 
oos.writeObject(pushEmailDTO); 
oos.flush(); 
oos.close(); 
+0

Pour les nouveaux visiteurs, peut-être cela pourrait aider - http://stackoverflow.com/questions/4844535/why-do-you-have-to-call-urlconnectiongetinputstream-to-be-able-to-write-out-to – Gyan

1

Quelle est l'erreur que vous obtenez? Vérifiez que l'adresse est correcte. Si le serveur distant est exécuté sur un port autre que 80, tenez-en compte lors de la création de l'URL.

Peut-être aussi je suggère d'utiliser HttpClient au lieu de URLConnection.

+0

Je ne reçois aucune exception chaque ligne s'exécute avec succès. Aussi le servlet fonctionne sur l'URL exacte que je passe dans le code mentionné. –

6

Vous devez créer une connexion via url.connect() avant de pouvoir lire/envoyer des données. Ceci est contre-intuitif puisque le nom openConnection() indique qu'il fait déjà, mais les docs disent:

En général, la création d'une connexion à une URL est un processus en plusieurs étapes:

  1. openConnection()
  2. Manipulez les paramètres qui affectent la connexion à la ressource distante.
  3. connect()
  4. Interagir avec la ressource; interroger les champs d'en-tête et le contenu.

Voilà pourquoi getExpiration() fait fonctionner: Il appelle connect() pour vous.

Questions connexes