此主题类似于:在谷歌应用引擎(Jetty)中禁用taglib扫描
该线程的作者接受了错误的答案.
我们试图通过taglib TLD类路径扫描减少我的实例的appengine启动时间.
我的申请有50mb的罐子.扫描tld需要20%的启动时间:
(图片来自Yourkit捕获的启动时间).您还可以将logger.properties级别设置为ALL,您将看到正在进行类路径扫描问题.
有没有办法在appengine上禁用它?上帝禁止我们与taglibs,JSP或类似的东西有任何关系!我们有一个非常光滑的速度+ spring-mvc容器.
同样,问题非常明确:appengine不尊重web.xml中的"org.mortbay.jetty.webapp.NoTLDJarPattern"配置
这件事正在扼杀我们的服务!我们的启动时间超过60秒,我们需要做任何事情来减少它.
我知道这对兵马俑来说是不公平的,但有没有人试图使用Hazelcast来在集群环境中使用预定的工作?
我可以成像的最简单的实现是以下架构:
我相信对于那些已经拥有Hazelcast的人来说,这将是一个很大的优势,因为他们不会因为一直打开兵马俑而需要整个开发环境的麻烦.
目前我编写了最简单的解决方案,只需要一个节点来负责执行Quartz触发器.由于我只使用类似Cron的触发器,如果我负责为繁重的触发器任务创建DistributedTasks,它可能是一个可接受的解决方案.
这是我的org.springframework.scheduling.quartz.SchedulerFactoryBean扩展,它实现了:
@Override
public void start() throws SchedulingException {
new Thread(new Runnable() {
@Override
public void run() {
final Lock lock = getLock();
lock.lock();
log.warn("This node is the master Quartz");
SchedulerFactoryBean.super.start();
}
}).start();
log.info("Starting..");
}
@Override
public void destroy() throws SchedulerException {
super.destroy();
getLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)
请告诉我,如果我错过了一些大事,如果可以的话.
我已将这两个文件添加到github.这是RAMJobStore扩展:
这是Spring SchedulerFactoryBean扩展: