小编Raf*_*hes的帖子

在appengine初始化时禁用TLD扫描

此主题类似于:在谷歌应用引擎(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秒,我们需要做任何事情来减少它.

java google-app-engine jetty taglib appengine-maven-plugin

9
推荐指数
1
解决办法
1122
查看次数

Hazelcast预定工作(Quartz支持?)

我知道这对兵马俑来说是不公平的,但有没有人试图使用Hazelcast来在集群环境中使用预定的工作?

我可以成像的最简单的实现是以下架构:

  1. 全局Hazelcast锁定,用于确保只有一台服务器启动Quartz配置.
  2. 将实际任务作为DistributedTask运行.(这可以在以后完成,目前繁重的计划任务需要负责触发DistributedTask)
  3. 一旦持有锁的服务器关闭,另一台服务器就会获得锁.

我相信对于那些已经拥有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扩展:

https://github.com/mufumbo/quartz-hazelcast/blob/master/src/main/java/com/mufumbo/server/scheduler/hazelcast/HazelcastRAMJobStore.java

这是Spring SchedulerFactoryBean扩展:

https://github.com/mufumbo/quartz-hazelcast/blob/master/src/main/java/com/mufumbo/server/scheduler/hazelcast/SchedulerFactoryBean.java

java spring terracotta quartz-scheduler hazelcast

7
推荐指数
1
解决办法
5684
查看次数