Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

562
Vistas
Cómo registrar beans que pueden ser compartidos por múltiples WAR (Spring boot + Tomcat)

Estoy desarrollando una aplicación con Spring boot e implementando múltiples WAR en un tomcat externo. Quiero registrar un bean compartible con estos WAR cuando se inicie Tomcat.

Yo uso: Java8, Spring boot (2.5.5) y Tomcat9

Bean quiero ser compartido por aplicaciones:

 public class TestData { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }

SampleApp (hay varias aplicaciones que conectan automáticamente una instancia de TestData de la misma manera):

 @SpringBootApplication @RestController public class App extends SpringBootServletInitializer { @Autowired TestData testData; public static void main(String[] args) { SpringApplication.run(App.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(App.class); } @RequestMapping(value = "SampleApp1", method = RequestMethod.GET) public String getUsername() { return testData.getUsername(); } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Creo que su pregunta es sobre compartir los datos de un Bean único entre diferentes contenedores de aplicaciones implementados en el mismo servidor web.

Esto no es posible por razones de seguridad. Cada aplicación implementada tiene su propio cargador de clases y, por lo tanto, no puede acceder fácilmente a los beans que residen en la memoria de los otros contenedores.

Le sugiero que agregue un microservicio al que acceden las diferentes aplicaciones implementadas y lo use en su lugar. Se puede acceder fácilmente a través de, por ejemplo, OpenFeign como cliente y casi parece un frijol con getters y setters si se hace correctamente.

over 4 years ago · Santiago Trujillo Denunciar

0

Hay varios enfoques para su problema, resolviéndolo en diferentes niveles.

  1. Cree una biblioteca compartida con las cosas necesarias e instálela en el servidor Tomcat. "Instalar" normalmente significa poner los archivos jar ensamblados en el directorio $CATALINA_HOME/lib o similar. Class Loader HOW-TO puede brindarle más detalles. No estoy seguro de cómo funciona con instancias compartidas de clases, pero definitivamente es posible compartir clases (fábricas, por ejemplo) y configuraciones a través de una biblioteca compartida. Con la configuración compartida y las fábricas, al menos puede producir beans idénticos (no necesariamente iguales , pero parece suficiente para su caso).

  2. Defina un recurso JNDI compartido entre todas las aplicaciones. Por supuesto, esto requiere que Tomcat pueda acceder a su clase, por lo que primero debe pasar por la opción 1. De esta manera, puede tener una instancia "publicada" de una clase compartida entre todas las aplicaciones. Los detalles se pueden encontrar en JNDI Resources HOW-TO . Con este enfoque, puede inyectar un recurso publicado con la anotación @Resource .

  3. Cree un microservicio (como sugiere una de las otras respuestas) que pueda proporcionarle datos y funciones y acceder a ellos desde su aplicación. Esto le brinda la máxima flexibilidad, pero también aporta complejidad que requiere una comunicación real con el microservicio.

Obviamente, las opciones 1 y 2 requieren acceso directo a la configuración del servidor.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda