Or you could use Boing to create your data source and hide most of that wiring
away from your code.

I am doing a sales pitch here for my own stuff :)))

https://github.com/lprefontaine/Boing/blob/master/examples/spring-1-to-boing.clj

Luc P.

On Mon, 22 Aug 2011 03:04:29 -0700 (PDT)
"Meikel Brandmeyer (kotarak)" <[email protected]> wrote:

> Hi,
> 
> Am Montag, 22. August 2011 11:53:32 UTC+2 schrieb faenvie:
> >
> > yesterday i came across the following use of 
> > the delay-macro: 
> >
> > (defn pooled-data-source 
> >   [db-connection-settings] 
> >   ; this Fn creates and returns object of type PooledDataSource 
> > ) 
> >
> > (defn pooled-data-source-as-singleton 
> >   [db-connection-settings] 
> >   (let [datasource (delay (pooled-data-source db-connection- 
> > settings))] 
> >     @datasource)) 
> >
> > i am not sure, what the exact semantic of this is and if 
> > it's safe in a multithreaded context. 
> >
> > What is the difference to using def/defonce ? 
> >
> > Someone who can explain ? 
> >
> 
> This snippet does not work as the original author intended. You can
> remove the whole delay incantations and everything will work as
> before. That's because each call of pooled-data-source-as-singleton
> creates a new delay, forces it and throws it away immediately. What
> probably was intended, is the use of memoize:
> 
> (def ^{:arglists ([db-connection-settings])}
> pooled-data-source-as-singleton (memoize pooled-data-source))
> 
> The intention is to delay the creation of the datapool instance until 
> runtime and not do it on load time. This is also nice if you have
> your db connection configurable in some non-code form. If you have
> only one db connection, which is hardwired in some Var at load time,
> you can go with the following:
> 
> (let [db-connection-pool (delay (pooled-data-source 
> db-connection-settings))]
>   (defn pooled-data-source-as-singleton
>     []
>     @db-connection-pool))
> 
> This is maybe, what the original author had in mind.
> 
> Hope, I'm not too far off.
> 
> Sincerely
> Meikel
> 



-- 
Luc P.

================
The rabid Muppet

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to