2015-12-09 105 views
1

我有一个具有如下结构的控制器的Spring portlet。Liferay在服务器启动后自动执行一些代码

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

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

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

我们有时重新启动此服务器。我们希望避免外部人员的干预再次手动进行计划。由于它当前是一个portlet,因此必须呈现视图以便执行此代码。在liferay服务器启动后,是否有办法自动执行这个调度代码?

回答

2

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

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

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

该操作通常包含在挂钩插件中。一个hook插件可以作为一个单独的应用程序(即独立的.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)创建的描述符钩 - 在WEB-INFliferay-hook.xml(可以放置并排侧的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> 
+0

我应该在哪里创建MyAction类?我可以在同一个portlet中创建类吗? –

+0

检查我更新的答案。 –

相关问题