Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
a83c21a4
提交
a83c21a4
authored
4月 28, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、新增spring-boot类型执行器example项目;
2、升级jetty版本至9.2;
上级
aa7e5e56
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
349 行增加
和
15 行删除
+349
-15
README.md
README.md
+4
-2
pom.xml
pom.xml
+2
-1
pom.xml
xxl-job-core/pom.xml
+1
-1
JettyServer.java
...com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
+12
-11
pom.xml
xxl-job-executor-springboot-example/pom.xml
+102
-0
Application.java
...ample/src/main/java/com/xxl/job/executor/Application.java
+14
-0
XxlJobConfig.java
...n/java/com/xxl/job/executor/core/config/XxlJobConfig.java
+12
-0
IndexController.java
...ava/com/xxl/job/executor/mvc/handler/IndexController.java
+19
-0
DemoJobHandler.java
...m/xxl/job/executor/service/jobhandler/DemoJobHandler.java
+39
-0
application.properties
...ingboot-example/src/main/resources/application.properties
+2
-0
applicationcontext-xxl-job.xml
...example/src/main/resources/applicationcontext-xxl-job.xml
+60
-0
log4j.xml
...-executor-springboot-example/src/main/resources/log4j.xml
+51
-0
xxl-job-executor.properties
...ot-example/src/main/resources/xxl-job-executor.properties
+11
-0
XxlJobExecutorExampleBootApplicationTests.java
...cutor/test/XxlJobExecutorExampleBootApplicationTests.java
+20
-0
没有找到文件。
README.md
浏览文件 @
a83c21a4
...
...
@@ -99,9 +99,9 @@ XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是

