Git Product home page Git Product logo

xxl-job's People

Contributors

1423302537 avatar abel533 avatar clipperl avatar cyyhyq avatar denghuafeng avatar fijileijun avatar gongstring avatar icyblazek avatar j112929 avatar jackyrao2 avatar jianzhiunique avatar lizhennet avatar llnancy avatar lzwcyd avatar majinding avatar mayben0t avatar meigesir avatar mrwb avatar oszhugc avatar paopaofish avatar qinnnyul avatar sky-dawn avatar souvckeji avatar thinkingfioa avatar tomzhang170 avatar uliian avatar weizibin avatar wnewey avatar xuxueli avatar zaomianbao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xxl-job's Issues

Tips: Cannot run without an instance id error log

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'quartzScheduler' defined in URL [jar:file:/data/WEB-INF/lib/xxl-job-admin-1.3.1-SNAPSHOT.jar!/applicationcontext-xxl-job.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot run without an instance id.
Caused by: java.lang.IllegalStateException: Cannot run without an instance id.
如果日志中有这些的错误提示是因为程序运行获取hostname无法解析造成的,把对应的IP加入DNS或者hosts中就可以了.算是踩了一小坑

tables_xxl_job.sql 脚本无法执行

[SQL]
CREATE TABLE XXL_JOB_QRTZ_JOB_DETAILS
(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
[Err] 1071 - Specified key was too long; max key length is 1000 bytes

job执行的进度反馈

执行器执行耗时job,加入进度反馈的可选接口是不是更好?现在的只能通过非实时的执行日志(需要手动刷新)来查看进度(还需要JobHandler里打好日志)

任务异常导致磁盘占满

遇到一个莫名其妙的问题。也没报异常日志,感觉像是任务阻塞导致占用资源不释放。
image
FAIL时查看执行日志,没有任何日志信息
image

启动admin报错

Caused by: freemarker.core._MiscTemplateException: Failed to set setting "xxl.job.mail.password" to value "asdfzxcv"; see cause exception.

java.lang.IllegalStateException: Optional int parameter 'jobId'

每隔几分钟跑默认的shell脚本任务,会不时出现如下异常:
2017-04-28 09:29:58,575 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler]- <>>>>>>>>>>> resumeJob success, JobGroup:2, JobName:1>
2017-04-28 09:31:09,281 - xxl-job-admin - ERROR [com.xxl.job.admin.controller.resolver.WebExceptionResolver] - WebExceptionResolver:{}
java.lang.IllegalStateException: Optional int parameter 'jobId' is present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.handleNullValue(AbstractNamedValueMethodArgumentResolver.java:188)
at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:94)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:77)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:743)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:672)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:82)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:933)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2017-04-28 09:32:01,157 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler]- <>>>>>>>>>>> runJob success, jobKey:2.1>

image

job.executor可以提供一个不依赖容器的版本,使用JVM环境

现在的executor需要依赖容器,可以考虑打成jar,在JVM中跑,脱离对web容器的依赖:

我昨天实现了一下:

通过maven 的maven-shade-plugin插件,在JVM中直接跑

main函数:

new Thread() {
			public void run() {
				synchronized (StatisticApp.class) {
					new ClassPathXmlApplicationContext("classpath:di-statistic.springContext.xml");
				}
				try {
					while (true) {
						LOG.info(GlobalConst.LogFix.LOG_FIX_PREFIX + "di-statistic is running....");
						Thread.sleep(THREAD_SLEEP_TIME);
					}
				} catch (InterruptedException e) {
					LOG.error(GlobalConst.LogFix.LOG_FIX_PREFIX + "di-statistic throws exception:");
					LOG.error(GlobalExceptionMsg.getExceptionMessage(e));
				}
			}
		}.start();

日志页面,查看 执行日志 问题

logDetailPage输出内容是:
http statusCode error,statusCode:500
console 输出:
2016-08-12 08:49:14.445 WARN 10496 --- [ol-1-thread-188] o.e.jetty.server.AbstractHttpConnection : /

