Andre Kapp
Tue, 08 Dec 2009 19:52:42 -0800
>Andre, > >Is this DAO a singleton? I notice the queries aren't var scoped. If this >is a singleton under load another thread could easily overwrite your >trans_insert variable in between issuing the query and logging the generated >key. > >Jaime > > > >> Tks Jaime. I have traced the code back to where this object is instantiated. It pretty much looks like a singleton design!
This is the code just above this transdao.cfc
<cfcomponent name="TransService" output="false">
<cffunction name="init" access="public"
returntype="moneymaker.core.model.trans.TransService" output="false">
<cfreturn this />
</cffunction>
<cffunction name="setTransDAO" returntype="void" access="public"
output="false">
<cfargument name="TransDAO"
type="moneymaker.core.model.trans.TransDAO" required="true" />
<cfset variables.dao = arguments.TransDAO />
</cffunction>
<cffunction name="setTransGateway" returntype="void" access="public"
output="false">
<cfargument name="TransGateway"
type="moneymaker.core.model.trans.TransGateway" required="true" />
<cfset variables.gateway = arguments.TransGateway />
</cffunction>
<cffunction name="getAll" returntype="query" access="public"
output="false">
<cfreturn variables.gateway.getAll() />
</cffunction>
<cffunction name="getLastTrans" returntype="query" access="public"
output="false">
<cfreturn variables.gateway.getLastTrans() />
</cffunction>
<cffunction name="getTransLimits" access="remote" returntype="struct">
<cfargument name="cardid" required="Yes" type="numeric" />
<cfreturn
variables.gateway.getTransLimits(argumentCollection=arguments) />
</cffunction>
<cffunction name="processTransaction" access="remote" returntype="struct">
<cfargument name="acctid" required="Yes" type="numeric" />
<cfargument name="cardid" required="Yes" type="numeric" />
<cfargument name="cardnumber" required="Yes" type="numeric" />
<cfargument name="amount" required="Yes" type="numeric" />
<cfargument name="type" required="Yes" type="string" />
<cfargument name="description" required="Yes" type="string" />
<cfargument name="paytype" required="Yes" type="numeric" />
<cfargument name="tracenumber" required="No" type="string" />
<cfset arguments.stlimits = getTransLimits(arguments.cardid) />
<cfreturn variables.dao.process(argumentCollection=arguments) />
</cffunction>
</cfcomponent>
I just want to prove that and then throw it back to the guys that wrote the
initial code.
Tks again for all the help...!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Want to reach the ColdFusion community with something they want? Let them know
on the House of Fusion mailing lists
Archive:
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:328994
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4