На 7 я развернул свой EAR с единственной ВОЙНОЙ в нем. EAR classloading режим установлен на PARENT_LAST
, и ВОЙНА classloading режим также установлена на PARENT_LAST
. ВОЙНА /WEB-INF/lib
имеет RI Mojarra JSF 2 и Объединенные банки EL 2.1.
Несмотря на все это, когда приложение запускается, оно пытается загрузить некоторый материал MyFaces от встроенного MyFaces 1.2. Средство просмотра загрузчика класса для ВОЕННОГО загрузчика класса ясно показывает
"org.apache.myfaces.webapp. StartupServletContextListener", загружаемый при запуске из base_v7/plugins/org.apache.myfaces1_2.jar
Мальчик, это является сумасшедшим.. Много другого материала взято откуда-либо также и создает большую грязную путаницу классов:
"com/ibm/ws/classloader/CompoundClassLoader@116a116a" ранее инициировал загрузку для другого типа с именем "javax/el/ExpressionFactory" определенный загрузчиком "org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader@2a502a50"
У Вас есть какая-либо идея того, что могло бы идти не так, как надо в здесь?
Понятно...
Во-первых, приложение будет работать нормально без конфликта загрузчика классов на ExpressionFactory, если мы установим этот context-param в web.xml:
<context-param> <param-name>com.sun.faces.expressionFactory</param-name> <param-value>com.sun.el.ExpressionFactoryImpl</param-value> </context-param>
(http://ocpsoft.com/java/jsf2-java/jsf2-how-to-add-the-magic-of-el-el2-to-jsf/)
И по поводу MyFaces StartupServletContextListener... Я не знаю, приносит ли он какой-либо вред, даже если он загружается при запуске... по крайней мере, я не заметил никаких проблем с его присутствием до сих пор...