首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用managedScheduledExecutorService的WebLogic中运行批处理作业的NullPointerException

在使用managedScheduledExecutorService的WebLogic中运行批处理作业的NullPointerException
EN

Stack Overflow用户
提问于 2018-04-20 20:32:38
回答 1查看 437关注 0票数 2

我在我的项目中使用批处理作业,并将其部署在weblogic上。我在weblogic控制台中设置了数据源和模式名称。当我想通过运行BatchRuntime.getJobOperator().start("test-job", new Properties())来启动作业时,我得到了以下错误:

代码语言:javascript
复制
javax.batch.operations.JobStartException: java.lang.NullPointerException
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.start(JobOperatorImpl.java:92)
        at com.test.job.JobUtils.startJob(JobUtils.java:19)
        at com.test.job.WaitScheduler.execute(WaitScheduler.java:33)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused By: java.lang.NullPointerException
        at com.ibm.jbatch.container.services.impl.SPIDelegatingThreadPoolServiceImpl.executeTask(SPIDelegatingThreadPoolServiceImpl.java:59)
        at com.ibm.jbatch.container.impl.BatchKernelImpl.startJob(BatchKernelImpl.java:135)
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.startInternal(JobOperatorImpl.java:123)
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.start(JobOperatorImpl.java:88)
        at com.test.job.JobUtils.startJob(JobUtils.java:19)
        at com.test.job.WaitScheduler.execute(WaitScheduler.java:33)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

在EXECUTIONINSTANCEDATA中,我有以下记录:

代码语言:javascript
复制
+-------------+-----------------+--------------------------------+-------------+-----------+--------------------------------+--------------+---------------+--------------+
| "JOBEXECID" | "JOBINSTANCEID" |          "CREATETIME"          | "STARTTIME" | "ENDTIME" |          "UPDATETIME"          | "PARAMETERS" | "BATCHSTATUS" | "EXITSTATUS" |
+-------------+-----------------+--------------------------------+-------------+-----------+--------------------------------+--------------+---------------+--------------+
| "25457"     | "25457"         | "20-APR-18 12.55.24.157000 PM" | ""          | ""        | "20-APR-18 12.55.24.157000 PM" | "<BLOB>"     | "STARTING"    | ""           |
+-------------+-----------------+--------------------------------+-------------+-----------+--------------------------------+--------------+---------------+--------------+

编辑:新的堆栈跟踪(由managedScheduledExecutorService调度的作业)

代码语言:javascript
复制
javax.batch.operations.JobStartException: java.lang.NullPointerException
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.start(JobOperatorImpl.java:92)
        at com.test.job.JobUtils.startJob(JobUtils.java:22)
        at com.test.job.JobStarter.run(JobStarter.java:18)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at weblogic.work.concurrent.TaskWrapper.call(TaskWrapper.java:151)
        at weblogic.work.concurrent.future.AbstractFutureImpl.runTask(AbstractFutureImpl.java:391)
        at weblogic.work.concurrent.future.AbstractFutureImpl.doRun(AbstractFutureImpl.java:436)
        at weblogic.work.concurrent.future.ManagedScheduledFutureImpl.timerExpired(ManagedScheduledFutureImpl.java:86)
        at weblogic.work.concurrent.future.ManagedPeriodFutureImpl.timerExpired(ManagedPeriodFutureImpl.java:97)
        at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:301)
        at weblogic.work.concurrent.future.ManagedScheduledFutureImpl.run(ManagedScheduledFutureImpl.java:96)
        at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)
        at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)
        at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)
        at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
        at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:644)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:415)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:355)
Caused by: java.lang.NullPointerException: null
        at com.ibm.jbatch.container.services.impl.SPIDelegatingThreadPoolServiceImpl.executeTask(SPIDelegatingThreadPoolServiceImpl.java:59)
        at com.ibm.jbatch.container.impl.BatchKernelImpl.startJob(BatchKernelImpl.java:135)
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.startInternal(JobOperatorImpl.java:123)
        at com.ibm.jbatch.container.api.impl.JobOperatorImpl.start(JobOperatorImpl.java:88)
        ... 17 common frames omitted
EN

回答 1

Stack Overflow用户

发布于 2019-08-06 19:15:50

我在WLS 12.2.1.2.0中也遇到过类似的问题。只有在使用EAR部署重新启动WLS时,才会出现该错误,但在第一次部署EAR部署后,WLS将正常工作。

这个问题是一个使用@Startup注释的单例bean,它将调用JobOperator并将其存储在私有字段中,如下所示:

代码语言:javascript
复制
private JobOperator jobOperator;

@PostConstruct
public void initialize() {
    jobOperator = BatchRuntime.getJobOperator();
}

解决方案是删除@Startup注释,以便WLS可以初始化批处理运行时,而不是使用@PostConstruct中的EAR文件的类加载器,然后在应用程序中每次需要JobOperator时调用BatchRuntime.getJobOperator()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49941734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档