Liferay 6 на Glassfish 3.1 — проблема с использованием тегов liferay-ui в файлах jsp портлета

Мы видим эту проблему в нашей текущей настройке кластера Glassfish 3.1. Ниже приведены подробности проблемы. Мы используем версию Glassfish 3.1.

  • Мы запускаем Liferay 6.0.6
  • Liferay war развернут в кластере Glassfish и отлично работает на обоих узлах.
  • Та же самая война liferay отлично работает и на одном сервере Tomcat.
  • Когда мы развертываем наши пользовательские портлеты в кластере Glassfish, они начинают работать сразу после развертывания. (перед перезапуском кластера Glassfish)
  • Как только мы перезапускаем узлы кластера, то же самое приложение портлета перестает работать, жалуется и выдает прикрепленную ошибку.
  • Мои исследования до сих пор показывают, что java.lang.NoClassDefFoundError: com/liferay/portal/util/PropsValues ​​является частью файла portal-impl.jar, который является частью портала liferay и должен быть доступен для нашего портлета. Каким-то образом после перезагрузки файлы jar загружаются по-другому, и тот же файл jar недоступен портлету.
  • Мы также попробовали установку Glassfish 3.1 Bundled liferay 6.1 и обнаружили ту же проблему.
  • Как было предложено на форумах liferay, мы поместили portal-service.jar и portlet.jar в каталог [glassfish home]/lib.
  • когда мы выполняем lsof -p pid в процессе экземпляра узла Glassfish, он показывает, что требуемый файл jar открыт этим процессом. Не уверен, почему это недоступно для нашего приложения.

Я был бы признателен за любую помощь или указатели для решения/исследования этой проблемы.

java.lang.NoClassDefFoundError: com/liferay/portal/util/PropsValues
    at org.apache.jsp.html.taglib.ui.search_005fiterator.page_jsp._jspService(page_jsp.java from :500)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:68)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)        at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:534)        at com.liferay.taglib.util.IncludeTag.include(IncludeTag.java:323)
    at com.liferay.taglib.util.IncludeTag._doInclude(IncludeTag.java:418)
    at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:92)

Это связанная тема на форуме liferay, написанная мной, но на самом деле я не получил ни от кого ответа. [Та же проблема размещена на форуме liferay]

Я также попытался поместить portal-impl.jar в мой каталог portlet/WEB-INF/lib (что не рекомендуется), и мне это не удалось, так как это требует, чтобы я также добавил в него все другие зависимые jar-файлы.

Сейчас у меня заканчиваются варианты, и я думаю о реализации функции разбивки на страницы с использованием какой-либо другой сторонней библиотеки вместо использования тегов liferay.

Вот конкретный тег, который дает нам ошибку

        <liferay-ui:search-iterator />

Список jar-файлов в папке WEB-INF/lib моего портлета


    SiebelClientWS-0.0.1-SNAPSHOT.jar
    spring-asm-3.0.5.RELEASE.jar
    XmlSchema-1.4.7.jar
    spring-aspects-3.0.5.RELEASE.jar
    aspectjrt-1.6.11.jar
    spring-beans-3.0.5.RELEASE.jar
    aspectjweaver-1.6.11.jar    
    spring-context-3.0.5.RELEASE.jar
    axiom-api-1.2.11.jar
    spring-context-support-3.0.5.RELEASE.jar
    axiom-impl-1.2.11.jar
    spring-core-3.0.5.RELEASE.jar
    axis2-1.5.4.jar
    spring-expression-3.0.5.RELEASE.jar
    axis2-kernel-1.5.4.jar
    spring-jdbc-3.0.5.RELEASE.jar
    axis2-transport-http-1.5.4.jar
    spring-tx-3.0.5.RELEASE.jar
    axis2-transport-local-1.5.4.jar
    spring-web-3.0.5.RELEASE.jar
    c3p0-0.9.1.2.jar    
    spring-webmvc-3.0.5.RELEASE.jar
    commons-codec-1.4.jar
    spring-webmvc-portlet-3.0.5.RELEASE.jar
    commons-httpclient-3.1.jar
    util-bridges.jar
    commons-logging.jar
    util-java.jar
    flexjson-2.1.jar    
    util-taglib.jar
    httpcore-4.0.jar    
    woden-api-1.0M9.jar
    httpcore-nio-4.0-beta1.jar
    woden-impl-commons-1.0M9.jar
    log4j.jar
    woden-impl-dom-1.0M9.jar
    neethi-2.0.2.jar    
    wsdl4j-1.6.2.jar
    spring-aop-3.0.5.RELEASE.jar
    wss4j-1.6.2.jar


person Sachin Joshi    schedule 23.11.2011    source источник


Ответы (2)


Я изменился

/html/taglib/ui/search_paginator/page.jsp
/html/taglib/ui/search_iterator/page.jsp
/html/taglib/ui/page_iterator/start.jsp

и удалил вызовы PropsValues ​​и заменил их вызовами com.liferay.portal.kernel.util.PropsUtil и PropsKeys, и это избавило меня от ошибки.

Я отправил запрос на улучшение http://issues.liferay.com/browse/LPS-30660

person user1766563    schedule 22.10.2012

com/liferay/portal/util/PropsValues ​​является частью файла portal-impl.jar, который является частью портала liferay и должен быть доступен для нашего портлета.

Это неправда, portal-impl.jar недоступен для ваших портлетов и не предназначен для этого. Вы НЕ ДОЛЖНЫ помещать его в свой WEB-INF/lib. Эта банка доступна и должна быть доступна только для Liferay (приложение Liferay).

Можете ли вы показать содержимое (список банок) ваших (развернутых) портлетов WEB-INF/lib?

person Martin Gamulin    schedule 23.11.2011
comment
Спасибо за ваш быстрый ответ, вот список банок, которые у меня есть в моем каталоге WEB-INF/lib. - person Sachin Joshi; 23.11.2011
comment
Извините, но я не вижу списка. Можете ли вы обновить свой вопрос с ним? - person Martin Gamulin; 23.11.2011
comment
Извините, были проблемы с правками, мне потребовалось некоторое время, чтобы обновить это. сейчас все в порядке. - person Sachin Joshi; 23.11.2011
comment
Кстати, тег search-iterator использует класс из portal-impl.jar, и это заставляет меня думать, что его нужно сделать доступным. - person Sachin Joshi; 23.11.2011
comment
Не уверен, что понял ваш вопрос? Вы имеете в виду значение переменной env CLASSPATH? - person Sachin Joshi; 23.11.2011
comment
Я не устанавливаю путь к классам env явно. Glassfish использует путь к классам по умолчанию, который он использует. - person Sachin Joshi; 23.11.2011