2017-11-27 11 views
0

ich dieses Problem habe mit EntityManager auf QuartzJob Beispiel:EntityManager null in QuartzJob

java.lang.NullPointerException bei weblogic.persistence.CICScopedEMProvider.getEMForCurrentCIC (CICScopedEMProvider.java:35) bei weblogic.persistence .TransactionalEntityManagerProxyImpl.getPersistenceContext (TransactionalEntityManagerProxyImpl.java:122) bei weblogic.persistence.BasePersistenceContextProxyImpl.invoke (BasePersistenceContextProxyImpl.java:94) bei weblogic.persistence.TransactionalEntityManagerProxyImpl.invoke (TransactionalEntityManagerProxyImpl.java:164) bei weblogic.pers istence.BasePersistenceContextProxyImpl.invoke (BasePersistenceContextProxyImpl.java:86) bei com.sun.proxy. $ Proxy321.createQuery (Unknown Source) bei com.myproject.repository.impl.PhotoRepositoryImpl.getShotsFromBackupOption (PhotoRepositoryImpl.java:44) bei com.myproject.service.impl.PhotoServiceImpl.getPhoto (PhotoServiceImpl.java:90) bei com.myproject.monitor.BackupJob.execute (BackupJob.java:46) bei org.quartz.core.JobRunShell.run (JobRunShell. java: 202) bei org.quartz.simpl.SimpleThreadPool $ WorkerThread.run (SimpleThreadPool.java:573)

Das ist mein Job:

public class BackupJob implements Job{ 
    private Logger logger = LoggerFactory.getLogger(getClass()); 

    @Inject private PhotoService photoService; 

    @Override 
    public void execute(JobExecutionContext context) throws JobExecutionException { 
     try { 
      String jobName = context.getJobDetail().getKey().getName(); 
      Long jobGroup = Long.parseLong(context.getJobDetail().getKey().getGroup()); 

      List<File> fileList = photoService.getPhoto(jobName, jobGroup); 

      logger.info("Backup with deep {}", context.getJobDetail().getJobDataMap().get("deep")); 
     } catch (Exception e) { 
      logger.error("ERROR during backup job", e); 
     }  
    } 
} 

(Bildservice korrekt eingespritzt wird, die gleiche Sache für meine photoRepository Methode in Photoservice genannt)

Das ist mein Repository:

@Stateless 
public class PhotoRepositoryImpl implements PhotoRepository{ 

    @PersistenceContext(unitName=Constant.PU_NAME) 
    private EntityManager em; 

    @Override 
    public List<Photo> getShotsFromBackupOption(String jobName, Long jobGroup) throws SQLException{ 

     Query query = em.createQuery("SELECT p " 
            + "FROM Shot s " 
            + "JOIN Photo p " 
            + "WHERE s.dateShooting < " 
             + "(SELECT b.previousThan " 
             + "FROM BackupOption b " 
             + "WHERE b.jobName = :jobName AND b.syncType.id = :jobGroup)" 
            + "ORDER BY p.relativePath DESC"); 
     query.setParameter("jobName", jobName); 
     query.setParameter("jobGroup", jobGroup); 


     return (List<Photo>) query.getResultList(); 
    } 
} 

Das ist mein Job Fabrik

public class JobFactoryImpl implements JobFactory { 


@Inject 
private Instance<Job> jobs; 

@Override 
public Job newJob(TriggerFiredBundle triggerFiredBundle, Scheduler scheduler) throws SchedulerException { 
    final JobDetail jobDetail = triggerFiredBundle.getJobDetail(); 
    final Class<? extends Job> jobClass = jobDetail.getJobClass(); 

    for (Job job : jobs) { 
     if (job.getClass().isAssignableFrom(jobClass)) { 
      return job; 
     } 
    } 

    throw new RuntimeException("Cannot create a Job of type " + jobClass); 
}} 

Nullpointer wird auf em.createquery (---) -Methode geworfen. Diese Abfrage funktioniert gut, wenn Methode aus meinem QuartzJob aufgerufen wird. Haben Sie eine nette Abhilfe dafür?

+0

Scheck https://stackoverflow.com/questions/37075328/nullpointerexception-while-deploying-quartz-in-spring-boot zu sehen, ob es hilft – Srinivas

+0

Gibt es einen besonderen Grund, warum Sie keinen EJB-Timer verwenden? Sie würden dieses Problem nicht haben und Sie könnten ein ganzes Glas (und vielleicht seine Abhängigkeiten) loswerden. –

Antwort

0

ich EntityManager auf diese Weise ausgewertete bekommen:

@PersistenceUnit(unitName= Constant.PU_NAME) 
private EntityManagerFactory emf; 

private EntityManager em = emf.createEntityManager(); 
Verwandte Themen