java.lang.NullPointerException: null
at java.io.File.(File.java:277)
at com.ouyeel.xservices.job.core.log.XxlJobFileAppender.readLog(XxlJobFileAppender.java:121)
at com.ouyeel.xservices.job.core.handler.HandlerRepository.service(HandlerRepository.java:152)
at com.ouyeel.xservices.job.core.executor.jetty.XxlJobExecutorHandler.handle(XxlJobExecutorHandler.java:35)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:369)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:464)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:924)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:985)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
求前辈指点方向

关于任务的创建

目前xxl-job支持web页面对任务进行CRUD操作。但是没有api的方式。能否开放一个api接口来增加任务?我测试过xxl-job-admin/jobinfo/add 这个方法模拟表单请求、但是需要登录验证。

jobThread 线程问题

jobThread 每个任务一直有一个线程,当任务执行时间比较长,执行次数比较频繁时,会产生任务积压延迟。

在大数据场景下支持分片调度

在大数据场景下,支持按照分片进行调度,比如一个job任务,分片规则为{北京=1,上海=2,广州=3},在进行一个job调度的时候,执行节点1只处理北京的数据,执行节点2只处理上海的数据,执行节点3只处理广州的数据。如果执行节点1挂了,那么执行节点1的分片,将自动转移到执行节点2或者执行节点3执行,达到分片的高并发,高可靠。

请教:具体步骤操作

按照maven格式将源码导入IDE(文档以Eclipse为例),更新项目pom依赖,maven编译项目
问题:xxl-job-admin报错,maven update之后还是这样,我开始疑问是不是我导入Eclipse的方式不对,我是通过import-maven-existing Maven Projects 然后选中下载的源码文件夹,这样操作不对吗

Exception starting filter encodingFilter java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter

信息: Starting tomcat server
四月 06, 2017 6:27:25 下午 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.29
四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter encodingFilter
java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext start
严重: Error filterStart
四月 06, 2017 6:27:26 下午 org.apache.catalina.core.StandardContext start
严重: Context [/xxl-job-admin] startup failed due to previous errors
四月 06, 2017 6:27:26 下午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

log日志问题

改造过xxl-job-admin之后,集成了公司的用户单点登录系统,引用公司内部的jar包中有logback依赖,导致logback和log4j冲突,以至于xxl-job-admin的log4j日志设置不起作用,debug日志一直刷
解决方案:pom.xm配置里exclude调logback的jar包依赖即可

unknown code for readObject at 0x45 (E)

之前可以正常使用,后来引入dubbo 2.5.3,将一些基础服务剥离出去后,再由调度任务调用执行器时,出现以上异常,也可能不是dubbo引起的异常,摸不着解决方案,请教作者

2017-04-21 16:46:29,188 - xxl-job-admin - INFO [com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler] - <>>>>>>>>>>> runJob success, jobKey:4.11>
2017-04-21 16:49:21,995 - xxl-job-admin - ERROR [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>
java.lang.IllegalStateException: unknown code for readObject at 0x45 (E)
at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:33)
at com.xxl.job.core.rpc.netcom.jetty.client.JettyClient.send(JettyClient.java:17)
at com.xxl.job.core.rpc.netcom.NetComClientProxy$1.invoke(NetComClientProxy.java:48)
at com.sun.proxy.$Proxy18.run(Unknown Source)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.runExecutor(RemoteHttpJobBean.java:184)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.doTrigger(RemoteHttpJobBean.java:107)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:69)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:114)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: com.caucho.hessian.io.HessianProtocolException: unknown code for readObject at 0x45 (E)
at com.caucho.hessian.io.HessianInput.error(HessianInput.java:1697)
at com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1177)
at com.xxl.job.core.rpc.serialize.HessianSerializer.deserialize(HessianSerializer.java:31)
... 9 more

dubbo相关的配置
<dubbo:registry protocol="zookeeper" address="${service.registry.address}" />

跟踪代码显示:
HttpClientUtil.postRequest() 方法
HttpResponse response = httpClient.execute(httpPost);

HttpResponseProxy{HTTP/1.1 500 Server Error [Connection: close, Server: Jetty(8.2.0.v20160908)] ResponseEntityProxy{[Chunked: false]}}

