That looks like just what I needed, Thanks David


On Dec 15, 9:17 pm, David Chandler <[email protected]> wrote:
> Vince Bonfanti's Deferred.defer() makes using task queues very easy,
> as there's only one servlet needed and he's already written it!
> There's an example of using it and a reference to the forum thread in
> which Vince posted the code here:
>
> http://turbomanage.wordpress.com/2009/11/20/deferred-defer-is-a-thing...
>
> HTH,
> /dmc
>
> On Dec 15, 2:23 pm, Rusty Wright <[email protected]> wrote:
>
> > At this point I'd suggest that you don't do it with GWT; step into the 
> > wayback machine and write a plain java servlet and do the necessary 
> > configuration/mapping with your web.xml.  Can you say old school?  There 
> > should be plenty of tutorials and samples on the web.
>
> > I'm thinking that you'd extend javax.servlet.http.HttpServlet and override 
> > its doGet() method.
>
> > John VDenleywrote:
> > > Wondering if this is now really a GWT question? Anyone got any ideas?
>
> > > On Dec 14, 10:25 am, John VDenley<[email protected]> wrote:
> > >> Thanks JD (slightly weird, I feel like Im writing to myself!) I think
> > >> we all understand what task queues are, the problem is how to actually
> > >> set up the functionality behind the URL
>
> > >> I think we are getting close to a simple example, which I will post as
> > >> soon as I get this mechanism working. From what I can tell it works
> > >> something like this (which Im posing as a series of questions):
>
> > >> Where should I put the function which extends the HttpServlet (eg
> > >> public class MyServletFunction extends HttpServlet {/*do something
> > >> useful*/}  )
> > >> I'm guessing it should be on the server side (eg as a new file within
> > >> com.myappname.server) called MyServletFunctionFile.java?
> > >> If so then should this be included somewhere OTHER than in the
> > >> myappname.gwt.xml file (eg  <servlet path="/MyServletFunction"
> > >> class="com.myappname.server.MyServletFunctionFile"/>)
>
> > >> Im guessing that this would then mean that in theory I could type 
> > >> inhttp://myappname.appspot.com/MyServletFunctiontoinvokethe "/*do
> > >> something useful*/" code?
>
> > >> Is there anything else I'm meant to define anywhere? Have I totally
> > >> misunderstood this process? If so then hopefully what Ive written here
> > >> illustrates the problems that some of us are having with getting our
> > >> head around some of these "basic" concepts!
>
> > >> Thanks for everyones input and help so far here guys...
>
> > >> Cheers,
> > >> J
>
> > >> On Dec 14, 3:00 am, jd <[email protected]> wrote:
>
> > >>> Hi, task queues are just a way to call a url some time in the future.
> > >>> As Jason mentioned above, for a tasks "handler" you should probably
> > >>> just create a servlet (extend HttpServlet) because you do not need to
> > >>> generate a nice webpage as the result of the call - no one will see
> > >>> it.  In the HttpServlet.service(...) method write your code to
> > >>> actually handle the task making sure that it won't take longer than 30
> > >>> seconds.  This method will be called for POSTs or GETs to its url.
> > >>> Then you need to define the url that will call this servlet in your
> > >>> web.xml file.  If you are just using the default queue then you should
> > >>> map /_ah/queue/default to your "handler" servlet.
> > >>> To execute your task you could either call the url directly in a
> > >>> browser, from your GWT client or from other server side code.  But you
> > >>> probably want to use the TaskQueue to schedule the call for some time
> > >>> in the future from some other server side code like within your GWT
> > >>> RPC servlet.
> > >>> On Dec 14, 4:53 am, John VDenley<[email protected]> wrote:
> > >>>> Well put Rusty, thats exactly the frustration im having!!! LOL
> > >>>> On Dec 13, 9:42 pm, Rusty Wright <[email protected]> wrote:
> > >>>>> What method gets called in your code when your app receives a GET 
> > >>>>> request?  Or a POST request?  I think that's what you're looking for. 
> > >>>>>  Unfortunately the documentation for these frameworks sometimes tries 
> > >>>>> to sugar coat things and hide ("abstract away") these low level 
> > >>>>> details, or they assume it's obvious how things work, which it may be 
> > >>>>> to to some but not all of us.
> > >>>>> John VDenleywrote:
> > >>>>>> LOL - damn... though it shouldnt matter whats being used for the 
> > >>>>>> front
> > >>>>>> end really....maybe Im asking the wrong question!!
> > >>>>>> Does anyone else have any idea how to explain what the entry point is
> > >>>>>> within the java code, or where the code is that actually executes 
> > >>>>>> what
> > >>>>>> thetaskqueueis supposed to do? Does anyone know how to ask the
> > >>>>>> question Im trying to ask?!
> > >>>>>> On Dec 13, 8:22 pm, Rusty Wright <[email protected]> wrote:
> > >>>>>>> Heh, I'm on the flip side; I don't know anything about GWT.
> > >>>>>>> John VDenleywrote:
> > >>>>>>>> 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/testqueuesanditwouldshowthealert
> > >>>>>>>> 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....)
> > >>>>>>>> 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:
> > >>>>>>>>>   finalQueuequeue= QueueFactory.getDefaultQueue();
> > >>>>>>>>>  queue.add(TaskOptions.Builder.url("/zugzug.zug")); // web.xml 
> > >>>>>>>>> maps *.zug to stripes
> > >>>>>>>>> It's adding ataskto thequeue.
> > >>>>>>>>> Then I created an action bean for thegaetaskqueueautomaton 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 
> > >>>>>>>>> thetaskqueueautomaton 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 thetask, 
> > >>>>>>>>> thetaskqueueautomaton sent an http request to the url zugzug.zug, 
> > >>>>>>>>> then the TaskQueueActionBean was invoked and its success caused 
> > >>>>>>>>> the automaton to dequeue thetask(but not if it returned an error; 
> > >>>>>>>>> then the automaton retries).
> > >>>>>>>>> Rusty Wright wrote:
> > >>>>>>>>>> The docs say "The defaultqueuewill call the request handler at 
> > >>>>>>>>>> the URL
> > >>>>>>>>>> /worker ..."  So it sounds to me that if you were, forexample, 
> > >>>>>>>>>> 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 thetaskqueuething 
> > >>>>>>>>>> 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 nexttaskoff 
> > >>>>>>>>>> the
> > >>>>>>>>>> queueand do something with it.
> > >>>>>>>>>> I'm assuming that you have some web framework in front of 
> > >>>>>>>>>> everything and
>
> ...
>
> read more »

--

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