2016-03-09 5 views
1

Я недавно перешел на Java EE (Wildfly), и я хотел бы найти EntityManager от JNDI. В настоящее время я определяю источник данных в своем standalone.xml и успешно извлекаю это через JNDI, но это дает мне только источник данных, а не диспетчер сущностей.Java EE Wildfly извлекает EntityManager из JNDI без persistence.xml

Я знаю, что я могу создать persistence.xml и использовать @PersistenceContext, но я действительно смотрю на способ избежать знания времени компиляции имени JNDI, поэтому вместо этого вы хотите выполнить поиск на основе информации о времени выполнения для извлечения соответствующий диспетчер сущностей.

ответ

1

К сожалению, блок персистентности, из которого производный менеджер сущностей не может быть определен портативным способом, не использует файл persistence.xml.

Если это важно для вас, пожалуйста, проголосуйте за JPA_SPEC-114 и дополнительно сообщите нам об этом.

Вы можете, более или менее, сделать блок непрерывности независимо от конечного имени JNDI, используя resource-ref. Ссылка на ресурс заставляет ваш код зависеть от механизма, специфичного для контейнера, для переключения, на который указывает resource-ref.

Альтернатива, с ее собственными недостатками, к сожалению, использует подход switchable data source. Затем вы можете определить источник данных с использованием фиксированного имени JNDI и ссылки из файла persistence.xml, а затем использовать любой способ, с помощью которого ваш источник данных с возможностью переключения использует внутренне, чтобы перейти к фактическому источнику данных. Это может быть либо непосредственно реализация источника данных (например, показана в ссылке), либо, возможно, выбор другого источника данных из JNDI (который эффективно выполняет то, что ссылается на ресурс, но затем использует ваш собственный механизм для переключения)

+0

Спасибо, это то, что мои исследования и попытки побудили меня поверить, что я просто надеялся, что у кого-то есть какой-то волшебный способ :) - Я мог бы использовать ref-ref, чтобы позволить какую-то косвенность. –

Смежные вопросы