Pregunta

Tengo dos servlets que se ejecutan en diferentes servidores Tomcat.

I y tratando de llamar a un servlet1 de servlet2 de la siguiente manera y quería escribir un objeto de flujo de salida.

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();

El problema es que no estoy en condiciones de golpear el servlet? No puedo imaginar lo que me falta.

¿Fue útil?

Solución 3

No puedo unnderstand pero funcionó añadiendo la siguiente línea en el código.

con.getExpiration();

como esto

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();

Otros consejos

Debe crear una conexión a través url.connect() antes de poder leer / enviar datos. Esto es contrario a la intuición ya que el nombre openConnection() sugiere que lo hace, sino que ya los documentos dicen:

  

En general, la creación de una conexión a un URL es un proceso de múltiples pasos:

     
      
  1. openConnection()
  2.   
  3. manipular parámetros que afectan a la conexión con el recurso remoto.
  4.   
  5. connect ()
  6.   
  7. Interactuar con el recurso; consulta de los campos de cabecera y contenidos.
  8.   

Esta es la razón por getExpiration() hace que funcione:. Se llama connect() para usted

¿Cuál es el error que está recibiendo? Compruebe que la dirección es correcta. Si el servidor remoto se ejecuta en un puerto distinto de 80, luego tomar esto en consideración cuando se construye la URL.

puede también sugerir que usar HttpClient en lugar de URLConnection.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top