当前位置: 首页 > 知识库问答 >
问题:

Liferay 7.0 Portlet重启后无法正确部署

荀嘉熙
2023-03-14

我有许多Portlet在热部署后可以正常工作,但在重新启动Liferay(自动部署)后无法工作。我能让它们重新工作的唯一方法是重建并进行另一次热部署。

我有3个不同的spring mvc portlet(org.springframework.web.portlet.DispatcherPortlet)。其中最简单的3个在重启时没有问题,而其他2个则不工作。所有三个都是从使用Eclipse LiferayIDE生成的基础项目创建的-

他们的web.xml,portlet.xml,liferay-portlet.xml,liferay-plugin-package.properties,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  --

我怀疑问题在于两个失败的portlet之间的重叠依赖关系之一。

com.liferay.portal.com.liferay.util.taglib
javax.servlet.javax.servlet.jsp-api
oracle.ojdbc6
org.glassfish.web.jstl-impl

知道这些依赖关系是否会引发问题吗?

下面是生成的错误的堆栈跟踪。只有在我导航到使用portlet的页面之后,在初始自动部署期间才会出现错误。

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安装:Liferay 7 Tomcat捆绑包

共有1个答案

邵君植
2023-03-14

在本例中,通过完全删除这些依赖项,问题似乎已得到解决:

com.liferay.portal.com.liferay.util.taglib
org.glassfish.web.jstl-impl

我一直在从Liferay 6.0.6移植这些Portlet,一开始没有额外的依赖项,并根据需要逐个添加它们,所以在某个时刻,我相信我需要它们。希望我没有。

 类似资料:
  • 我在linux box上启动xampp时面临以下问题。我能够启动mysql和proFPD,但我不能卫星apache。它显示另一个网络服务器已经在运行。 XAMPP:启动Apache失败。XAMPP:另一个web服务器已在运行。XAMPP:启动MySQL已经在运行。XAMPP:启动ProFTPD已在运行。

  • 我的android应用程序没有正确构建和部署。当启动一个新实例时,它会将我的应用程序启动到我的物理移动设备上,并且我能够在Visual Studio中进行调试。但现在它不会将应用程序启动到移动设备,而且当我手动运行应用程序时,它也不会在Visual Studio中调试。这个项目有可移植的类,并且正在使用Xamarin.Forms。 我确实更改了对AndroidManifest.xml的构建操作。

  • 我们有一个Java应用程序,它使用Quartz来调度作业。我们使用的quartz版本是Quartz-2.2.1。quartz配置使用JDBC作业存储。 以下是系统中发生的事件序列: null 我的问题是,当quartz调度器启动时,数据库已经启动--那么为什么它会抱怨连接已经关闭?我知道它在内部使用c3p0连接池,应用程序在签出时不验证连接。c3p0连接池是否关闭quartz调度程序正在使用的连接

  • 服务器重启后无法启动Apache HTTPD。我们 /etc/httpd/conf/拥有功能。用户/组。因此,我们使用脚本来启动httpd.conf每次服务器重启时,我们都无法启动HTTPD。我们发现 /var/run/httpd在重启后被更改为apache/root。因此,脚本无法启动功能下的HTTPD。用户/组。 请帮帮我!!!

  • 我编写了一个类,其中有一个函数通过接受多个输入,但是运行结果证明它只接受第二个参数,就像接受第一个参数一样,下面是一个简化的代码: 并且输出,丢失: 到底是什么问题?我该怎么解决这个问题?

  • 问题内容: 我的日食没有启动,因为我的计算机有点死机了,所以我不得不强制重新启动它。当我不得不重新启动时,Eclipse是打开的,我相信这很可能是原因。我不知道该如何解决。每当我尝试打开它时,它都会告诉我检查工作区中的.log文件,并显示: http://paste.strictfp.com/26579 而且我不知道如何解决它。请帮忙? 问题答案: 您缺少 第125行的 类,您必须重新安装才能解决