求教

一些改进的建议

1、可以查看任务的子任务和父任务依赖关系的图。(这个可以参考一下airflow的图)
2、可以做一个任务跑错或者挂了 之后重试的配置。
3、任务之间的依赖触发,可以只配置最后的(叶子节点)任务执行时间,然后子任务进入排队,先把父任务执行完整,依次递归触发。 感觉这样配置触发时间会更加地灵活。
4、可以加入配置任务优先级。

groovy: 16: unexpected token: /bin/sh

在Glue上写了下面代码

package com.xxl.job.service.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;

import com.xxl.job.core.handler.IJobHandler;

public class DemoGlueJobHandler extends IJobHandler {
	private static transient Logger logger = LoggerFactory.getLogger(DemoGlueJobHandler.class);

	@Override
	public void execute(String... params) throws Exception {
  
        Process process;  
      	String[] args = new String[]{"/bin/sh", "-c", "ls -l"};
        process = Runtime.getRuntime().exec(args,null,null);  
        InputStreamReader ir = new InputStreamReader(process  
                .getInputStream());  
        LineNumberReader input = new LineNumberReader(ir);  
        String line;  
        process.waitFor();  
        while ((line = input.readLine()) != null){  
            logger.info("XXL-JOB output shell: " + line);
        }		
	}

}

后台日志输出如下错误:

2017-04-19 20:51:18 xxl-job-executor-example [com.xxl.job.core.biz.impl.ExecutorBizImpl]-[pool-1-thread-23]-[run]-[107]-[ERROR] 
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
script14926062784321569856516.groovy: 16: unexpected token: /bin/sh @ line 16, column 37.
         	String[] args = new String[]{"/bin/sh", "-c", "ls -l"};
                                       ^

1 error

	at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
	at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
	at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
	at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
	at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:360)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:145)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:111)
	at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:237)
	at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:167)
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:212)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:222)
	at com.xxl.job.core.glue.GlueFactory.loadNewInstance(GlueFactory.java:115)
	at com.xxl.job.core.biz.impl.ExecutorBizImpl.run(ExecutorBizImpl.java:105)
	at com.xxl.job.core.biz.impl.ExecutorBizImpl$$FastClassByCGLIB$$377761dc.invoke(<generated>)
	at org.springframework.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
	at com.xxl.job.core.rpc.netcom.NetComServerFactory.invokeService(NetComServerFactory.java:66)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServerHandler.doInvoke(JettyServerHandler.java:57)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServerHandler.handle(JettyServerHandler.java:30)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:370)
	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
	at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:984)
	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1045)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

日志页面,查看 执行日志 问题

logDetailPage输出内容是:
http statusCode error,statusCode:500
console 输出:
2016-08-12 08:49:14.445 WARN 10496 --- [ol-1-thread-188] o.e.jetty.server.AbstractHttpConnection : /

java.lang.NullPointerException: null
at java.io.File.(File.java:277)
at com.ouyeel.xservices.job.core.log.XxlJobFileAppender.readLog(XxlJobFileAppender.java:121)
at com.ouyeel.xservices.job.core.handler.HandlerRepository.service(HandlerRepository.java:152)
at com.ouyeel.xservices.job.core.executor.jetty.XxlJobExecutorHandler.handle(XxlJobExecutorHandler.java:35)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:369)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:464)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:924)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:985)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:236)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
求前辈指点方向

集群情况下存在重复执行的情况

