У меня есть веб-приложение Java, усиливающее JPA. Экземпляр базы данных указан в persistence.xml
файл с помощью jta-data-source
тег.
Я хотел бы развернуть вторую копию веб-приложения на том же (glassfish) сервер, но указал на другой экземпляр базы данных.
Что лучший способ состоит в том, чтобы достигнуть этого? Я думаю идеально, я хотел бы поместить a persistence.xml
файл переопределения за пределами войны (где-нибудь на пути к классу?). Я не абсолютно уверен, куда поместить его или как определить его способом, что это не было бы confilt с моим другим экземпляром. Я вижу, что мы размещаем горстку экземпляров этим способом (SaaS), и я хотел бы, чтобы конфигурация была вне развернутой войны так, чтобы это не становилось проблемой обслуживания. Совместное использование экземпляра базы данных между клиентами не является опцией из соображений безопасности.
Я уверен, что это не уникальная проблема нашей группе. Каковы лучшие практики, или другие решений используют для решения этой проблемы?
Полагаю, вы уже меняете копию и в других вещах? (например, имя файла уха)
Если вы используете программное обеспечение для сборки, такое как ant или maven, вы можете использовать заполнитель внутри persistence.xml и создать другую «копию», просто используя другие параметры сборки.
например. с maven
mvn clean install -DmyDatabaseName = db / somedb
Я бы упаковал две версии веб-приложения и объявил конкретный источник данных в элементе jta-data-source
их соответствующего persistence.xml
(я не думаю, что вы можете экстернализируйте этот файл, ожидается, что он будет в WEB-INF / classes / META-INF / persistence.xml
)