|
Re: job scheduler with quartz [message #719182 is a reply to message #714056] |
Fri, 26 August 2011 09:08 |
Eclipse User |
|
|
|
Scout provides a Scheduler which provides the execution of periodically
execution of jobs. To get there add the following lines to your
ServerApplication.start method:
Scheduler scheduler = new
Scheduler(Activator.getDefault().getBackendSubject(),
ServerSession.class, new Ticker(Calendar.SECOND));
scheduler.addJob(new AbstractSchedulerJob("anyGroupId", "aJobId") {
@Override
protected boolean execAcceptTick(TickSignal signal, int second,
int minute, int hour, int day, int week, int month, int year, int
dayOfWeek, int dayOfMonthReverse, int dayOfYear, int secondOfDay) {
return second % 10 == 0;
}
@Override
public void run(IScheduler scheduler, TickSignal signal) throws
ProcessingException {
System.out.println("executed job... " + signal.getMinute() +
"-" + signal.getSecond());
}
});
scheduler.start();
Activator.getDefault().setScheduler(scheduler);
To add SchedulerJobs from anywhere use
Activator.getDefault().getScheduler().addJob(...).
Does the scheduler fit your needs?
-Andreas
On 09.08.2011 19:40, irheat wrote:
> Is there a way to use quartz scheduler with scout? I am testing scout
> with a existing web application which has some quartz schedule jobs. I
> would like to reuse those existing quartz jobs.
|
|
|
|
Re: job scheduler with quartz [message #719302 is a reply to message #719258] |
Fri, 26 August 2011 16:15 |
Eclipse User |
|
|
|
The easiest way to get multiple outline support is to somewhere create
implementations of AbstractOutlineButton. Alternatively you can take a
look in AbstractOutlineButton what has to be done to activate an Outline.
The attached 'TestOutlineTreeForm' contains a snap box with several
outline buttons. In case of using this class aware to the change the
'execOpened' method in your Desktop to open the 'TestOutlineTreeForm'
instead of the DefaultOutlineTreeForm.
Regarding the Quarz library:
I'll try to run a Quarz scheduler in an Eclipse RCP environment. If that
works there is no reason to change any of your Quarz jobs.
- Andreas
On 26.08.2011 16:20, irheat wrote:
> Thanks Andreas, I have read the doc in scout wiki on the scheduler. My
> problem is that the app I just take over has quite a few schedule job in
> quartz, those jobs has already in production and I hope there is some
> way that I can reuse them without major rewrite of code. Anyway I have
> started to convert some of the simple one using the scout scheduler now.
>
> By the way, how do I change outline view in swt client? I try the
> OutlineViewButton approach suggested in another post, it work on swing
> client, but not in swt client.
package org.eclipse.scout.rt.test.client.ui.forms;
import org.eclipse.scout.commons.annotations.Order;
import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
import org.eclipse.scout.rt.client.ClientSyncJob;
import org.eclipse.scout.rt.client.ui.basic.tree.ITree;
import org.eclipse.scout.rt.client.ui.desktop.DesktopEvent;
import org.eclipse.scout.rt.client.ui.desktop.DesktopListener;
import org.eclipse.scout.rt.client.ui.desktop.IDesktop;
import org.eclipse.scout.rt.client.ui.desktop.outline.AbstractOutlineButton;
import org.eclipse.scout.rt.client.ui.desktop.outline.IOutline;
import org.eclipse.scout.rt.client.ui.desktop.outline.IOutlineTreeForm;
import org.eclipse.scout.rt.client.ui.form.AbstractForm;
import org.eclipse.scout.rt.client.ui.form.AbstractFormHandler;
import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox;
import org.eclipse.scout.rt.client.ui.form.fields.snapbox.AbstractSnapBox;
import org.eclipse.scout.rt.client.ui.form.fields.treefield.AbstractTreeField;
import org.eclipse.scout.rt.test.client.outline.MainOutline;
import org.eclipse.scout.rt.test.client.outline.StandardOutline;
import org.eclipse.scout.rt.test.client.ui.forms.TestOutlineTreeForm.MainBox.OutlineTreeField;
public class TestOutlineTreeForm extends AbstractForm implements IOutlineTreeForm {
private static final IScoutLogger LOG = ScoutLogManager.getLogger(TestOutlineTreeForm.class);
private DesktopListener m_desktopListener;
public TestOutlineTreeForm() throws ProcessingException {
super();
}
@Override
protected boolean getConfiguredAskIfNeedSave() {
return false;
}
@Override
protected boolean getConfiguredCacheBounds() {
return true;
}
@Override
protected int getConfiguredDisplayHint() {
return DISPLAY_HINT_VIEW;
}
@Override
protected String getConfiguredDisplayViewId() {
return VIEW_ID_OUTLINE;
}
@Override
protected void execInitForm() throws ProcessingException {
m_desktopListener = new DesktopListener() {
@Override
public void desktopChanged(DesktopEvent e) {
switch (e.getType()) {
case DesktopEvent.TYPE_OUTLINE_CHANGED: {
installTree(e.getOutline());
break;
}
}
}
};
IDesktop desktop = ClientSyncJob.getCurrentSession().getDesktop();
desktop.addDesktopListener(m_desktopListener);
installTree(desktop.getOutline());
}
@Override
protected void execDisposeForm() throws ProcessingException {
super.execDisposeForm();
ClientSyncJob.getCurrentSession().getDesktop().removeDesktopListener(m_desktopListener);
m_desktopListener = null;
}
private void installTree(ITree tree) {
getOutlineTreeField().setTree(tree, true);
// IDesktop desktop=ClientJob.getCurrentSession().getDesktop();
if (tree != null) {
setTitle(tree.getTitle());
setIconId(tree.getIconId());
}
}
public MainBox getMainBox() {
return (MainBox) getRootGroupBox();
}
public OutlineTreeField getOutlineTreeField() {
return getFieldByClass(OutlineTreeField.class);
}
public void startView() throws ProcessingException {
startInternal(new ViewHandler());
}
@Order(10.0f)
public class MainBox extends AbstractGroupBox {
@Override
protected boolean getConfiguredBorderVisible() {
return false;
}
@Override
protected String getConfiguredBorderDecoration() {
return BORDER_DECORATION_EMPTY;
}
@Override
protected int getConfiguredGridColumnCount() {
return 1;
}
@Order(10.0f)
public class OutlineTreeField extends AbstractTreeField {
@Override
protected boolean getConfiguredLabelVisible() {
return false;
}
@Override
protected int getConfiguredGridW() {
return 1;
}
@Override
protected int getConfiguredGridH() {
return 20;
}
}
@Order(20.0)
public class OutlineSelectorField extends AbstractSnapBox {
@Override
public int getConfiguredGridH() {
return 1;
}
@Override
protected int getConfiguredGridW() {
return 1;
}
@Override
protected boolean getConfiguredGridUseUiHeight() {
return true;
}
@Order(10.0)
public class MainOutlineButton extends AbstractOutlineButton {
@Override
protected Class<? extends IOutline> getConfiguredOutline() {
return MainOutline.class;
}
}
@Order(20.0)
public class StandardOutlineButton extends AbstractOutlineButton {
@Override
protected Class<? extends IOutline> getConfiguredOutline() {
return StandardOutline.class;
}
}
}
}
@Order(10.0f)
public class ViewHandler extends AbstractFormHandler {
}
}
|
|
|
Re: job scheduler with quartz [message #719314 is a reply to message #719258] |
Fri, 26 August 2011 16:57 |
Eclipse User |
|
|
|
And the quarz example.
To get quarz running you have to add the quarz libraries to server
bundle classpath (Manifest.MF - Runtime - Classpath) and start a
Scheduler in the 'ServerApplication.start' method and stop it again in
the 'ServerApplication.stop' method. The quarz.properties file has to be
on the classpath as well - easiest way is to put it in the src folder.
You can find an example in the attached zip file where the quarz libs
are removed due to license issues.
-Andreas
On 26.08.2011 16:20, irheat wrote:
> Thanks Andreas, I have read the doc in scout wiki on the scheduler. My
> problem is that the app I just take over has quite a few schedule job in
> quartz, those jobs has already in production and I hope there is some
> way that I can reuse them without major rewrite of code. Anyway I have
> started to convert some of the simple one using the scout scheduler now.
>
> By the way, how do I change outline view in swt client? I try the
> OutlineViewButton approach suggested in another post, it work on swing
> client, but not in swt client.
|
|
|
|
Re: job scheduler with quartz [message #719864 is a reply to message #719825] |
Mon, 29 August 2011 08:47 |
Eclipse User |
|
|
|
Could you please provide the stack trace of the NPE?
-Andreas
On 29.08.2011 09:01, irheat wrote:
> Thanks Andreas, I have test out the quartz in ServerApplication and it
> works. As for the outline switch, I try the treeform example and it works.
> I try to add a action in the swt ui (not the client) to switch outline,
> I create a action for changing outline. Here is my code:
>
> =========================================================
> m_environment = Activator.getDefault().getEnvironment();
> IDesktop desktop = m_environment.getScoutDesktop();
>
> if(desktop.getAvailableOutlines().length > 1) {
> IOutline m_outline = desktop.getAvailableOutlines()[1]; //get the second
> outline
> }
>
> m_outline.setVisible(true);
> m_outline.setEnabled(true);
>
> desktop.setOutline(m_outline);
> ========================================================
> but I always get a null pointer exception at the last line:
> desktop.setOutline(m_outline);
>
> What am I missing here?
>
>
|
|
|
Re: job scheduler with quartz [message #719865 is a reply to message #719825] |
Mon, 29 August 2011 08:52 |
Eclipse User |
|
|
|
Ensure to propagate your outlines on the desktop by:
Desktop{
@Override
protected Class<? extends IOutline>[] getConfiguredOutlines() {
return new Class[]{Test1Outline.class, Test2Outline.class};
}
}
-Andreas
On 29.08.2011 09:01, irheat wrote:
> Thanks Andreas, I have test out the quartz in ServerApplication and it
> works. As for the outline switch, I try the treeform example and it works.
> I try to add a action in the swt ui (not the client) to switch outline,
> I create a action for changing outline. Here is my code:
>
> =========================================================
> m_environment = Activator.getDefault().getEnvironment();
> IDesktop desktop = m_environment.getScoutDesktop();
>
> if(desktop.getAvailableOutlines().length > 1) {
> IOutline m_outline = desktop.getAvailableOutlines()[1]; //get the second
> outline
> }
>
> m_outline.setVisible(true);
> m_outline.setEnabled(true);
>
> desktop.setOutline(m_outline);
> ========================================================
> but I always get a null pointer exception at the last line:
> desktop.setOutline(m_outline);
>
> What am I missing here?
>
>
|
|
|
|
Re: job scheduler with quartz [message #720391 is a reply to message #719956] |
Tue, 30 August 2011 13:31 |
Eclipse User |
|
|
|
I see our fault;) we did not provide debug information so far. May I ask
you to download 'Eclipse Indigo for RCP and RAP developers'
(http://www.eclipse.org/downloads/packages/eclipse-rcp-and-rap-developers/indigor)
and grab Scout 3.7.1 RC2 from p2 repository
(http://download.eclipse.org/scout/3.7.1/update/). And provide the stack
trace again.
-Andreas
On 29.08.2011 16:54, irheat wrote:
> All the outline is initialized in Desktop:
> @Override
> protected Class<? extends IOutline>[] getConfiguredOutlines() {
> ArrayList<Class> outlines = new ArrayList<Class>();
> outlines.add(ConfigureOutline.class);
> outlines.add(ReportOutline.class);
> outlines.add(OverviewOutline.class);
> outlines.add(UserOutline.class);
> return outlines.toArray(new Class[outlines.size()]);
> }
>
>
> Stack Trace is below, the first 3 lines are debug print out I generated
> before the setOutline call:
>
> outlines: 4
> buttons: 4
> outline found: User
> java.lang.NullPointerException
> at
> org.eclipse.scout.rt.client.ui.desktop.AbstractDesktop.setOutline(Unknown Source)
>
> at
> com.sageway.ems.ui.swt.application.ChangeOutlineAction.run(ChangeOutlineAction.java:65)
>
> at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
> at
> org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
>
> at
> org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
>
> at
> org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
>
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
> at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> at
> com.sageway.ems.ui.swt.application.Application.startSecure(Application.java:48)
>
> at
> com.sageway.ems.ui.swt.application.Application$1.run(Application.java:34)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Unknown Source)
> at
> com.sageway.ems.ui.swt.application.Application.start(Application.java:32)
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
|
|
|
|
Re: job scheduler with quartz [message #720787 is a reply to message #720436] |
Wed, 31 August 2011 08:44 |
Eclipse User |
|
|
|
Ok, you are calling the setOutline method directly from the UI thread.
Scout does provide a service context defining the scope of services.
Therefore services as used in
'AbstractDesktop.setOutline(AbstractDesktop.java:670)' are usually bound
to a context (See plugin.xml service extension).
Change you code to:
ISwtEnvironment env = Activator.getDefault().getEnvironment();
final IDesktop desktop = env.getScoutDesktop();
Runnable t = new Runnable() {
@Override
public void run() {
// your code here
if(desktop.getAvailableOutlines().length > 1) {
//get the second outline
IOutline outline = desktop.getAvailableOutlines()[1];
outline.setVisible(true);
outline.setEnabled(true);
desktop.setOutline(outline);
}
}
};
env.invokeScoutLater(t, 0);
Hope it helps.
-Andreas
On 30.08.2011 17:24, irheat wrote:
> stack trace after install new version:
>
> java.lang.NullPointerException
> at
> org.eclipse.scout.rt.client.ui.desktop.AbstractDesktop.setOutline(AbstractDesktop.java:670)
>
> at
> com.sageway.ems.ui.swt.application.ChangeOutlineAction.run(ChangeOutlineAction.java:65)
>
> at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
> at
> org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
>
> at
> org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
>
> at
> org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
>
> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
> at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> at
> com.sageway.ems.ui.swt.application.Application.startSecure(Application.java:48)
>
> at
> com.sageway.ems.ui.swt.application.Application$1.run(Application.java:34)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Unknown Source)
> at
> com.sageway.ems.ui.swt.application.Application.start(Application.java:32)
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
|
|
|
|
Powered by
FUDForum. Page generated in 0.04635 seconds