Thank you very much Herwig! The (.join jetty) did the trick :D --- Wilker Lúcio http://about.me/wilkerlucio/bio Woboinc Consultant +55 81 82556600
On Mon, Sep 15, 2014 at 8:50 PM, Herwig Hochleitner <hhochleit...@gmail.com> wrote: > Feel free to steal from my jetty component: > https://github.com/webnf/webnf/blob/master/server/src/clj/webnf/server/component.clj > > 2014-09-15 10:42 GMT+02:00 Sven Richter <sver...@googlemail.com>: > >> >> >> Am Montag, 15. September 2014 00:20:21 UTC+2 schrieb Wilker: >>> >>> I felt that was too much for me, but I'm digging into his source codes >>> to learn more, and he seems to do a more robust way to shut down the >>> server: https://github.com/juxt/modular/blob/master/ >>> modules/netty/src/modular/netty.clj >>> >> This looks interesting. I just had a look into the jetty ring adapter >> source code and did not find a decidated stop method. Maybe it's time for a >> feature request? >> >> His version seems to work, but it's for Netty... I'm actually starting to >>> consider switch to Netty just because of that. >>> >> Yea, not being able to restart without having to load up the jvm again >> and again is really a time stealer. I am curious, why don't you use >> http-kit? >> Or why did you decide for jetty / netty? >> >> >>> What I think is weird about that, is that if that was the case, a new >>> (start) should work after a few seconds, but it doesn't... Jetty seems to >>> hang on an never closes... For that my guess is that some pending operation >>> is going on preventing it from shutting down at all... A fix could be a way >>> to force Jetty to close and wait until it's actually closed. >>> >> Maybe it's also an idea to look into the actual jetty source code and >> find out how they do stop the server, maybe there is a way to call that >> code from clojure and see what's going on there. >> >> Best Regards, >> Sven >> >> >> >>> >>> Thanks for the help. >>> >>> --- >>> Wilker Lúcio >>> http://about.me/wilkerlucio/bio >>> Woboinc Consultant >>> +55 81 82556600 >>> >>> On Sun, Sep 14, 2014 at 6:29 PM, Sven Richter <sve...@googlemail.com> >>> wrote: >>> >>>> Hi Wilker, >>>> >>>> I have been going the same way and never really found out why this >>>> happens (I am using http-kit instead of jetty). >>>> However, one thing that I did not knew was that a refresh will delete >>>> references of vars. So if you keep your stop function somewhere and call >>>> refresh before the stop function you will not be able to stop jetty anymore >>>> and hence, when you try to start it, it is already running. >>>> >>>> I implemented my own component library, having the same problems, >>>> especially when I was using a lot of protocols / records (may have been >>>> just a coincidence) and finally found about the hara.component library. >>>> I am using this one now and seem to have less problems. >>>> >>>> But, to be honest, I cannot believe that stuarts component library is >>>> the problem, but my way of using it or coding. >>>> >>>> Of course I'd be interested too to hear other opinions. >>>> >>>> Best Regards, >>>> Sven >>>> >>>> >>>> Am Sonntag, 14. September 2014 01:32:44 UTC+2 schrieb Wilker: >>>>> >>>>> I forgot to post before, here is the actual error: >>>>> >>>>> BindException Address already in use sun.nio.ch.Net.bind0 >>>>> (Net.java:-2) >>>>> >>>>> Also, adding a (Thread/sleep 1000) seems to increase the success rate, >>>>> but would be nice to be able to really wait on Jetty to shutdown instead >>>>> of >>>>> using arbitrary sleep. >>>>> >>>>> Thanks. >>>>> >>>>> --- >>>>> Wilker Lúcio >>>>> http://about.me/wilkerlucio/bio >>>>> Woboinc Consultant >>>>> +55 81 82556600 >>>>> >>>>> On Sat, Sep 13, 2014 at 8:20 PM, Wilker <wilke...@gmail.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I'm trying to apply the ideas from the component library: >>>>>> https://github.com/stuartsierra/component >>>>>> >>>>>> My problems is being about stop/start the Jetty server, for that >>>>>> purpose I created this component: >>>>>> >>>>>> (defrecord WebServer [app port join? jetty log] >>>>>> component/Lifecycle >>>>>> (start [c] >>>>>> (log "Starting jetty server...") >>>>>> (let [jetty (jetty/run-jetty (:handler app) {:port port :join? >>>>>> join?})] >>>>>> (log "Server started at port" port) >>>>>> (assoc c :jetty jetty))) >>>>>> >>>>>> (stop [c] >>>>>> (when (:jetty c) >>>>>> (log "Stopping jetty...") >>>>>> (.stop (:jetty c)) >>>>>> (log "Server stopped.")) >>>>>> >>>>>> (assoc c :jetty nil))) >>>>>> >>>>>> (defn webserver-component >>>>>> ([port] (webserver-component port true)) >>>>>> ([port join?] >>>>>> (map->WebServer {:port port :join? join?}))) >>>>>> >>>>>> It works, sometimes, but often I get this when I try to reset: >>>>>> >>>>>> Error starting #<ExceptionInfo clojure.lang.ExceptionInfo: Error in >>>>>> component :server in system com.stuartsierra.component.SystemMap >>>>>> calling #'com.stuartsierra.component/start {:reason >>>>>> :com.stuartsierra.component/component-function-threw-exception, >>>>>> :function #'com.stuartsierra.component/start, :system-key :server, >>>>>> :component #cadegp.components.web_server.WebServer{:app >>>>>> #cadegp.components.web_app.CadegpApp{:conn >>>>>> #cadegp.components.database.Database{:uri >>>>>> datomic:free://localhost:4334/cadegp, :connection #<Connection >>>>>> {:db-id cadegp-48d87324-7849-4255-b798-865b02ee9d9d, :index-rev 0, >>>>>> :basis-t 1176, :next-t 1177, :unsent-updates-queue 0, :pending-txes 0}>}, >>>>>> :handler #<reload$wrap_reload$fn__1728 ring.middleware.reload$wrap_re >>>>>> load$fn__1728@6608b223>, :handler-ext #<user$wrap_dev_handler >>>>>> user$wrap_dev_handler@7e174cba>}, :port 8000, :join? false, :jetty >>>>>> nil, :log #<core$println clojure.core$println@7a2c3090>}, :system >>>>>> #<SystemMap>}> >>>>>> >>>>>> Seems that it tries to start the server before it have time to shut >>>>>> it down. >>>>>> >>>>>> Any of you had a similar issue or know how to work around that? >>>>>> >>>>>> Thanks. >>>>>> >>>>>> --- >>>>>> Wilker Lúcio >>>>>> http://about.me/wilkerlucio/bio >>>>>> Woboinc Consultant >>>>>> +55 81 82556600 >>>>>> >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To post to this group, send email to clo...@googlegroups.com >>>> Note that posts from new members are moderated - please be patient with >>>> your first post. >>>> To unsubscribe from this group, send email to >>>> clojure+u...@googlegroups.com >>>> For more options, visit this group at >>>> http://groups.google.com/group/clojure?hl=en >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to clojure+u...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.