[xwiki-users] Failure to use custom Job
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 { } 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
I forgot [1] http://extensions.xwiki.org/xwiki/bin/view/Extension/Job+Module 2013/9/26 Jeremie BOUSQUET <[email protected]>
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 { }
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
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.
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
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.
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
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"); ? Is you jar installed as extension ?
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
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.
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
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.
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
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).
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
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
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
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
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 ? 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
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
On Sun, Sep 29, 2013 at 9:25 AM, Jeremie BOUSQUET <[email protected]> wrote:
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.
When you override a field, XWiki component manager only see one and does not inject the abstract one.
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
-- Thomas Mortagne
participants (2)
-
Jeremie BOUSQUET -
Thomas Mortagne