我这个任务是每5分钟执行一次,有时会出现短时间在2台机器上分别调度一次。
第一台机器相关日志:
2017-03-08 17:30:05,814 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger start, jobId:15940733>
2017-03-08 17:30:05,822 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job failoverTrigger response, jobId:15940733, responseModel:ResponseModel{status='SUCCESS', msg='BEAT running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : i am alive.


Trigger running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : null

'}>
2017-03-08 17:30:05,825 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger end, jobId:15940733>
2017-03-08 17:31:50,618 - xxl-job-admin - INFO [com.xxl.job.admin.core.thread.JobMonitorHelper] - <>>>>>>>>>>> job monitor heat success, JobLogId:15940733>

第二台机器相关日志:
2017-03-08 17:30:06,017 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger start, jobId:15940739>
2017-03-08 17:30:06,026 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job failoverTrigger response, jobId:15940739, responseModel:ResponseModel{status='SUCCESS', msg='BEAT running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : i am alive.


Trigger running,
>>>[address] : 172.16.21.16:6666,
>>>[status] : SUCCESS,
>>>[msg] : null

'}>
2017-03-08 17:30:06,029 - xxl-job-admin - INFO [com.xxl.job.admin.core.jobbean.RemoteHttpJobBean] - <>>>>>>>>>>> xxl-job trigger end, jobId:15940739>

简单按照readme的步骤部署了war包后,tomcat包无法读取

报无法读取 xxl-job-admin.properties 这个文件。 但是 在 webapps的目录里面是有的,debug看到,程序也找到文件。

但异常就是在PropertiesUtil里的loadProperties方法里抛出的。
in = new InputStreamReader(new FileInputStream(url.getPath()), "UTF-8");
prop.load(in);

绕过登录机制,直接登录后用起来也是没问题的。
是不是Tomcat配置的原因呢?

项目启动时

版本1.3.1
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for XxlJobInfoMapper.XxlJobInfo at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782) at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754) at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:536) at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:207) at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:284) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:251) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:243) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116) ... 83 more

执行器最好有个状态列

第一试用发现执行器存在了,但没有看到任务的日志,后来到执行器管理页面发现执行器存在,但Online列没有值不知道怎么回事。最后把IP和状态分成两个列。

这样状态可以单独表述,不论是否有IP地址。

如果你需要我可以帮你改一下。

NullPointerException

我将executor-example中的log4j.xml 变成 log4j.properties

代码如下

`
log4j.rootLogger=CONSOLE,FILE,job
log4j.addivity.org.apache=true

log4j.logger.com.chinasofti.ark.bdadp.schedule.core =CONSOLE,FILE,job
log4j.logger.com.chinasofti.ark.executor =CONSOLE,FILE,job

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n

log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FILE.file=../logs/executor-example.log
log4j.appender.FILE.append=true
log4j.appender.FILE.encoding=UTF-8
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n

log4j.appender.job=com.chinasofti.ark.bdadp.schedule.core.log.JobFileAppender
log4j.appender.job.filePath=../logs/jobhandler/
log4j.appender.job.layout=org.apache.log4j.PatternLayout
log4j.appender.job.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n
`

调度中心运行job,一直提示XxlJobFileAppender.java 中fos.write(layout.format(event).getBytes("utf-8"));的layout为null,,,我使用的版本是1.6.1-SNAPSHOT

XxlJobFileAppender

调度日志的执行日志查看,通过该FileAppender来做,而且没有rollling机制,成本太大,建议修改

对临时一次性任务的支持

BEAN 模式只能在页面进行添加任务吗?我们业务很多临时的只需要执行一次的定时任务。想在代码里里面动态添加怎么做?

在执行器里增加JavaMelody监控时,会导致调度不成功。

在执行器项目中增加了JavaMelody配置已监控项目运行情况。
web.xml增加配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:monitoring-spring.xml classpath:applicationcontext-xxl-job.xml </param-value> </context-param>
<filter> <filter-name>javamelody</filter-name> <filter-class>net.bull.javamelody.MonitoringFilter</filter-class> <init-param> <param-name>log</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>javamelody</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <listener> <listener-class>net.bull.javamelody.SessionListener</listener-class> </listener>
monitoring-spring.xml文件为:
`

<!--图表spring-->
<bean id="facadeMonitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
    <property name="pointcut">
        <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
            <property name="pattern" value="com.meyacom.crm.*" />
        </bean>
    </property>
</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

<!--图表sql-->
<bean id="springDataSourceBeanPostProcessor" class="net.bull.javamelody.SpringDataSourceBeanPostProcessor">
    <!--
    <property name="excludedDatasources">
        <set>
            <value>excludedDataSourceName</value>
        </set>
    </property>
    -->
</bean>

<bean id="ProxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="interceptorNames">
        <list>
            <value>facadeMonitoringAdvisor</value>
        </list>
    </property>
</bean>

`

