Конфликт OC4J 10.1.3 и языка выражений (EL)

Я работаю над проектом, который в настоящее время переходит с Apache Tomcat 6 на OC4J (из-за спецификаций клиента).

Проблема в том, что мы получаем это:

08.02.2012 18:23:53.091 УВЕДОМЛЕНИЕ J2EE JSP-0008 Ошибка: исключение Oracle.classloader.util.AnnotatedNoClassDefFoundError:

  Class not found: javax.el.ELException

Classe dependente: oracle.jsp.parse.JspBeanInfo
         Carregador: oc4j:10.1.3
    Origem do Código: /C:/Users/cvgpb/Desktop/Oracle-OC4J/j2ee/home/lib/ojsp.jar
  Configuração: <code-source> in META-INF/boot.xml in C:\Users\cvgpb\Desktop\Oracle-OC4J\j2ee\home\oc4j.jar

Мы используем, как видите, OC4J 10.1.3. Почти каждая страница проекта использует EL... Единственная альтернатива - использовать скриптлеты, но это займет много времени.

Мы должны использовать EL и OC4J 10.1.3, иначе будет слишком дорого перестраивать все страницы. Как мне решить эту проблему?


person Breno Inojosa    schedule 08.02.2012    source источник


Ответы (1)


javax.el.ELException представлен в JSP/EL 2.1, который идет рука об руку вместе с Servlet 2.5, который является частью Java EE 5. Tomcat 6.0 — это контейнер, совместимый с Servlet 2.5.

Однако OC4J 10.1.3 является устаревшим контейнером J2EE 1.4, поддерживающим только Servlet 2.4.

Пока web.xml вашего веб-приложения объявлено соответствующим Servlet 2.4, весь код запрограммирован для API-интерфейсов Servlet 2.4 / JSP 2.0, /WEB-INF/lib не содержит библиотеки, специфичные для контейнера сервлетов, такие как копия jsp-api.jar из Tomcat 6. , и веб-приложение отлично работает на Tomcat 5.5 (который также является контейнером Servlet 2.4), то теоретически оно должно работать так же хорошо на OC4J 10.1.3.

Эта конкретная ошибка указывает на то, что у вас есть библиотеки в /WEB-INF/lib, которые либо скопированы из Tomcat 6, либо, в свою очередь, имеют зависимости от Servlet 2.5, такие как, например, JSF 2.0. Очистите /WEB-INF/lib и/или понизьте задействованные библиотеки до версий, совместимых с Servlet 2.4.

person BalusC    schedule 08.02.2012
comment
Спасибо за ответ. Теперь нам удается понизить версию библиотек =/ - person Breno Inojosa; 09.02.2012
comment
Пожалуйста. Другой вариант — обновить или заменить OC4J на совместимый с Servlet 2.5. Сервлет 2.4 действительно давно устарел. Я бы обсудил с администраторами серверов, что они в основном работают с устаревшим/мертвым программным обеспечением. - person BalusC; 09.02.2012