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 <javascript:>> 
> 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_reload$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 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.

Reply via email to