增加以上配置后会导致只能执行GLUE模式的任务,执行JobHandler调度失败。错误信息:
`Trigger running,

[address] : 10.0.0.173:9034,
[status] : FAIL,
[msg] : job handler for jobKey=[1_201612232118460184] not found. `
jobKey是存在的,关掉JavaMelody可以正常执行。

任务执行失败

用的1.7.1版本,任务执行,执行器提示:java.lang.RuntimeException: Servet-error:Read timed out
请问,这个是什么原因,该如何解决?

执行任务回调的时候报StringIndexOutOfBoundsException异常

java.lang.StringIndexOutOfBoundsException: String index out of range: 64
at java.lang.String.(Unknown Source)
at com.xxl.job.core.util.ByteHexConverter.hex2Byte(ByteHexConverter.java:30)
at com.xxl.job.core.util.XxlJobNetCommUtil.parseHexJson2Obj(XxlJobNetCommUtil.java:53)
at com.xxl.job.core.util.XxlJobNetCommUtil.postHex(XxlJobNetCommUtil.java:113)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.failoverTrigger(RemoteHttpJobBean.java:126)
at com.xxl.job.admin.core.jobbean.RemoteHttpJobBean.executeInternal(RemoteHttpJobBean.java:61)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:114)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

// i do not know why
responseHex = responseHex.replace("\n", ""); 也需要过滤下 “\r”

XxlJobNetCommUtil bug?

第95行
// i do not know why
responseHex = responseHex.replace("\n", "");

我的回调中还有 个\r

集成mycat遇到的问题

xxl-job数据源使用mycat的时候会出现任务在暂停之后,在org.quartz.jobStore.misfireThreshold: 60000 这个时间过后,会被自动恢复到normal状态,直连数据库不会出现以上问题,谨记!

客户端jetty线程池

今天将代码clone下来了,发现客户端使用jetty时线程池中线程开了200个,建议改下。建议日志处理不要强制使用log4j,祝好。

项目用jetty启动,进入任务的列表总是报错

java.io.IOException: FULL head
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:276)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

导致任务显示不出来。

org.mortbay.jetty
maven-jetty-plugin
6.1.7



8090
30000



任务HA策略疑问

任务“执行器地址”支持配置多个,用逗号分隔,如“127.0.0.1:9998,127.0.0.1:9999”。

如果任务配置多个执行器地址,当调度中心每次发起调度请求时,会按照地址配置的顺序依次对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定。

感觉这种执行器选定策略不能很好的利用资源,可以考虑采用更合理的轮询选定策略。

0.0.0.0:9999: java.net.BindException: Address already in use

直接使用新的war覆盖老的war包时出现下面错误日志。同时tomcat也无法正常停止,需要手动kill。

2017-04-20 11:13:29 xxl-job-executor-example [com.mchange.v2.log.MLog]-[MLog-Init-Reporter]-[log]-[212]-[INFO] MLog clients using slf4j logging.
2017-04-20 11:13:30 xxl-job-executor-example [com.mchange.v2.c3p0.C3P0Registry]-[localhost-startStop-1]-[log]-[212]-[INFO] Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.executor.XxlJobExecutor]-[localhost-startStop-1]-[registJobHandler]-[109]-[INFO] xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.executor.service.jobhandler.DemoJobHandler@1a28d110
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.executor.XxlJobExecutor]-[localhost-startStop-1]-[registJobHandler]-[109]-[INFO] xxl-job register jobhandler success, name:krisJobHandler, jobHandler:com.xxl.job.executor.service.jobhandler.KrisJobHandler@36bcb2d2
2017-04-20 11:13:30 xxl-job-executor-example [org.springframework.web.context.ContextLoader]-[localhost-startStop-1]-[initWebApplicationContext]-[325]-[INFO] Root WebApplicationContext: initialization completed in 404 ms
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.server.Server]-[Thread-5]-[doStart]-[272]-[INFO] jetty-8.2.0.v20160908
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.util.component.AbstractLifeCycle]-[Thread-5]-[setFailed]-[204]-[WARN] FAILED [email protected]:9999: java.net.BindException: Address already in use
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:30 xxl-job-executor-example [org.eclipse.jetty.util.component.AbstractLifeCycle]-[Thread-5]-[setFailed]-[204]-[WARN] FAILED org.eclipse.jetty.server.Server@368659c1: java.net.BindException: Address already in use
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:30 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[Thread-5]-[run]-[48]-[ERROR] 
java.net.BindException: Address already in use
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
	at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
	at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at org.eclipse.jetty.server.Server.doStart(Server.java:293)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:42)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:45 xxl-job-executor-example [org.springframework.web.context.support.XmlWebApplicationContext]-[localhost-startStop-2]-[doClose]-[1048]-[INFO] Closing Root WebApplicationContext: startup date [Thu Apr 20 11:13:29 CST 2017]; root of context hierarchy
