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
-~----------~----~----~----~------~----~------~--~---

Reply via email to