I was having the same problems using jetty's hot deploy with ~ prepare- webapp in sbt so I switched to using JavaRebel. It works much better and I haven't had any problems with reloading since. I don't think there's any info on the sbt site about jrebel, but it's real easy to get set up. Just install it and get a license (free for scala use) from them at: http://www.zeroturnaround.com/scala-license/
Then change your sbt script to: java -Xmx256M -noverify -javaagent:/path/to/javarebel-2.0.2/ javarebel.jar -jar `dirname $0`/sbt-launcher-0.5.1.jar "$@" I did run into a problem using an embedded H2 database, which may or may not occur with Derby, when using jetty-run/jetty-stop from the sbt prompt. What happens is jetty-stop does not shutdown the jvm, so H2 doesn't shut down. To get around this I use "sbt jetty" directly in the terminal, that way when you stop it, the jvm shuts down and the db with it. I then have a second terminal that I open an sbt prompt in and use ~ prepare-webapp. For me, this setup has worked much better. Tim On Aug 1, 9:39 am, "Nolan Darilek" <no...@thewordnerd.info> wrote: > Wondering if anyone has gotten a chance to take a look at this? Life got > busy, and since my Lift projects aren't commercial just yet, they went > on the back burner. But I'm still seeing this. > > Also, not sure how I missed this question, but I don't think SBT is > undeploying the app before redeploying. Should it be? Maybe this is an > SBT rather than a Lift issue? > > Here is a partial transcript of an SBT session, not sure if these are > the same errors. It involves me making a code change, at which point > ~prepare-webapp picks it up and redeploys. I then get an error, try > stopping and relaunching Jetty and get another. Also, after that point, > I can't access the web app unless I completely restart SBT. Sorry for > the ANSI escape sequences in this. > > If this is an SBT issue then I'll gladly take it to that list. Thanks > for looking into this! > > ERROR - Failed to Boot > java.lang.IllegalStateException: Cannot modify after boot. > at net.liftweb.http.RulesSeq$class.safe_$qmark(LiftRules.scala:1056) > at net.liftweb.http.RulesSeq$class.prepend(LiftRules.scala:1063) > at net.liftweb.http.RulesSeq$$anon$5.prepend(LiftRules.scala:1043) > at net.liftweb.http.LiftFilter.preBoot(LiftServlet.scala:564) > at net.liftweb.http.LiftFilter.bootLift(LiftServlet.scala:555) > at net.liftweb.http.LiftFilter.init(LiftServlet.scala:530) > at > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:620) > > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > at > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234) > > at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) > at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > sbt.LazyJettyRun$$anonfun$sbt$LazyJettyRun$$reload$6.apply(WebApp.scala:198) > > at > sbt.LazyJettyRun$$anonfun$sbt$LazyJettyRun$$reload$6.apply(WebApp.scala:198) > > at scala.List.foreach(List.scala:841) > at sbt.LazyJettyRun$.sbt$LazyJettyRun$$reload(WebApp.scala:198) > at sbt.LazyJettyRun$$anon$1.filesChanged(WebApp.scala:124) > at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:486) > at org.mortbay.util.Scanner.reportDifferences(Scanner.java:352) > at org.mortbay.util.Scanner.scan(Scanner.java:280) > at org.mortbay.util.Scanner$1.run(Scanner.java:232) > at java.util.TimerThread.mainLoop(Timer.java:512) > at java.util.TimerThread.run(Timer.java:462) > [0m[ [0minfo [0m] [0mReload complete. [0m > [0m[ [0minfo [0m] [0mCompilation successful. [0m > [0m[ [0minfo [0m] [0m Post-analysis: 17 classes. [0m > [0m[ [0minfo [0m] [34m== compile == [0m > [0m[ [0minfo [0m] [34m [0m > [0m[ [0minfo [0m] [34m== prepare-webapp == [0m > [0m[ [0minfo [0m] [34m== prepare-webapp == [0m > [0m[ [32msuccess [0m] [0mSuccessful. [0m > [0m[ [0minfo [0m] [0m [0m > [0m[ [0minfo [0m] [0mTotal time: 10 s [0m > Waiting for source changes... (press any key to interrupt) > [0m[ [0minfo [0m] [0mReloading web application... [0m > [0m[ [0minfo [0m] [0mNO JSP Support for /, did not find > org.apache.jasper.servlet.JspServlet [0m > ERROR - Failed to Boot > java.lang.IllegalStateException: Cannot modify after boot. > at net.liftweb.http.RulesSeq$class.safe_$qmark(LiftRules.scala:1056) > at net.liftweb.http.RulesSeq$class.prepend(LiftRules.scala:1063) > at net.liftweb.http.RulesSeq$$anon$5.prepend(LiftRules.scala:1043) > at net.liftweb.http.LiftFilter.preBoot(LiftServlet.scala:564) > at net.liftweb.http.LiftFilter.bootLift(LiftServlet.scala:555) > at net.liftweb.http.LiftFilter.init(LiftServlet.scala:530) > at > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:620) > > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > at > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234) > > at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) > at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > sbt.LazyJettyRun$$anonfun$sbt$LazyJettyRun$$reload$6.apply(WebApp.scala:198) > > at > sbt.LazyJettyRun$$anonfun$sbt$LazyJettyRun$$reload$6.apply(WebApp.scala:198) > > at scala.List.foreach(List.scala:841) > at sbt.LazyJettyRun$.sbt$LazyJettyRun$$reload(WebApp.scala:198) > at sbt.LazyJettyRun$$anon$1.filesChanged(WebApp.scala:124) > at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:486) > at org.mortbay.util.Scanner.reportDifferences(Scanner.java:352) > at org.mortbay.util.Scanner.scan(Scanner.java:280) > at org.mortbay.util.Scanner$1.run(Scanner.java:232) > at java.util.TimerThread.mainLoop(Timer.java:512) > at java.util.TimerThread.run(Timer.java:462) > [0m[ [0minfo [0m] [0mReload complete. [0m > > > jetty-stop > [0m[ [0minfo [0m] [34m [0m > [0m[ [0minfo [0m] [34m== jetty-stop == [0m > [0m[ [0minfo [0m] [34m== jetty-stop == [0m > [0m[ [32msuccess [0m] [0mSuccessful. [0m > [0m[ [0minfo [0m] [0m [0m > [0m[ [0minfo [0m] [0mTotal time: 0 s [0m > > jetty-run > [0m[ [0minfo [0m] [34m [0m > [0m[ [0minfo [0m] [34m== compile == [0m > [0m[ [0minfo [0m] [0m Source analysis: 0 new/modified, 0 indirectly > invalidated, 0 removed. [0m > [0m[ [0minfo [0m] [0mCompiling main sources... [0m > [0m[ [0minfo [0m] [0mNothing to compile. [0m > [0m[ [0minfo [0m] [0m Post-analysis: 17 classes. [0m > [0m[ [0minfo [0m] [34m== compile == [0m > [0m[ [0minfo [0m] [34m [0m > [0m[ [0minfo [0m] [34m== prepare-webapp == [0m > [0m[ [0minfo [0m] [34m== prepare-webapp == [0m > [0m[ [0minfo [0m] [34m [0m > [0m[ [0minfo [0m] [34m== jetty-run == [0m > 2009-07-30 08:49:12.337::INFO: Logging to STDERR via > org.mortbay.log.StdErrLog > [0m[ [0minfo [0m] [0mjetty-6.1.14 [0m > [0m[ [0minfo [0m] [0mNO JSP Support for /, did not find > org.apache.jasper.servlet.JspServlet [0m > java.sql.SQLException: Failed to start database 'lift_example', see the > next exception for details. > at > org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown > Source) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown > Source) > at > org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source) > at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown > Source) > at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) > at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source) > at java.sql.DriverManager.getConnection(DriverManager.java:582) > at java.sql.DriverManager.getConnection(DriverManager.java:207) > at bootstrap.liftweb.DBVendor$.createOne(Boot.scala:79) > at bootstrap.liftweb.DBVendor$.newConnection(Boot.scala:91) > at net.liftweb.mapper.DB$$anonfun$2.apply(DB.scala:89) > at net.liftweb.mapper.DB$$anonfun$2.apply(DB.scala:89) > at net.liftweb.util.Full.flatMap(Box.scala:332) > at net.liftweb.mapper.DB$.newConnection(DB.scala:89) > at net.liftweb.mapper.DB$.getConnection(DB.scala:136) > at net.liftweb.mapper.DB$.use(DB.scala:315) > at net.liftweb.mapper.Schemifier$.schemify(Schemifier.scala:53) > at net.liftweb.mapper.Schemifier$.schemify(Schemifier.scala:36) > at bootstrap.liftweb.Boot.boot(Boot.scala:24) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > at > net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:408) > > at > net.liftweb.util.ClassHelpers$$anonfun$createInvoker$1.apply(ClassHelpers.scala:406) > > at > net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1096) > > at > net.liftweb.http.DefaultBootstrap$$anonfun$boot$1.apply(LiftRules.scala:1096) > > at net.liftweb.util.Full.map(Box.scala:330) > at net.liftweb.http.DefaultBootstrap$.boot(LiftRules.scala:1096) > at net.liftweb.http.LiftFilter.bootLift(LiftServlet.scala:556) > at net.liftweb.http.LiftFilter.init(LiftServlet.scala:530) > at > org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:620) > > at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) > at > org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234) > > at > org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) > at > org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) > at org.mortbay.jetty.Server.doStart(Server.java:222) > at > org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) > at > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---