У меня есть несколько портлетов, которые хорошо работают после горячего развертывания, но не работают после перезапуска Liferay (автоматическое развертывание).Единственный способ заставить их работать снова - это перестроить и выполнить другое горячее развертывание.
У меня есть 3 разных портлета spring-mvc (org.springframework.web.portlet.DispatcherPortlet).Самый простой из 3 не имеет проблем при перезапуске, в то время как другие 2 не работают.Все три созданы из базового проекта, сгенерированного с помощью Eclipse-LiferayIDE -> новый модуль liferay Spring-mvc-portlet.
Их web.xml, portlet.xml, liferay-portlet.xml, liferay-plugin-package.Свойства, portlet-application-context.xml и spring / application-context.xml, PortletViewController.java, все файлы идентичны, за исключением изменений имени.
Мое лучшее предположение, что это своего рода проблема загрузки класса.
Я сравнил зависимости всех 3.
Working Fail1 Fail2
Dependency Version Scope Exclusions Version Scope Exclusions Version Scope Exclusions
org.springframework.spring-webmvc-portlet 4.1.9.RELEASE compile -- 4.1.9.RELEASE compile -- 4.1.9.RELEASE compile --
com.liferay.portal.com.liferay.portal.kernel 2.46.1 provided -- 2.46.1 provided -- 2.46.1 provided --
javax.portlet.portlet-api 3.0.0 provided -- 3.0.0 provided -- 3.0.0 provided --
javax.servlet.javax.servlet-api 3.1.0 provided -- 3.1.0 provided -- 3.1.0 provided --
org.osgi.org.osgi.service.component.annotations 1.3.0 provided -- 1.3.0 provided -- 1.3.0 provided --
org.slf4j.slf4j-log4j12 1.7.22 provided -- 1.7.22 provided -- 1.7.22 provided --
commons-lang.commons-lang -- -- -- 2.6 compile -- -- -- --
com.liferay.portal.com.liferay.util.taglib -- -- -- 2.8.0 compile -- 2.8.0 compile --
javax.servlet.javax.servlet.jsp-api -- -- -- 2.3.1 provided -- 2.3.1 provided --
oracle.ojdbc6 -- -- -- 11.2.0.3 provided -- 11.2.0.3 provided --
org.glassfish.web.jstl-impl -- -- -- 1.2 provided jsp-api,servlet-api 1.2 provided jsp-api,servlet-api
org.hibernate.hibernate-core -- -- -- 4.1.3.Final compile -- -- -- --
org.codehaus.jackson.jackson-mapper-asl -- -- -- -- 1.9.13 compile --
Я подозреваю, что проблема связана с одной из перекрывающихся зависимостей между двумя сбойными портлетами.
com.liferay.portal.com.liferay.util.taglib
javax.servlet.javax.servlet.jsp-api
oracle.ojdbc6
org.glassfish.web.jstl-impl
Есть идеи, если эти зависимости могут вызвать проблемы?
Вот трассировка стека для сгенерированной ошибки.Во время первоначального автоматического развертывания ошибок нет, только после того, как я перешел на страницу, где используется портлет.
15:15:29,583 ERROR [ajp-nio-8009-exec-6][DispatcherPortlet:573] Could not complete request
org.springframework.web.portlet.NoHandlerFoundException: No handler found for portlet request: mode 'view', phase 'RENDER_PHASE', parameters map[[empty]]
at org.springframework.web.portlet.DispatcherPortlet.noHandlerFound(DispatcherPortlet.java:1031)
at org.springframework.web.portlet.DispatcherPortlet.doRenderService(DispatcherPortlet.java:730)
at org.springframework.web.portlet.FrameworkPortlet.processRequest(FrameworkPortlet.java:536)
at org.springframework.web.portlet.FrameworkPortlet.doDispatch(FrameworkPortlet.java:483)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:262)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:57)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at com.liferay.portal.osgi.web.wab.extender.internal.adapter.ServletExceptionAdapter.service(ServletExceptionAdapter.java:76)
at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153)
at org.eclipse.equinox.http.servlet.internal.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:50)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:119)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:99)
at com.liferay.portal.osgi.web.wab.extender.internal.adapter.FilterExceptionAdapter.doFilter(FilterExceptionAdapter.java:46)
at org.eclipse.equinox.http.servlet.internal.registration.FilterRegistration.doFilter(FilterRegistration.java:121)
at org.eclipse.equinox.http.servlet.internal.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:70)
at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:117)
at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48)
at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:531)
at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:606)
at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:392)
at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.render(MonitoringInvokerPortlet.java:265)
at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1584)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at sun.reflect.GeneratedMethodAccessor671.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:286)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:283)
at java.security.AccessController.doPrivileged(Native Method)
.....
Я сократил трассировку, чтобы соответствовать ограничению символов.
Установка Liferay: комплект Tomcat 7 Liferay (liferay-ce-portal-7.0-ga5)