[原创]elasticjob-lite-console与springmvc完美集成

本文介绍了如何在已有SpringMVC工程中集成ElasticJob-Lite-Console,避免了额外的维护成本,并利用现有系统的权限管理。通过SpringMVC统一入口,将/api请求转发到Jersey Servlet,同时配置静态资源映射,实现无缝集成,无需修改ElasticJob-Lite-Console源码。
摘要由CSDN通过智能技术生成

[原创]elasticjob-lite-console与springmvc完美集成

背景

随着分布式调度项目ElasticJob正式迁入Apache仓库,越来越多的人开始使用ElasticJob,ElasticJob作为一个分布式调度解决方案,提供分布式任务的分片,弹性伸缩,全自动发现,基于时间驱动、数据驱动、常驻任务和临时任务的多任务类型,任务聚合和动态调配资源,故障检测、自动修复,失效转移和重试,完善的运维平台和管理工具,以及对云原生的良好支持等功能特性,可以全面满足企业对于任务管理和批量作业的全面调度处理能力。

Elastic-Job-Lite(https://github.com/apache/shardingsphere-elastic-job-lite)定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务,外部依赖仅Zookeeper。备受个人企业的青睐。其运维平台Elastic-Job-Lite-Console在使用必不可少。本文总结针对elasticjob-lite-console运维平台的使用或集成主要由以下2种方式。本文以版本2.1.5为例说明

  1. 直接使用官网提供的方式,使用源码打包,生成elastic-job-lite-console-2.1.5.tar.gz。

    解压elastic-job-lite-console-2.1.5.tar.gz ,

    elastic-job-lite-console-2.1.5\bin目录下是启动脚本

    elastic-job-lite-console-2.1.5\conf目前下是启动脚本,可以修改auth.properties中配置的默认用户名和密码

    运行elastic-job-lite-console-2.1.5\bin下的start 脚本即可。

    运行elastic-job-lite-console\bin\start.sh本质上是 启动了一个内嵌的jetty 容器。容器内部添加如下个filter、servlet。

    GlobalConfigurationFilter:设置当前session 选中的zk注册中心信息。关于zk的配置都在xml (user.home/.elastic-job-console/Configurations.xml)

    WwwAuthFilter:用户信息鉴权

    DefaultServlet:主要加载页面静态资源如 图片字体css html 等

    ServletContainer:jersey servlet,主要是rest请求,请求 /api 开头。对应的 /api 实现都在 elastic-job-lite-lifecycle中。主要是基于zk 的操作。

  2. 在自己的工程中,基于elastic-job-lite-lifecycle api实现进行调整,自己编写一套 rest接口。使用原来的页面 ,或自己搞一套管理页面。

这里重点介绍下本文的集成方式

由于公司项目中已有基于spring mvc 的工程,考虑工程太多不容器维护,另一方面考虑到权限的管控基于已有的系统进行管理,所以打算在现有的工程中直接集成运维平台(并不是说单独部署运维平台不好,每个人的情况不一样)。

集成思想:

请求统一交由springmvc 进行入口管理(包含原来的业务和运维平台的rest请求),然后springmvc 把前缀是 /api 的请求(即运维平台的ajax请求)内部转发中 jersey servlet 上(通过使用ServletWrappingController将jersey对应的servlet:com.sun.jersey.spi.container.servlet.ServletContainer (注:考虑到servletpath问题,这里使用的jersey servlet是org.codehaus.enunciate.modules.jersey.EnunciateJerseyServletContainer)包装为 springmvc Controller)。同时对应的静态资源也添加上映射。

最终效果,不修改原来源码一行代码,仅仅通过配置即可完成集成。

maven依赖:(注意排查 jetty相关的包)

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${spring-version}</version>
</dependency>

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>com.dangdang</groupId>
  <artifactId>elastic-job-lite-spring
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值