Thanks for this Rusty, Im not sure I understand all of it right away
(perhaps with more investigation I will work it out)
However Its worth mentioning that as far as I know Im not using Spring
or Stripes or Struts (not even sure what any of these are!)
I am using native GWT (v2.0)/GAE (v1.2.8) and using RPC to make calls
to the server side.

I have tried creating a "public" function in my main java file (right
above the onModuleLoad() function) as follows:
    public void testqueues()
    {
        Window.alert("hello test queues");
    }

The thinking then being that I might be able to make a call to
http://your-gae-app.appspot.com/testqueues and it would show the alert
box. (I would like to prove this in the dev environment, but Im not
sure how to do this now that the URL for that is currently
http://localhost:8888/IDeBanet.html/testqueues?gwt.codesvr=192.168.0.6:9997)

Its entirely possible that I have totally misunderstood how this is
meant to be working and if so I apologise for asking stupid questions,
or making incorrect/confusing statements, but it seems theres no real
way of figuring out this stuff until you just try to implement it! Ive
learnt a huge amount about web development and in particular GWT/GAE
over the last 4-5 months!!

Cheers,
J

On Dec 13, 5:46 am, Rusty Wright <[email protected]> wrote:
> I think I got the gist of it.  As a test I modified the Stripes action bean 
> that handles my first page and added the following to its @DefaultHandler 
> method:
>
>   final Queue queue = QueueFactory.getDefaultQueue();
>   queue.add(TaskOptions.Builder.url("/zugzug.zug")); // web.xml maps *.zug to 
> stripes
>
> It's adding a task to the queue.
>
> Then I created an action bean for the gae task queue automaton to poke:
>
>   @UrlBinding("/zugzug.zug")
>   public class TaskQueueActionBean implements ActionBean { ...
>
> and its @DefaultHandler method contains:
>
>   @SuppressWarnings("unchecked")
>   final List headerNames =
>           Collections.list(getContext().getRequest().getHeaderNames());
>   this.log.debug("header names: {}", headerNames);
>
> And then the log received:
>
>   header names: [Content-Type, User-Agent, Referer, Host, 
> X-AppEngine-QueueName, X-AppEngine-TaskName, X-AppEngine-TaskRetryCount, 
> Content-Length]
>
> The first time I tried it I forgot to create the corresponding jsp view file, 
> zugzug.jsp (which is essentially empty), and the task queue automaton kept 
> retrying because stripes was returning an error because the jsp file was 
> missing; lots of those log.debug lines in the log file.  After I fixed that 
> then it was only in there once for each time I went to my first page.
>
> The first page action bean enqueued the task, the task queue automaton sent 
> an http request to the url zugzug.zug, then the TaskQueueActionBean was 
> invoked and its success caused the automaton to dequeue the task (but not if 
> it returned an error; then the automaton retries).
>
>
>
> Rusty Wright wrote:
> > The docs say "The default queue will call the request handler at the URL
> > /worker ..."  So it sounds to me that if you were, for example, using
> > Spring MVC, and had a Spring controller with
>
> > @Controller
> > @RequestMapping("/worker")
> > public final class WorkerController {
> >   �...@requestmapping(method = RequestMethod.GET)
> >    public String handleGetRequest(final ModelMap model) {
> >        this.log.debug("called");
>
> >        return (null);
> >    }
> > }
>
> > then it would call your handleGetRequest() method 5 times a second, by
> > sending an http GET (or POST?) request to your /worker url each time.
>
> > Similarly, with Stripes (and for Struts 2 probably something similar) it
> > would be something like
>
> > @UrlBinding("/worker")
> > public class WorkerActionBean implements ActionBean {
> >   �...@defaulthandler
> >    public Resolution handleRequest() {
> >        this.log.debug("called");
>
> >        return (null);
> >    }
> > }
>
> > I'm returning null because I don't know what the task queue thing does
> > with what it gets back (I didn't read much of their docs; to tell the
> > truth, I stopped at that sentence I quoted at the top because it sounds
> > very similar to their cron thing, which docs I did read most of).  I'm
> > undoubtedly also lacking the code needed to pull the next task off the
> > queue and do something with it.
>
> > I'm assuming that you have some web framework in front of everything and
> > thus don't need a servlet mapping in your web.xml for the /worker url
> > since the web framework is handling the url mapping.
>
> > So they're "pinging" your /worker url using a plain old http request to
> > initiate running each task; your controller or action bean is what
> > performs the task.  Think of it like you typed in your browser's address
> > boxhttp://your-gae-app.appspot.com/worker?task_queue_params_go_hereor
> > you used the command line programs cURL or wget.
>
> > If I understand this correctly then I would say that their sentence I
> > quoted isn't as clear as it could be.  Given the way it's stated, is the
> > task queue really able to bypass all of the http request processing and
> > directly invoke my handler method?  How would it know which class+method
> > handles that url?  I would think that the servlet container calls the
> > request method, as a result of their task queue automaton diddling the url.
>
> > John VDenleywrote:
> >> Yes, I would like a "real" example of how to do this too, I get that
> >> we need to use a URL to accept the request to do something, but where
> >> does the URL start executing code. obviously its not going to be at
> >> the "onModuleLoad" entry point.
>
> >> Thanks,
> >> John
>
> >> On Nov 11, 1:23 am, edarroyo <[email protected]> wrote:
> >>> Is there any gae samples usingtaskqueues that we can look at?
> >>> I am having a really hard time understanding how to useTaskQueues.
>
> >>> Thanks!
>
> >>> On Oct 27, 6:18 pm, Vincent <[email protected]> wrote:
>
> >>>> Thanks , Jason. It's very helpful for me to understand how to use this
> >>>> new API.
>
> >> --
>
> >> You received this message because you are subscribed to the Google
> >> Groups "Google App Engine for Java" group.
> >> To post to this group, send email to
> >> [email protected].
> >> To unsubscribe from this group, send email to
> >> [email protected].
> >> For more options, visit this group at
> >>http://groups.google.com/group/google-appengine-java?hl=en.

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to