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