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