Liferay在服务器启动后自动执行一些代码

时间:2015-12-09 13:00:29

标签: java liferay

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

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

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

这是my previous question的变体,我没有得到任何答案。

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

1 个答案:

答案 0 :(得分:2)

Liferay启动时会触发

应用程序启动事件

该事件由自定义操作处理。样品:

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

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

要实现钩子,您需要:

1)在自定义属性文件中注册操作 - 让我们说portal-hooked.properties(对于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-hook.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>
相关问题