2013/9/28 Jeremie BOUSQUET <[email protected]> > Hello again > > Moving on to XWiki 5.1 did the trick, except that I run into another > trouble ... > > When my job is starting, I get a NPE: > > Exception in thread "Job Manager daemon thread" > java.lang.NullPointerException > at > org.xwiki.job.internal.AbstractJob.jobStarting(AbstractJob.java:170) > at org.xwiki.job.internal.AbstractJob.run(AbstractJob.java:134) > at > org.xwiki.job.internal.DefaultJobManager.runJob(DefaultJobManager.java:131) > at > org.xwiki.job.internal.DefaultJobManager.run(DefaultJobManager.java:110) > at java.lang.Thread.run(Unknown Source) > > It's on following "this.logger..." line in AbstractJob: > > > if (getStatus().getRequest().getId() != null) { > > this.logger.info("Starting job of type [{}] with identifier > [{}]", getType(), getStatus().getRequest() > > .getId()); > } else { > > > I checked and getType() is not null. The other can't be. So could it be > that this.logger is null ? > Could it be again a pb of root component manager ? >
Sorry I solved this, problem was that I @Inject-ed a Logger into my LoadingJob class. Somehow it caused the logger to be null. Thanks, Jeremie > > BR, > Jeremie > > > 2013/9/26 Jeremie BOUSQUET <[email protected]> > >> Oups... ;) >> >> No I'm on 4.2, but I suppose I'll be on 5.x soon... >> Le 26 sept. 2013 18:52, "Thomas Mortagne" <[email protected]> a >> écrit : >> >> addJob(Job job) not addJob(String jobType, Request request) ;) >>> >>> But maybe you are not on 5.1 yet. >>> >>> On Thu, Sep 26, 2013 at 6:28 PM, Jeremie BOUSQUET >>> <[email protected]> wrote: >>> > 2013/9/26 Thomas Mortagne <[email protected]> >>> >> >>> >> On Thu, Sep 26, 2013 at 5:13 PM, Thomas Mortagne >>> >> <[email protected]> wrote: >>> >> > On Thu, Sep 26, 2013 at 4:40 PM, Jeremie BOUSQUET >>> >> > <[email protected]> wrote: >>> >> >> 2013/9/26 Thomas Mortagne <[email protected]> >>> >> >> >>> >> >>> On Thu, Sep 26, 2013 at 1:08 PM, Jeremie BOUSQUET >>> >> >>> <[email protected]> wrote: >>> >> >>> > 2013/9/26 Thomas Mortagne <[email protected]> >>> >> >>> > >>> >> >>> >> On Thu, Sep 26, 2013 at 11:20 AM, Jeremie BOUSQUET >>> >> >>> >> <[email protected]> wrote: >>> >> >>> >> > Hello, >>> >> >>> >> > >>> >> >>> >> > I'm trying to use the Job Module [1] for my own needs. >>> >> >>> >> > I know some of its APIs are marked as unstable, but well I >>> > wanted to >>> >> >>> give >>> >> >>> >> > it a try. >>> >> >>> >> > >>> >> >>> >> > I'm on a XWiki 4.5.2 instance currently. >>> >> >>> >> > >>> >> >>> >> > So I created some dummy interface: >>> >> >>> >> > >>> >> >>> >> > @Role >>> >> >>> >> > public interface ILoadingJob extends Job >>> >> >>> >> > { >>> >> >>> >> > } >>> >> >>> >> >>> >> >>> >> Job is already a @Role so I don't understand why override it >>> with >>> >> >>> >> ILoadingJob. >>> >> >>> >> >>> >> >>> > >>> >> >>> > I completely removed the ILoadingJob interface, but still the >>> same >>> > issue >>> >> >>> > occurs. >>> >> >>> >>> >> >>> Appart from this I did not seen anything wrong in your code. Are >>> you >>> >> >>> able to do this.componentManager.getInstance(Job.class, >>> >> >>> "mailarchivejob"); ? >>> >> >>> >>> >> >> >>> >> >> I added the line of code, that revealed a number of errors in my >>> > component. >>> >> >> I fixed them, and now this getInstance(...) appropriately returns a >>> >> >> LoadingJob object. I've put the code just before my code calling >>> >> >> executeJob(). >>> >> >> But even after these corrections, I still get the same issue on >>> >> >> executeJob(). BTW, I have same problem when calling addJob(). >>> >> >> >>> >> >> >>> >> >>> >>> >> >>> Is you jar installed as extension ? >>> >> >>> >>> >> >> >>> >> >> Yes it is. >>> >> >> As I'm currently using some SNAPSHOT version, I installed it once >>> with >>> > EM >>> >> >> (linked to a local nexus repository), and now I patch the jar under >>> >> >> $XWIKI_DATA_DIR/data/extensions/repository/..., during server >>> restart. >>> >> > >>> >> > That's it then, I re-checked the DefaultJobManager and it only look >>> at >>> >> > root component manager. Fixing it in 5.2RC1. >>> >> >>> >> In the meantime you can use addJob(Job). >>> > >>> > addJob(Job) has the same problem: >>> > >>> > org.xwiki.job.JobException: Failed to lookup any Job for role hint >>> > [mailarchivejob] >>> > at >>> > >>> org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:185) >>> > ~[xwiki-commons-job-4.5.2.jar:na] >>> > at >>> > >>> org.xwiki.job.internal.DefaultJobManager.addJob(DefaultJobManager.java:208) >>> > ~[xwiki-commons-job-4.5.2.jar:na] >>> > at >>> > >>> org.xwiki.contrib.mailarchive.script.MailArchiveScriptService.createLoadingJob(MailArchiveScriptService.java:140) >>> > >>> [org.xwiki.contrib.mailarchive%253Axwiki-contrib-mailarchive-api-0.3-SNAPSHOT.jar:na] >>> > >>> > >>> >> >>> >> >>> >> > >>> >> >> >>> >> >> >>> >> >>> >>> >> >>> > >>> >> >>> > >>> >> >>> >> >>> >> >>> >> > >>> >> >>> >> > A Job implementation: >>> >> >>> >> > >>> >> >>> >> > @Component >>> >> >>> >> > @Named(LoadingJob.JOBTYPE) >>> >> >>> >> > public class LoadingJob extends AbstractJob<DefaultRequest> >>> > implements >>> >> >>> >> > ILoadingJob, Initializable >>> >> >>> >> > { >>> >> >>> >> > public static final String JOBTYPE = "mailarchivejob"; >>> >> >>> >> > >>> >> >>> >> > // ... >>> >> >>> >> > } >>> >> >>> >> > >>> >> >>> >> > In debug mode, I run the following: >>> >> >>> >> > >>> >> >>> >> > >>> >> >>> >>> > >>> this.componentManager.getComponentDescriptorList(org.xwiki.job.Job.class) >>> >> >>> >> > >>> >> >>> >> > It returns: >>> >> >>> >> > >>> >> >>> >> > [implementation = >>> > [org.xwiki.contrib.mailarchive.internal.LoadingJob], >>> >> >>> >> > instantiation = [PER_LOOKUP], implementation = >>> >> >>> >> > [org.xwiki.extension.job.internal.UpgradePlanJob], ... ] >>> >> >>> >> > >>> >> >>> >> > So it seems OK. >>> >> >>> >> > >>> >> >>> >> > I have the following code to create and execute my Job: >>> >> >>> >> > >>> >> >>> >> > DefaultRequest request = new DefaultRequest(); >>> >> >>> >> > request.setId("test"); >>> >> >>> >> > request.setInteractive(false); >>> >> >>> >> > // ... other properties set >>> >> >>> >> > LoadingJob job = (LoadingJob) >>> >> >>> >> > jobManager.executeJob("mailarchivejob", request); >>> >> >>> >> > >>> >> >>> >> > But this code fails with following stack trace: >>> >> >>> >> > >>> >> >>> >> > org.xwiki.job.JobException: Failed to lookup any Job for role >>> > hint >>> >> >>> >> > [mailarchivejob] >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:185) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.job.internal.DefaultJobManager.addJob(DefaultJobManager.java:208) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.job.internal.DefaultJobManager.executeJob(DefaultJobManager.java:194) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.contrib.mailarchive.internal.MailArchiveScriptService.createLoadingJob(MailArchiveScriptService.java:112) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.contrib.mailarchive.internal.MailArchiveScriptService.load(MailArchiveScriptService.java:94) >>> >> >>> >> > [...] >>> >> >>> >> > Caused by: >>> org.xwiki.component.manager.ComponentLookupException: >>> > Can't >>> >> >>> >> find >>> >> >>> >> > descriptor for the component [role = [interface >>> > org.xwiki.job.Job] >>> >> >>> hint = >>> >> >>> >> > [mailarchivejob]] >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:355) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:161) >>> >> >>> >> > at >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> org.xwiki.job.internal.DefaultJobManager.createJob(DefaultJobManager.java:183) >>> >> >>> >> > [...] >>> >> >>> >> > >>> >> >>> >> > I also tried to manually register my custom Job component, >>> in the >>> >> >>> >> > initialize() of a side component (I checked that this code >>> got >>> >> >>> executed >>> >> >>> >> > previously to job creation), but with no different result: >>> >> >>> >> > >>> >> >>> >> > // Register custom job >>> >> >>> >> > >>> >> >>> >> > >>> >> >>> >> >>> >> >>> >>> > >>> this.componentManager.registerComponent(this.componentManager.getComponentDescriptor(Job.class, >>> >> >>> >> > "mailarchivejob")); >>> >> >>> >> > >>> >> >>> >> > Do you see something wrong in my approach ? >>> >> >>> >> > >>> >> >>> >> > Thanks, >>> >> >>> >> > Jeremie >>> >> >>> >> > _______________________________________________ >>> >> >>> >> > users mailing list >>> >> >>> >> > [email protected] >>> >> >>> >> > http://lists.xwiki.org/mailman/listinfo/users >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> >> -- >>> >> >>> >> Thomas Mortagne >>> >> >>> >> _______________________________________________ >>> >> >>> >> users mailing list >>> >> >>> >> [email protected] >>> >> >>> >> http://lists.xwiki.org/mailman/listinfo/users >>> >> >>> >> >>> >> >>> > _______________________________________________ >>> >> >>> > users mailing list >>> >> >>> > [email protected] >>> >> >>> > http://lists.xwiki.org/mailman/listinfo/users >>> >> >>> >>> >> >>> >>> >> >>> >>> >> >>> -- >>> >> >>> Thomas Mortagne >>> >> >>> _______________________________________________ >>> >> >>> users mailing list >>> >> >>> [email protected] >>> >> >>> http://lists.xwiki.org/mailman/listinfo/users >>> >> >>> >>> >> >> _______________________________________________ >>> >> >> users mailing list >>> >> >> [email protected] >>> >> >> http://lists.xwiki.org/mailman/listinfo/users >>> >> > >>> >> > >>> >> > >>> >> > -- >>> >> > Thomas Mortagne >>> >> >>> >> >>> >> >>> >> -- >>> >> Thomas Mortagne >>> >> _______________________________________________ >>> >> users mailing list >>> >> [email protected] >>> >> http://lists.xwiki.org/mailman/listinfo/users >>> > _______________________________________________ >>> > users mailing list >>> > [email protected] >>> > http://lists.xwiki.org/mailman/listinfo/users >>> >>> >>> >>> -- >>> Thomas Mortagne >>> _______________________________________________ >>> users mailing list >>> [email protected] >>> http://lists.xwiki.org/mailman/listinfo/users >>> >> > _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
