解决方案 »

  1.   

    日志补充10:18:08,095 INFO  [stdout] (http--0.0.0.0-8080-1) 主控台请求主站创建掌机任务,TaskId:100035210:18:08,098 INFO  [stdout] (Thread-88) MeterSetID:500000309,MeterSet:null10:18:08,101 ERROR [org.jboss.ejb3.invocation] (Thread-88) JBAS014134: EJB Invocation failed on component ExtendTaskAsynchronicWithoutPosBean for method public void com.keyman.fss.ejb.ExtendTaskAsynchronicWithoutPosBean.extendTask2Works(com.keyman.fss.entity.Task,com.keyman.fss.entity.Operator,boolean) throws com.keyman.fss.lib.ErrordataException: javax.ejb.EJBException: java.lang.NullPointerException
      

  2.   

    猜测应该是和task有关,加断点,就代表是同步执行了,去掉断点是异步的
      

  3.   

    只是拿到Task的MetsetID,去查询Metset对象,跟据打印的日志判断,我猜想是Metset没有刷新进数据库引起,但是我在em.persist(meterSet);后面都加了em.flush();也还有问题。
    同步及异步能不能稍微具体点,,,
      

  4.   

    只是拿到Task的MetsetID,去查询Metset对象,跟据打印的日志判断,我猜想是Metset没有刷新进数据库引起,但是我在em.persist(meterSet);后面都加了em.flush();也还有问题。
    同步及异步能不能稍微具体点,,,
    如果task单单是一个简单的pojo,然后获取个MetsetID,那就不好说了
    把em.find(MeterSet.class, task.getMeterSetID());这句改为直接通过HQL或者sql查询呢,看看是什么情况?
      

  5.   

    只是拿到Task的MetsetID,去查询Metset对象,跟据打印的日志判断,我猜想是Metset没有刷新进数据库引起,但是我在em.persist(meterSet);后面都加了em.flush();也还有问题。
    同步及异步能不能稍微具体点,,,
    如果task单单是一个简单的pojo,然后获取个MetsetID,那就不好说了
    把em.find(MeterSet.class, task.getMeterSetID());这句改为直接通过HQL或者sql查询呢,看看是什么情况?
    这种办法之前就试过,我觉得Task是不是POJO无关,反正我要的MesetID已经得到了,上面打印语句已经打印出了具体MesetID
      

  6.   

    如果想判断是不是和task有关,可以这样
    把task.getMeterSetID()这块写死,比如MeterSet meterSet = em.find(MeterSet.class,3);
    如果这个时候不加断点能取到,那说明和task有关,如果还是会取不到,那说明和task无关
      

  7.   

    如果想判断是不是和task有关,可以这样
    把task.getMeterSetID()这块写死,比如MeterSet meterSet = em.find(MeterSet.class,3);
    如果这个时候不加断点能取到,那说明和task有关,如果还是会取不到,那说明和task无关应该是异步的问题,这样之后,问题解决了。 boolean falg = true;
            MeterSet meterSet = null;
                try
                {
                    while(falg) 
                    {
                        meterSet = (MeterSet)em.find(MeterSet.class, task.getMeterSetID());
                        if(em.contains(meterSet))
                            falg = false;
                        else
                            Thread.sleep(10L);
                    }
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    em.remove(task);
                    em.flush();
                    throw new ErrordataException("创建任务失败:"+e.getMessage());
                }