### 1.5 环境
-
Servlet/JSP Spec:3.
0/2.2
-
Servlet/JSP Spec:3.
1/2.3
-
JDK:1.7+
-
Tomcat:
7+/Jetty8
+
-
Tomcat:
8.5.x+/Jetty9.2
+
-
Mysql:5.6+
-
Maven:3+
...
...
@@ -813,6 +813,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
#### 6.14 版本 V1.7.0 特性 (Coding)
-
1、脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
-
2、新增spring-boot类型执行器example项目;
-
3、升级jetty版本至9.2;
-
2、执行器移除GlueLoader依赖改为推送方式,GLUE源码加载不再依赖JDBC;
-
3、登陆拦截Redirect时获取项目名,解决非根据目录发布时跳转404问题;
...
...
pom.xml
浏览文件 @
a83c21a4
...
...
@@ -14,7 +14,8 @@
<module>
xxl-job-core
</module>
<module>
xxl-job-admin
</module>
<module>
xxl-job-executor-example
</module>
</modules>
<module>
xxl-job-executor-springboot-example
</module>
</modules>
<build>
<plugins>
...
...
xxl-job-core/pom.xml
浏览文件 @
a83c21a4
...
...
@@ -34,7 +34,7 @@
<dependency>
<groupId>
org.eclipse.jetty
</groupId>
<artifactId>
jetty-server
</artifactId>
<version>
8.2.0.v20160908
</version>
<version>
9.2.21.v20170120
</version>
</dependency>
<!-- slf4j -->
...
...
xxl-job-core/src/main/java/com/xxl/job/core/rpc/netcom/jetty/server/JettyServer.java
浏览文件 @
a83c21a4
...
...
@@ -5,8 +5,8 @@ import com.xxl.job.core.thread.ExecutorRegistryThread;
import
org.eclipse.jetty.server.Connector
;
import
org.eclipse.jetty.server.Handler
;
import
org.eclipse.jetty.server.Server
;
import
org.eclipse.jetty.server.ServerConnector
;
import
org.eclipse.jetty.server.handler.HandlerCollection
;
import
org.eclipse.jetty.server.nio.SelectChannelConnector
;
import
org.eclipse.jetty.util.thread.ExecutorThreadPool
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -24,21 +24,22 @@ public class JettyServer {
thread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
server
=
new
Server
();
server
.
setThreadPool
(
new
ExecutorThreadPool
(
200
,
200
,
30000
));
// 非阻塞
// connector
SelectChannelConnector
connector
=
new
SelectChannelConnector
();
// The Server
server
=
new
Server
(
new
ExecutorThreadPool
());
// 非阻塞
// HTTP connector
ServerConnector
connector
=
new
ServerConnector
(
server
);
connector
.
setPort
(
port
);
connector
.
setMaxIdleTime
(
30000
);
server
.
setConnectors
(
new
Connector
[]
{
connector
});
// handler
HandlerCollection
handlerc
=
new
HandlerCollection
();
server
.
setConnectors
(
new
Connector
[]{
connector
});
// Set a handler
HandlerCollection
handlerc
=
new
HandlerCollection
();
handlerc
.
setHandlers
(
new
Handler
[]{
new
JettyServerHandler
()});
server
.
setHandler
(
handlerc
);
try
{
// Start the server
server
.
start
();
logger
.
info
(
">>>>>>>>>>>> xxl-job jetty server start success at port:{}."
,
port
);
ExecutorRegistryThread
.
getInstance
().
start
(
port
,
ip
,
appName
,
registHelper
);
...
...
xxl-job-executor-springboot-example/pom.xml
0 → 100644
浏览文件 @
a83c21a4
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job
</artifactId>
<version>
1.7.0-SNAPSHOT
</version>
</parent>
<artifactId>
xxl-job-executor-springboot-example
</artifactId>
<packaging>
jar
</packaging>
<name>
xxl-job-executor-springboot-example
</name>
<description>
Example executor project for spring boot
</description>
<properties>
<xxl-job.version>
1.7.0-SNAPSHOT
</xxl-job.version>
<!--<spring-boot.version>1.5.3.RELEASE</spring-boot.version>-->
<spring-boot.version>
1.3.8.RELEASE
</spring-boot.version>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<project.reporting.outputEncoding>
UTF-8
</project.reporting.outputEncoding>
<java.version>
1.7
</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot (依赖管理:继承一些默认的依赖,工程需要依赖的jar包的管理,申明其他dependency的时候就不需要version) -->
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
${spring-boot.version}
</version>
<type>
pom
</type>
<scope>
import
</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<exclusions>
<exclusion>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-logging
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-log4j
</artifactId>
</dependency>
<!-- spring-boot-starter-web (提供了对web的支持,包含了spring webmvc和tomcat等web开发的特性) -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<!-- c3p0 -->
<dependency>
<groupId>
com.mchange
</groupId>
<artifactId>
c3p0
</artifactId>
<version>
0.9.5.2
</version>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
5.1.29
</version>
</dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<version>
${xxl-job.version}
</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- spring-boot-maven-plugin (提供了直接运行项目的插件:如果是通过parent方式继承spring-boot-starter-parent则不用此插件) -->
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/Application.java
0 → 100644
浏览文件 @
a83c21a4
package
com
.
xxl
.
job
.
executor
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
@SpringBootApplication
public
class
Application
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Application
.
class
,
args
);
}
}
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/core/config/XxlJobConfig.java
0 → 100644
浏览文件 @
a83c21a4
package
com
.
xxl
.
job
.
executor
.
core
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.ImportResource
;
@Configuration
@ImportResource
(
"classpath:applicationcontext-xxl-job.xml"
)
public
class
XxlJobConfig
{
}
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/mvc/handler/IndexController.java
0 → 100644
浏览文件 @
a83c21a4
package
com
.
xxl
.
job
.
executor
.
mvc
.
handler
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
@Controller
@EnableAutoConfiguration
public
class
IndexController
{
@RequestMapping
(
"/"
)
@ResponseBody
String
index
()
{
return
"xxl job running."
;
}
}
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java
0 → 100644
浏览文件 @
a83c21a4
package
com
.
xxl
.
job
.
executor
.
service
.
jobhandler
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHander
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
import
java.util.concurrent.TimeUnit
;
/**
* 任务Handler的一个Demo(Bean模式)
*
* 开发步骤:
* 1、继承 “IJobHandler” ;
* 2、装配到Spring,例如加 “@Service” 注解;
* 3、加 “@JobHander” 注解,注解value值为新增任务生成的JobKey的值;多个JobKey用逗号分割;
*
* @author xuxueli 2015-12-19 19:43:36
*/
@JobHander
(
value
=
"demoJobHandler"
)
@Service
public
class
DemoJobHandler
extends
IJobHandler
{
private
static
transient
Logger
logger
=
LoggerFactory
.
getLogger
(
DemoJobHandler
.
class
);
@Override
public
ReturnT
<
String
>
execute
(
String
...
params
)
throws
Exception
{
logger
.
info
(
"XXL-JOB, Hello World."
);
for
(
int
i
=
0
;
i
<
5
;
i
++)
{
logger
.
info
(
"beat at:{}"
,
i
);
TimeUnit
.
SECONDS
.
sleep
(
2
);
}
return
ReturnT
.
SUCCESS
;
}
}
xxl-job-executor-springboot-example/src/main/resources/application.properties
0 → 100644
浏览文件 @
a83c21a4
server.port
=
8081
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/resources/applicationcontext-xxl-job.xml
0 → 100644
浏览文件 @
a83c21a4
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context=
"http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>
<bean
id=
"propertyConfigurer"
class=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<property
name=
"fileEncoding"
value=
"utf-8"
/>
<property
name=
"locations"
>
<list>
<value>
classpath*:xxl-job-executor.properties
</value>
</list>
</property>
</bean>
<!-- ********************************* 基础配置 ********************************* -->
<!-- 配置01、JobHandler 扫描路径 -->
<context:component-scan
base-package=
"com.xxl.job.executor.service.jobhandler"
/>
<!-- 配置02、执行器 -->
<bean
id=
"xxlJobExecutor"
class=
"com.xxl.job.core.executor.XxlJobExecutor"
init-method=
"start"
destroy-method=
"destroy"
>
<!-- 执行器IP[选填],为空则自动获取 -->
<property
name=
"ip"
value=
"${xxl.job.executor.ip}"
/>
<!-- 执行器端口号 -->
<property
name=
"port"
value=
"${xxl.job.executor.port}"
/>
<property
name=
"appName"
value=
"${xxl.job.executor.appname}"
/>
<!-- 执行器注册器 -->
<property
name=
"registHelper"
>
<!-- 执行器 "DbRegistHelper" 依赖 "XXL-JOB公共数据源" ;推荐将其抽象为RPC远程服务, 可取消对JDBC的依赖;如不启用执行自动注册功能,也可忽略JDBC配置; -->
<bean
class=
"com.xxl.job.core.registry.impl.DbRegistHelper"
>
<!-- XXL-JOB公共数据源 -->
<property
name=
"dataSource"
ref=
"xxlJobDataSource"
/>
</bean>
</property>
</bean>
<!-- ********************************* "XXL-JOB公共数据源" 配置, 仅在启动 "DbRegistHelper" 时才需要, 否则可删除 ********************************* -->
<!-- 配置03、XXL-JOB公共数据源 -->
<bean
id=
"xxlJobDataSource"
class=
"com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method=
"close"
>
<property
name=
"driverClass"
value=
"${xxl.job.db.driverClass}"
/>
<property
name=
"jdbcUrl"
value=
"${xxl.job.db.url}"
/>
<property
name=
"user"
value=
"${xxl.job.db.user}"
/>
<property
name=
"password"
value=
"${xxl.job.db.password}"
/>
<property
name=
"initialPoolSize"
value=
"3"
/>
<property
name=
"minPoolSize"
value=
"2"
/>
<property
name=
"maxPoolSize"
value=
"10"
/>
<property
name=
"maxIdleTime"
value=
"60"
/>
<property
name=
"acquireRetryDelay"
value=
"1000"
/>
<property
name=
"acquireRetryAttempts"
value=
"10"
/>
<property
name=
"preferredTestQuery"
value=
"SELECT 1"
/>
</bean>
</beans>
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/resources/log4j.xml
0 → 100644
浏览文件 @
a83c21a4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration
xmlns:log4j=
"http://jakarta.apache.org/log4j/"
threshold=
"null"
debug=
"null"
>
<appender
name=
"CONSOLE"
class=
"org.apache.log4j.ConsoleAppender"
>
<param
name=
"Target"
value=
"System.out"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-springboot-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
<appender
name=
"FILE"
class=
"org.apache.log4j.DailyRollingFileAppender"
>
<param
name=
"file"
value=
"/data/applogs/xxl-job/xxl-job-executor-springboot-example.log"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-springboot-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
<appender
name=
"xxl-job"
class=
"com.xxl.job.core.log.XxlJobFileAppender"
>
<param
name=
"filePath"
value=
"/data/applogs/xxl-job/jobhandler/"
/>
<!--<param name="append" value="true"/>-->
<!--<param name="encoding" value="UTF-8"/>-->
<layout
class=
"org.apache.log4j.PatternLayout"
>
<param
name=
"ConversionPattern"
value=
"%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-springboot-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"
/>
</layout>
</appender>
<logger
name=
"com.xxl.job.core"
additivity=
"false"
>
<level
value=
"INFO"
/>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
<appender-ref
ref=
"xxl-job"
/>
</logger>
<logger
name=
"com.xxl.job.executor.service.jobhandler"
additivity=
"false"
>
<level
value=
"INFO"
/>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
<appender-ref
ref=
"xxl-job"
/>
</logger>
<root>
<level
value=
"INFO"
/>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
<appender-ref
ref=
"xxl-job"
/>
</root>
</log4j:configuration>
\ No newline at end of file
xxl-job-executor-springboot-example/src/main/resources/xxl-job-executor.properties
0 → 100644
浏览文件 @
a83c21a4
### xxl-job db
xxl.job.db.driverClass
=
com.mysql.jdbc.Driver
xxl.job.db.url
=
jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8
xxl.job.db.user
=
root
xxl.job.db.password
=
root_pwd
### xxl-job executor address
xxl.job.executor.appname
=
xxl-job-executor-example
xxl.job.executor.ip
=
xxl.job.executor.port
=
9999
\ No newline at end of file
xxl-job-executor-springboot-example/src/test/java/com/xxl/job/executor/test/XxlJobExecutorExampleBootApplicationTests.java
0 → 100644
浏览文件 @
a83c21a4
package
com
.
xxl
.
job
.
executor
.
test
;
import
com.xxl.job.executor.Application
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.test.SpringApplicationConfiguration
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
org.springframework.test.context.web.WebAppConfiguration
;
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringApplicationConfiguration
(
classes
=
Application
.
class
)
@WebAppConfiguration
public
class
XxlJobExecutorExampleBootApplicationTests
{
@Test
public
void
contextLoads
()
{
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论