1) Когда два приложения Spring-Boot запускаются на одном и том же коте, вы обычно сталкиваетесь с проблемой сбоя создания экземпляра источника данных, поскольку экземпляр с таким именем уже существует. Это исключение, которое вы описали в своем вопросе.
Эту проблему можно решить, добавив уникальное имя в каждое приложение Spring-Boot, например, в
application.yml
spring:
application:
name: application-name-1
jmx:
default-domain: application-name-1
2) Предоставление внешней конфигурации для каждого приложения Spring-Boot может быть выполнено с помощью конфигураций контекста tomcat для каждого приложения в отдельности. Предполагая, что все приложения развернуты как .war
, например app1.war
, app2.war
нам нужно настроить контекст для обоих приложений следующим образом:
создайте следующие файлы (и каталоги, если они отсутствуют)
tomcat-base-dir
/conf
/catalina
/localhost #must be the same as specified in the Host tag in the server.xml
app1.xml #must have the same name as the .war application file
app2.xml
Содержимое для app1.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- docBase must contain be the name of the application to be configured -->
<Context docBase="app1.war">
<Parameter name="spring.config.location" value="${catalina.base}/conf/app1.yml" />
</Context>
Это настроит приложение app1.war
на использование файла app1.yml
для конфигурации. Сделайте то же самое для app2. Фактический файл конфигурации app1.yml
может быть расположен по любому пути, указанному в значении.