问题如题,报错位置是在EntityManager查询数据库,未查询到数据引起的,如果我在报错位置前几行打上断点,却又能够查询到相应数据,错误也就随之消失。去掉断点,重新运行,错误依旧。
报错代码如下:
MeterSet meterSet = em.find(MeterSet.class, task.getMeterSetID());
System.out.println("MeterSetID:"+task.getMeterSetID()+",MeterSet:" + meterSet);
for (int j = 0; j < meterSet.getItems().size(); j++) {....}
报错日志如下:
10:07:21,207 ERROR [stderr] (Thread-92) Caused by: java.lang.NullPointerException
10:07:21,207 ERROR [stderr] (Thread-92) at com.keyman.fss.ejb.ExtendTaskAsynchronicWithoutPosBean.extendTask2Works(ExtendTaskAsynchronicWithoutPosBean.java:65)
10:07:21,207 ERROR [stderr] (Thread-92) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:07:21,207 ERROR [stderr] (Thread-92) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
10:07:21,207 ERROR [stderr] (Thread-92) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
10:07:21,207 ERROR [stderr] (Thread-92) at java.lang.reflect.Method.invoke(Method.java:597)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
10:07:21,223 ERROR [stderr] (Thread-92) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)
10:07:21,223 ERROR [stderr] (Thread-92) ... 19 more
------解决思路----------------------
猜测应该是和task有关,加断点,就代表是同步执行了,去掉断点是异步的
------解决思路----------------------
可能就是2L说的,异步了