2016-04-27 4 views
0

Я создаю набор служб REST и развертываю каждую службу в отдельный файл WAR. Поскольку каждая из этих служб использует ту же самую конфигурацию сохранения, я поместил мой файл persistence.xml в файл jar (путь файла persistence.xml в банке все еще/META-INF).Как я могу заставить Websphere найти persistence.xml в файле jar, а не META-INF?

При работе с использованием TomEE (1.7) это работает отлично. Однако, когда я пытаюсь сделать то же самое с WebSphere (8.5.5.x), мои единицы сохранения не загружаются. В журнале WebSphere, я получаю ошибку, которая выглядит как:

[4/27/16 8:54:21:653 EDT] 00000080 JPAApplInfo E CWWJP0029E: The server cannot find the MRO_PU_JTA persistence unit in the Customer_WAR.war module and the DS_APP_EAR application. [4/27/16 8:54:21:654 EDT] 00000080 InjectionBind E CWNEN0035E: The ds.services.helper.AbstractServiceHelper/em reference of type javax.persistence.EntityManager for the component in the Customer_WAR.war module of the DS_APP_EAR application cannot be resolved. [4/27/16 8:54:21:657 EDT] 00000080 ResourceInjec E CWOWB0102E: A JCDI error has occurred: The ds.services.helper.AbstractServiceHelper/em reference of type javax.persistence.EntityManager for the null component in the Customer_WAR.war module of the DS_APP_EAR application cannot be resolved.

Когда я копирую файл persistence.xml из моей фляги файла в локальных войнах META-INF, то эта ошибка уходит, и все работает отлично , Поскольку у меня есть тонна услуг для развертывания таким образом, я не хочу делать копии persistence.xml для каждого файла WAR.

Есть ли способ заставить WebSphere найти файл persistence.xml? Может быть, некоторые настройки в WebSphere, которые я не смог найти?

Спасибо.

+0

Возможный дубликат [Совместное использование единицы персистентности по компонентам в .ear-файле] (http://stackoverflow.com/questions/4073635/sharing-a-persistence-unit-across-components-in-a-ear- файл) –

ответ

1

Ok, так что кажется, что это дубликат: Sharing a persistence unit across components in a .ear file

Глядя на ответ на этот вопрос Pascal Thivent, становится довольно очевидно, что проблема заключается в: Для того, чтобы получить эту работу , файл jar, содержащий файл persistence.xml , должен содержать в каталоге/lib EAR, который развертывается в WebSphere. По-видимому, способ, которым он работает, заключается в том, что EAR разрешает файл persistence.xml, и когда каждый WAR-файл пытается внедрить диспетчер сущностей, он ссылается на EAR для этого. Это контрастирует с TomEE (который развертывается без файла EAR). В этом случае зависимость разрешается загрузчиком классов файлов WAR, поэтому достаточно иметь файл jar в classpath WAR.