【问题标题】:starting liferay开始生命射线
【发布时间】:2013-04-05 09:56:45
【问题描述】:

我在 liferay 工作。我们在项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将其部署在服务器中。战争文件在 liferay 部署文件夹中创建。但是当我启动服务器时,我没有任何登录选项。我没有得到任何 Liferay 特定的选项。我得到以下服务器日志

An error occurred at line: 117 in the jsp file: /html/portlet/login/login.jsp
com.alepo.hooks.ConcurrentLoginException cannot be resolved to a type
114:            <liferay-ui:error exception="<%= UserLockoutException.class %>" message="this-account-has-been-locked" />
115:            <liferay-ui:error exception="<%= UserPasswordException.class %>" message="please-enter-a-valid-password" />
116:            <liferay-ui:error exception="<%= UserScreenNameException.class %>" message="please-enter-a-valid-screen-name" />
117:            <liferay-ui:error exception="<%= com.alepo.hooks.ConcurrentLoginException.class %>" message="max-sessions-exceeded" />
118:
119:            <fieldset class="block-labels">
120:                    <div class="ctrl-holder">


Stacktrace:
        at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
        at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
        at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:451)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:328)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:307)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:565)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
        at com.liferay.taglib.util.IncludeTag.doEndTag(IncludeTag.java:67)
        at org.apache.jsp.html.common.themes.portlet_jsp._jspService(portlet_jsp.java:2669)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)

有什么想法吗?

【问题讨论】:

  • 你应该在你的问题中包含你的主题(.vm):)
  • 您是否在 lib 文件夹中包含服务 jar ?
  • com.alepo.hooks.ConcurrentLoginException - 这个类在你的钩子里吗?如果是,请尝试将其移至 ext 插件。

标签: liferay


【解决方案1】:

您的自定义登录挂钩似乎搞砸了,这不是主题的问题。

如果你仔细阅读错误:

在 jsp 文件中的第 117 行发生错误:/html/portlet/login/login.jsp com.alepo.hooks.ConcurrentLoginException 无法解析为类型

所以发生的事情是/html/portlet/login/login.jsp 无法找到可能驻留在您的钩子中的类ConcurrentLoginException,为什么会发生这种情况是因为liferay 处理类加载的方式。

简而言之,有 3 个类加载器:

  1. global(服务器库中的类,如 tomcat/ext/lib,如数据库驱动程序和 portal-service.jar):这些类可供所有插件上下文和 Liferay 上下文使用,并且可供所有插件上下文和 Liferay 上下文使用。
  2. Portal 类加载器ROOT/WEB-INF/lib 中的类,如著名的portal-impl.jar):这些类或实现仅适用于 Liferay 的上下文。
  3. Portlet / Plugin ClassLoader(加载我们插件的类):这些可用于我们的插件(portlet、钩子等),但不适用于 liferay 的模块/上下文。

所以在这个简短的速成课程之后,您可能已经知道问题出在哪里,但我仍然会尝试回答这个问题(为了积分:-)。

就是这样,因为 JSP-hook 修改了 liferay 的 JSP 并被复制到 ROOT 目录,它属于 liferay 的上下文,因此在插件(portlet 或钩子或主题)中创建的任何自定义类都将不可用到 JSP,所以在本例中为 login.jsp

所以要么不要在 JSP 中使用该类 ;-),要么将你的异常类(打包在一个 jar 中)放在全局路径中,即tomcat/ext/lib,以便login.jsp 可以使用它。

这是关于类似问题的verdict from Liferay Staff 和另一个answer,这可能有助于推动这个概念并在未来有所帮助。

【讨论】:

    【解决方案2】:

    看起来你还没有在你的/html/portlet/login/login.jsp 中导入ConcurrentLoginException

    假设ConcurrentLoginException 类在您的项目中,通过将下面的行放在login.jsp 的顶部,将该类导入login.jsp

    <%@page import="com.alepo.hooks.ConcurrentLoginException"%>
    

    如果您的项目中不存在 ConcurrentLoginException 类,请使用 Prakash 的方法,这是关于如何映射依赖项的绝佳答案。

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 2016-04-30
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多