On Tue, Nov 10, 2009 at 4:19 PM, glenn <gl...@exmbly.com> wrote: > > David, > > (This is a copy of an earlier reply to your Migration Guide post. I > didn't get any response there, so I'm listing it on this > thread since it seems somewhat related to the current discussion) > > I attempted to follow your blog piece and rewrite the code in > Integrating Flex, BlazeDS, and Scala/Lift, at > http://flexonrails.net/?p=103. > > Maybe I'm being a bit ambitious to redo this, but when I run just the > Lift portion (without Flex/BazeDS) and make a call to my LiftActor > implementation, nothing happens. Shouldn't the > messageHandler be called automatically (There is nothing to "start", > is there?). It doesn't when I trace through the code. What am I doing > wrong? > > Here's my rewrite of Notifier using LiftActor: > > class Notifier extends LiftActor{ > > val msgBroker = MessageBroker.getMessageBroker(null) > val clientID = UUIDUtils.createUUID() > val msg = new AsyncMessage() > var notificationsSent = 0; > > val currentTime = new Date().getTime(); > > protected def messageHandler = { > case Notify =>{ > msg.setDestination("notifications") > msg.setClientId(clientID) > msg.setTimestamp(currentTime) > msg.setBody(new Notification(notificationsSent, "Hello from > Scala/Lift", new Date())) > msgBroker.routeMessageToService(msg,null) > notificationsSent = 1 > > } > > LAPinger.schedule(this, Notify, 500L) > > } > > } > > case object Notify > > class Notification(var id: Int, var message: String, var timesent: > Date){ > def getId = id > def setId(id: Int) = this.id = id > def getMessage = message > def setMessage(m: String) = message = m > def getTimesent = timesent > def setTimesent(t: Date) = timesent = t > > } > > I also have an XMLApiHelper with: > > def dispatch: LiftRules.DispatchPF = { > case Req("webservices" :: c :: Nil, "", GetRequest)=> () => > start_feed(c:String) > > and start_feed simply calls new Notifiier(). > > Given this code, the URL: http://localhost:8080/webservices/Notify > successfully calls into > start_feed and creates Notifier but the messageHandler isn't called. >
messageHandler will be called when a message is put into the Actor's mailbox. There's nothing in any of this code that sends a Notify message to a Notifier instance. That would look like: val myNotifier = new Notifier myNotifier ! Notify Note that you have a: LAPinger.schedule(this, Notify, 500L) call that's *inside* the Notify message handler case. This will send a Notify message to this in 500 ms, but that scheduling will only happen as part of a Notify message. If you change the code to: class Notifier extends LiftActor{ val msgBroker = MessageBroker.getMessageBroker(null) val clientID = UUIDUtils.createUUID() val msg = new AsyncMessage() var notificationsSent = 0; val currentTime = new Date().getTime(); protected def messageHandler = { case Notify =>{ msg.setDestination("notifications") msg.setClientId(clientID) msg.setTimestamp(currentTime) msg.setBody(new Notification(notificationsSent, "Hello from Scala/Lift", new Date())) msgBroker.routeMessageToService(msg,null) notificationsSent = 1 } } LAPinger.schedule(this, Notify, 500L) } The LAPinger call is part of the Notifier constructor (yeah, I think the random constructors all over the class body is a mistake, but Martin doesn't) and you'll get pinged in 500 ms. Also, as a process note, I've been swamped with family issues over the last 3 weeks (our nanny's finally back so I don't have 1/2 of my workday devoted to childcare), Derek's traveling with his family and Tim and Marius are swamped at work. The questions on the list have backed up quite a bit. I'm hoping to try to get some of the backlog of questions and tickets resolved. Thanks, David > > Any help is appreciated? > > Thanks, > > Glenn > > On Nov 10, 3:58 pm, David Pollak <feeder.of.the.be...@gmail.com> > wrote: > > Can you code up a full working example of what you want to do and post it > on > > GitHub? > > > > > > > > On Sat, Nov 7, 2009 at 10:15 AM, oshyshko <oshys...@gmail.com> wrote: > > > > > Removing BlazeDS servlet from LiftFilter coverage is a bad idea: > > > If it is done so, lift-mapper creates separate transactions for all > > > operations. > > > > >http://groups.google.com/group/liftweb/browse_thread/thread/e2c0dd2c5. > .. > > > > > This means LiftFilter and BlazeDS servlet should become friends. > > > > > "LiftRules.passNotFoundToChain = true" is in my Boot.scala. The > > > response is: > > > ================================ > > > HTTP/1.1 200 OK > > > Expires: Thu, 01 Jan 1970 00:00:00 GMT > > > Set-Cookie: JSESSIONID=1a8mg0498vrwd;Path=/ > > > Content-Length: 0 > > > Server: Jetty(6.1.21) > > > ================================ > > > > > Note: if I remove LiftFilter, the servlet works fine. > > > > > Any ideas how to make LiftFilter not to intrude into BlazeDS deeds? > > > > > On Oct 31, 2:19 pm, Timothy Perrett <timo...@getintheloop.eu> wrote: > > > > You needed to specify the passNotFoundToChain var, thats why you were > > > > getting the 404 originally - as you detail, its not needed to > > > > explicitly set the /messagebroker URL in your web.xml. > > > > -- > > Lift, the simply functional web frameworkhttp://liftweb.net > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > > Follow me:http://twitter.com/dpp > > Surf the harmonics > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---