我们已经使用IBM Worklight一段时间了,我们已经遇到了以下问题。
当我们的服务器启动时,我们希望它运行一些初始代码来填充和更新数据库。这是一个每天运行一次的过程。但为了做到这一点,我们需要能够开始一个cron工作或类似的东西。
我们知道如何使用cron作业和类似的东西。但是我们没有管理的是在工作灯服务器启动后启动此cronjob。
总结一下我的问题:
一旦工作灯服务器启动,我们如何在worklight服务器上自动运行代码?
private void code(){
//Run this code once Worklight server is started
}
2014年3月7日的一些附加信息:
所以我尝试过ServletContextListener但没有成功。试图在记录器中打印一些东西,这样我就可以看到我的Importer类是否正在运行。 这是我用过的东西
Java文件:
public class Importer implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
logger.warning("running this shizzle :D");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
}
web.xml文件已添加并放回.war包中:
<listener>
<listener-class>com.ibm.nl.wwdw.server.connections.Importer</listener-class>
</listener>
控制台日志:
[2014-03-07 12:59:22] Worklight Server启动了 在localhost上成功:8080 [2014-03-07 12:59:22]
激活Worklight项目:mobile-app ... [2014-03-07 12:59:25] FWLSE2001I:检测到多个IP地址。使用192.168.75.3作为 Worklight Server的公共IP地址。你可以设置一个不同的 worklight.properties中的IP地址。 [2014-03-07 12:59:25] FWLSE3005I: 应用程序原始报告已禁用。 [2014-03-07 12:59:25] FWLST0010I:======启动项目服务器 移动应用项目,定制;工作灯 version = 5.0.5.20121130-0158 [2014-03-07 12:59:25]
激活完成。
答案 0 :(得分:0)
我会创建一个实现ServletContextListener的java类。 它有一个名为contextInitialized的方法,在servlet容器首次触发时触发。 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html
在生成后,您必须将上下文侦听器添加到web.xml:
<listener>
<listener-class>
com.yourcomp.project.ContextListenerClass
</listener-class>
</listener>