Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

572
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda