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

Liferay在服务器启动后自动执行一些代码[重复]

穆招
2023-03-14

我有一个带有控制器的Spring portlet,其结构如下。

@Controller
@RequestMapping("VIEW")
public class MyController {

    @RenderMapping
    public String defaultView() {
        // some scheduling code
        return "view";
    }
}

这是我之前问题的变体,我没有得到任何答案。

我们有时会重启服务器。我们希望避免外部人员再次手动执行调度。由于它目前是一个portlet,因此有必要呈现视图,以便执行此代码。有没有办法在liferay服务器启动后立即自动执行此调度代码?

共有1个答案

韩瀚
2023-03-14

Liferay启动时会触发应用程序启动事件。

事件由自定义操作处理。示例:

public class MyAction extends SimpleAction {
    @Override
    public void run(String[] companyIds) throws ActionException {
        // run, run
    }
}

该操作通常包含在钩子插件中。钩子插件可以部署为单独的应用程序(即。单独的. war文件),但它也可以是portlet应用程序的一部分。

要实现钩子,您需要:

1) 在自定义属性文件中注册操作——比如说portal hocked。属性(对于Maven项目,文件将位于src/main/resources):

#
# Application startup event that runs once for every web site instance of
# the portal that initializes.
#
application.startup.events=com.test.MyAction

2) 创建钩子描述符-liferay钩子。xml位于WEB-INF文件夹中(可以与portlet描述符并排放置,即portlet.xmlliferay portlet.xml):

<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">

<hook>
    <portal-properties>portal-hooked.properties</portal-properties>
</hook>

 类似资料:
  • 问题内容: 我注意到,在一些服务器上重新启动/关闭后,SQL Agent不会自动启动(SQL Server启动正常)。该服务设置为在Windows中自动启动。当我们手动启动SQL代理时,它会正常启动。 问题答案: 在以下路径中添加Windows级用户: 单击开始-运行 -Secpol.msc 转到: 本地策略-用户权限分配 确保您在其下运行SQL Agent Service的用户帐户具有以下分配:

  • 问题内容: 我使用 GitHub Electron 使用Web技术创建桌面应用程序。 我正在用作服务器,我的问题是我不知道如何仅在启动电子应用程序时运行文件。 我想打包我的应用程序以进行 分发, 以便 无需命令行 即可运行 服务器。 问题答案: 只需简单的在你的主文件的文件(例如): 在文件中,您可以拥有:

  • 我有一个非常简单的qukus微服务,它使用小型响应消息(kafka)。有时我的kafka代理会崩溃,我得到以下日志: 重新启动代理后,我必须手动重新启动我的微服务。是否有可能增加微服务的功能,以便在不进行任何手动操作的情况下重新汇总新传入的消息? 谢谢你!

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

  • 问题内容: 我正在编写一个Django中间件类,该类只想在启动时执行一次,以初始化一些其他人工代码。我遵循了sdolan 在此处发布的非常好的解决方案,但是“ Hello”消息两次输出到终端。例如 在我的Django设置文件中,该类已包含在列表中。 但是当我使用runserver运行Django并请求页面时,我进入了终端 有什么想法为什么要打印两次“ Hello world”?谢谢。 问题答案:

  • 问题内容: 我有一个flask应用程序,目前正在以以下方式启动: 当我运行此脚本时,它通过打印成功执行: 但是它永远不会返回,如果我执行CTRL-C,服务器将停止。我正在尝试将其部署到生产环境中,并希望在后台运行此启动,只要服务器启动,进程就可以启动。 做这个的最好方式是什么? 问题答案: 可能是使其在后台运行的最简单方法。就是说,如果你要将其转入生产环境(如@LukasGraf所提到的那样,则不