Я использую Websphere 8.5 и его внутренние фреймворки Java EE, Apache OpenWebBeans для DI и Apache MyFaces для просмотра. У меня также есть JAR с некоторыми bean-компонентами, аннотированными "@Named" (так что это управляемые bean-компоненты OpenWebBeans). Этот JAR находится в каталоге «WEB-INF/lib» моего веб-приложения и в пути к классам приложения.
Мне сказали, что я должен поместить файл «beans.xml» в каждый JAR-файл, который я хочу, чтобы реализация CDI находила и управляла bean-компонентами. Я так и сделал (есть файл "beans.xml" в папке "META-INF" приложения и в той же папке JAR), и все работает безупречно в Tomcat 7 (я могу получить доступ к своим bean-компонентам на страницах JSF, все вводится и решается без проблем и т. д.). Я запускаю Tomcat с JAR-файлами Apache Open Web Beans 1.2 и MyFaces 2.0 внутри приложения "WEB-INF/lib".
Теперь проблема: в Websphere с той же конфигурацией (без JAR-файлов фреймворка внутри «WEB-INF/lib» приложения, только JAR моего bean-компонента) я получаю NoClassDefFoundError, ссылаясь на класс JSF, «javax.faces.component. behavior.Behavior» каждый раз, когда я пытаюсь загрузить страницу (кстати, страница не загружается). Как ни странно, когда я удаляю все файлы «beans.xml» из приложения и из JAR, все работает с JSF, как и ожидалось (за исключением загрузки и управления bean-компонентами OpenWebBeans, конечно, поскольку «beans.xml» отсутствует).
Я везде искал эту проблему и не могу найти подсказки об этом. Я знаю, что этот класс доступен для веб-сферы, так как я искал JAR-файлы сервера и нашел его в «WEBSPHERE_INSTALL\plugins\javax.j2ee.jsf.jar» (а также потому, что без «beans.xml» этот класс найден и все работает правильно), но я понятия не имею, почему этот JAR не загружается, когда какой-либо файл "beans.xml" присутствует в загрузчике классов приложения. Может кто-нибудь помочь, пожалуйста?