2017-04-20 11:13:45 xxl-job-executor-example [org.springframework.beans.factory.support.DefaultListableBeanFactory]-[localhost-startStop-2]-[destroySingletons]-[444]-[INFO] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@7b84b764: defining beans [propertyConfigurer,demoJobHandler,krisJobHandler,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,xxlJobExecutor,glueFactory,xxlJobDataSource,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
2017-04-20 11:13:45 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[localhost-startStop-2]-[destroy]-[63]-[ERROR] 
java.lang.IllegalStateException: !STOPPED
	at org.eclipse.jetty.server.handler.HandlerWrapper.destroy(HandlerWrapper.java:172)
	at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer.destroy(JettyServer.java:61)
	at com.xxl.job.core.rpc.netcom.NetComServerFactory.destroy(NetComServerFactory.java:31)
	at com.xxl.job.core.executor.XxlJobExecutor.destroy(XxlJobExecutor.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:328)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:254)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:510)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:486)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:751)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:455)
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1096)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1070)
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1016)
	at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:586)
	at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:143)
	at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4792)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5429)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1435)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1424)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
2017-04-20 11:13:45 xxl-job-executor-example [com.xxl.job.core.rpc.netcom.jetty.server.JettyServer]-[localhost-startStop-2]-[destroy]-[69]-[INFO] >>>>>>>>>>> xxl-rpc server destroy success, netcon=com.xxl.job.core.rpc.netcom.jetty.server.JettyServer
2017-04-20 11:14:06 xxl-job-executor-example [org.springframework.web.context.ContextLoader]-[localhost-startStop-1]-[initWebApplicationContext]-[285]-[INFO] Root WebApplicationContext: initialization started
2017-04-20 11:14:06 xxl-job-executor-example [org.springframework.web.context.support.XmlWebApplicationContext]-[localhost-startStop-1]-[prepareRefresh]-[515]-[INFO] Refreshing Root WebApplicationContext: startup date [Thu Apr 20 11:14:06 CST 2017]; root of context hierarchy

Tomcat正常停止后日志出现大量错误,同时tomcat进程无法正常停止

今天发现一个新问题,执行shutdown.sh正常停止, 日志出现大量错误,同时tomcat进程无法正常停止。下面是日志信息:

21-Apr-2017 11:06:02.552 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xxl-job-executor-example-1.6.2-SNAPSHOT] appears to have started a thread named [pool-1-thread-193] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)
21-Apr-2017 11:06:02.553 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xxl-job-executor-example-1.6.2-SNAPSHOT] appears to have started a thread named [pool-1-thread-194] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)

在与springboot集成过程中报这个错。

在与springboot集成过程中报这个错。
Exception in thread "Thread-19" java.lang.NoSuchMethodError: org.eclipse.jetty.server.Server.setThreadPool(Lorg/eclipse/jetty/util/thread/ThreadPool;)V
at com.xxl.job.core.rpc.netcom.jetty.server.JettyServer$1.run(JettyServer.java:28)
at java.lang.Thread.run(Thread.java:745)

关于工作流的概念

就是 A->B -> C -> D 这种情况。
现在只能: 对jobA 设置正确的Cron, BCD 设置一个不执行的corn,
A的子是B B的子是C...
但是查看日志和job 不是很方便

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.