Как переопределить имя JNDI источника данных JPA при развертывании на glassfish 3? - PullRequest
2 голосов
/ 15 февраля 2012

Я пытаюсь развернуть мое приложение JPA на 2 отдельных экземплярах в одном домене glassfish 3. Оба экземпляра будут искать источник данных, используя одно и то же имя JNDI , но я хочу, чтобы они находили разные источники данных.Я попытался определить 2 источника данных и связать их с разными целями, но DAS не позволяет 2 источникам данных использовать одно и то же имя JNDI, даже если они связаны с разными целями.

Я пытался использовать подстановку свойств, но это нене работает Кто-нибудь знает, как решить эту проблему? Маловероятно, что невозможно развернуть приложение дважды в одном домене.

1 Ответ

1 голос
/ 12 июня 2012

Имя JNDI - это адрес для конкретного объекта, и они должны быть уникальными.Наличие двух имен JNDI похоже на то, когда у вас есть 2 номера в вашем мобильном телефоне для «alex».Нет никакого способа узнать, по какому номеру вы набираете.

Что бы я сделал, что должно работать для любой реализации JPA, - это иметь два PU в вашем persistent.xml, один с источником данных JNDI, а другой длядругой источник данных JNDI.Это также имеет смысл, поскольку у вас могут не быть одинаковые бизнес-объекты в обоих источниках данных.

Затем, когда вы получите EntityManager, явно укажите, какой PU вы хотите.Вы можете установить это в файле конфигурации или решить его динамически другим способом.

entfactory = OpenJPAPersistence.createEntityManagerFactory( *persistentUnitName*, (String) null );

Надеюсь, это поможет -

-Alex

...