permissions - 当我将 portlet.properties 文件添加到 portlet 时,为什么会收到 HotDeployException? (Liferay 门户开发)

标签 permissions liferay portlet

我正在尝试配置 session 注册 portlet 的权限。我已将 portlet.properties 文件添加到 portlet 的 docroot/WEB-INF/src 目录中。添加以下行会导致异常:

resource.actions.configs=resource-actions/default.xml

default.xml 如下所示:

<?xml version="1.0"?>
<!DOCTYPE resource-action-mapping PUBLIC "-//Liferay//DTD Resource Action Mapping 6.1.0//EN" "http://www.liferay.com/dtd/liferay-resource-action-mapping_6_1_0.dtd">

 <resource-action-mapping>
   <resource file="resource-actions/meetingsignup.xml" />
 </resource-action-mapping>

meetingsingup.xml 如下所示:

<?xml version="1.0"?>
<resource-action-mapping>
    <portlet-resource>
        <portlet-name>meeting_signup</portlet-name>
        <permissions>
            <supports>
                <action-key>CREATE_MEETING</action-key>
                <action-key>VIEW</action-key>
            </supports>
            <community-defaults>
                <action-key>VIEW</action-key>
                <action-key>CREATE_MEETING</action-key>
            </community-defaults>
            <guest-defaults>
                <action-key>VIEW</action-key>
                <action-key>CREATE_MEETING</action-key>
            </guest-defaults>
            <user-defaults>
                <action-key>VIEW</action-key>
                <action-key>CREATE_MEETING</action-key>
            </user-defaults>
        </permissions>
    </portlet-resource>
    <model-resource>
        <model-name>edu.pointloma.liferay.portlet.service.MeetingSignUp.model.Event</model-name>
        <portlet-ref>
            <portlet-name>meeting_signup</portlet-name>
        </portlet-ref>
        <permissions>
            <supports>
                <action-key>REGISTER</action-key>
                <action-key>VIEW_REPORT</action-key>
                <action-key>EDIT</action-key>
                <action-key>DELETE</action-key>
            </supports>
            <community-defaults>
                <action-key>REGISTER</action-key>
            </community-defaults>
            <guest-defaults>
                <action-key>REGISTER</action-key>
            </guest-defaults>
            <user-defaults>
                <action-key>REGISTER</action-key>
            </user-defaults>
            <power-user-defaults>
                <action-key>REGISTER</action-key>
            </power-user-defaults>
        </permissions>
    </model-resource>
</resource-action-mapping>

即当我部署 portlet 时,日志写道:

12:36:07,035 ERROR [HotDeployUtil:112]com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for meeting_sign-up-portlet
com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for meeting_sign-up-portlet
    at com.liferay.portal.kernel.deploy.hot.BaseHotDeployListener.throwHotDeployException(BaseHotDeployListener.java:45)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:105)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._doFireDeployEvent(HotDeployUtil.java:109)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:183)
    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:38)
    at com.liferay.portal.kernel.servlet.PortletContextListener.doPortalInit(PortletContextListener.java:99)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42)
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:61)
    at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:51)
    at com.liferay.portal.kernel.util.BasePortalLifecycle.registerPortalLifecycle(BasePortalLifecycle.java:50)
    at com.liferay.portal.kernel.servlet.PortletContextListener.contextInitialized(PortletContextListener.java:55)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1244)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1342)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
    at com.liferay.portal.security.permission.ResourceActionsUtil._readActionKeys(ResourceActionsUtil.java:942)
    at com.liferay.portal.security.permission.ResourceActionsUtil._readSupportsActions(ResourceActionsUtil.java:1212)
    at com.liferay.portal.security.permission.ResourceActionsUtil._readPortletResource(ResourceActionsUtil.java:1106)
    at com.liferay.portal.security.permission.ResourceActionsUtil._read(ResourceActionsUtil.java:921)
    at com.liferay.portal.security.permission.ResourceActionsUtil._read(ResourceActionsUtil.java:909)
    at com.liferay.portal.security.permission.ResourceActionsUtil.read(ResourceActionsUtil.java:412)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.processPortletProperties(PortletHotDeployListener.java:603)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:313)
    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:102)
    ... 20 more

为什么会发生这种异常,如何消除它?我已经在网上搜索过答案,但找不到。

最佳答案

  1. 尝试删除第一个斜杠:resource.actions.configs=resource-actions/default.xml
  2. 仔细检查default.xml是否存在,并且它位于名为resource-actions的文件夹中,并且该文件夹与一起位于WEB-INF/src文件夹下>portlet.properties
  3. 打开default.xml并确保其内部结构符合Liferay Resource Mapping DTD (上一个链接适用于 Liferay 6.1)

关于permissions - 当我将 portlet.properties 文件添加到 portlet 时,为什么会收到 HotDeployException? (Liferay 门户开发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13368482/

相关文章:

javascript - 如何检查 Chrome 移动浏览器中是否授予/阻止了增强现实权限?

java - 将变量传递给jsp

liferay - Portlet 大小处理

java - 如何在 Websphere Portal 上显示来自 Struts portlet 的 Excel 内容

javascript - 如何使用 JavaScript 检测 JSP 是否加载到 PORTLET 或浏览器中?

python - 在 Django 中查看权限

android - 为什么我们需要 Android 中的权限树?

java - 单页 Web 应用程序是否适合 Portlet

c - 为什么 O_RDWR 在这段代码中没有给我写和读权限?

liferay - 如何在 Liferay Portlet 中通过结构名称获取 Web 内容?