JSF в Jetty-равноденствие, не может найти классы Бина в других связках - PullRequest
0 голосов
/ 13 марта 2010

У меня проблемы с запуском JSF в среде OSGi. Я использую веб-контейнер Jetty и равноденствие для обеспечения функциональности OSGi. Структура моей заявки следующая: В первом пакете есть все библиотеки JSF, web.xml и config.xml. Это выглядит следующим образом:

bundle1
----src/main/java
-------de/package
----------Activator.java
----------JSFResolver.java
----src/main/resource
------ WebContent
----------META-INF
-------------face-config.xml
-------------web.xhtml
----------start.xhtml
-----------include.xhtml
----libs (containing all JSF required Jars)

Структура второго комплекта следующая:

bundle2
---src/main/java
------de/package
----------Bean.java
---src/main/resource
------META-INF
---------face-config.xml
------WebContent
---------index.xhtml

При запуске приложения равноденствия, bundle1 является основным комплектом, куда отправляются все запросы браузера. Во втором пакете файл index.xhtml может быть получен первым пакетом по запросу. index.xhtml в пакете 2 получает свои значения и свойства из «Bean.java» в комплекте 2. Проблема возникает, когда я запрашиваю «index.xhtml», класс Bean.java не найден. Я думаю, что это потому, что загрузчик классов в bundle1 не может найти его, он не знает об этом. Поэтому я хотел бы спросить, знает ли кто-нибудь, как решить эту проблему. Если да, пожалуйста, помогите мне, я испробовал все возможности, которые у меня были ..

Действительно ли возможно, чтобы JSF работал на нескольких пакетах, используя один и тот же FaceletsContex? Могу ли я иметь отдельные файлы Face-Config.xml в каждом пакете, которые могут быть подключены другие Face-Config.xml в других пакетах? Может кто-нибудь, пожалуйста, дайте мне решение. Пример кода поможет.

1 Ответ

0 голосов
/ 28 марта 2010

Если кто-то заинтересован в ответе, в этом случае файл face-config.xml бесполезен. Поэтому мне пришлось использовать файл plug-in.xml, чтобы зарегистрировать все мои bean-компоненты во всех проектах плагинов. Я создал точку расширения в основном подключаемом модуле, чтобы другие подключаемые модули могли регистрировать свои Бины как расширение. Мне пришлось переопределить управляемый класс JSF, чтобы он мог читать свойства компонента из точки расширения, а не из Face-config.xml. Поэтому во время выполнения приложение считывает все расширения, зарегистрированные в точке расширения managedBeans, а затем создает все необходимые экземпляры компонентов из всех подключаемых модулей. Поэтому ошибки больше не будет. Если кто-то хочет реализовать JSF в такой структуре, вы должны знать, что почти все функциональные возможности Face-config.xml должны быть перемещены в plug-in.xml плагинов, в том числе и правила навигации. , Нужно сделать много настроек, но в конце вы получите красивое модульное JSF-приложение, работающее в режиме равноденствия, без необходимости встраивать его в файл .WAR, что кажется очень выгодным.

...