Tengo dos aplicaciones web, por ejemplo, App1 y App2. Quiero llamar a un servlet que está en App2 desde un servlet en App1. Estoy usando URLConnection para esto. También puedo pasar parámetros al servlet en App2 y también puedo recibir respuesta del servlet como cadena. Pero quiero enviar objetos Java desde el servlet en App2 y recibirlos en servlet de App1. ¿Cómo lograr esto?comunicación entre servlets remotos
Respuesta
Depende.
Si esos webapplications funciona a físicamente el mismo servidor web en el mismo servletcontainer, a continuación, sólo configurarlo como un atributo de la petición y enviar la solicitud a la otra contexto:
request.setAttribute("name", object);
ServletContext app2 = getServletContext().getContext("app2");
app2.getRequestDispacher("servletUrl").forward(request, response);
El otro contexto será capaz de obtener el objeto de la siguiente manera:
Object object = request.getAttribute("name");
Esto solo requiere una configuración de servidor para que los contextos sean accesibles entre sí. Cómo hacer esto depende del servletcontainer. En Tomcat, por ejemplo, solo tiene que establecer el atributo crossContext
del elemento <Context>
de la aplicación web en true
.
<Context crossContext="true">
Luego estará disponible para otros contextos. Para otros servidores, consulte su documentación.
Si esos webapplications funciona a diferentes físicamente servidor web, entonces hay varias opciones:
Convertir a cadena y enviar como parámetro. En la recuperación, convierte de nuevo desde String. JSON es un buen formato para esto. Google Gson ofrece posibilidades de conversión entre objetos de Java de pleno valor y JSON y viceversa. Si está utilizando GET y el URI de solicitud es bastante largo, más de 2 KB, considere utilizar POST en lugar de GET, de lo contrario, el servidor podría truncar el URI. Pros: mejor servicio reutilizable. Contras: datos binarios difíciles de enviar.
Véase también:Converting JSON to Java.
envía una solicitud POST HTTP utilizando
multipart/form-data
URLConnection
o Apache HttpComponents Client según RFC2388 y procesarlo en el otro lado usando Apache Commons FileUpload. Pros: especificación estándar, es posible enviar datos binarios. Contras: más código.Véase también:How to use URLConnection.
Serialize el objeto de Java, lo escriben en bruto a la
URLConnection#getOutputStream()
usandoObjectOutputStream
y recuperarlo en bruto de laHttpServletRequest#getInputStream()
y unserialize usandoObjectInputStream
. Pros: fácil. Contras: no reutilizable, ajustado.Véase también:Object Streams y Lesson: Serialization.
Uso Serialization
En lugar de enviar HTML podrás enviar objetos arroyos.
Simplemente, tenga en cuenta que para agregar seguridad adicional, no desea que una fuente externa inyecte objetos envenenados en sus llamadas.
- 1. ¿Pasar mensajes entre MailboxProcessors remotos?
- 2. C# comunicación entre hilos
- 3. Comunicación entre aplicaciones Rails
- 4. Comunicación entre varios servidores
- 5. Backbone.js: comunicación entre vistas
- 6. comunicación entre programas python
- 7. Comunicación iframe entre dominios
- 8. Comunicación entre dos hilos
- 9. Servlets asincrónicos vs servlets síncronos
- 10. Comunicación entre dos dispositivos iOS
- 11. Recomendación de comunicación entre procesos
- 12. comunicación android entre dos aplicaciones
- 13. comunicación entre subprocesos en java
- 14. MVP ¿Comunicación entre los presentadores?
- 15. Comunicación entre SAP y C#
- 16. Comunicación entre procesos en Lua
- 17. comunicación entre dos aplicaciones flexibles
- 18. ¿Comunicación entre módulos con Prism?
- 19. Comunicación entre hilos en PySide
- 20. Comunicación entre scripts | Tres métodos
- 21. Comunicación entre componentes en javascript
- 22. Comunicación entre procesos en .NET
- 23. C# - WCF - comunicación entre procesos
- 24. comunicación entre procesos en python
- 25. Android: comunicación entre dos dispositivos
- 26. Comunicación entre Android y PC
- 27. ¿Es posible usar archivos como un canal de comunicación bidireccional entre dos procesos remotos (tipo de "sockets over files")?
- 28. MVVM: comunicación entre el modelo y ViewModels
- 29. Comunicación entre múltiples aplicaciones web usando SignalR
- 30. Comunicación entre procesos en c/C++