Thanks everyone for responding. Unfortunately, the method suggested by Rich
below seemed to create a pointer rather than a separate instance of the
object, as I had hoped. However, after discussing this with a co-worker, we
seem to have cooked-up a viable solution.
There were two objects I wanted to "copy" into the request scope. So, in
each of those objects, we added a copy() constructor that took the initial
object, then copied all of the properties over, for instance:
<cffunction name="copy" access="public" output="false"
returntype="AuthenticatedUser">
<cfargument name="object" type="AuthenticatedUser" required="true"
/>
<cfscript>
_userID = object.getUserID();
_username = object.getUsername();
_firstName = object.getFirstName();
_lastName = object.getLastName();
_email = object.getEmail();
_permissions = object.getPermissions();
_isAuthenticated = object.getIsAuthenticated();
</cfscript>
<cfreturn this />
</cffunction>
Then, in Application.cfc, onRequestStart():
<!--- Copy AuthenticatedUser object over to request scope --->
<cflock timeout="10" throwontimeout="false" type="readonly" scope="session">
<cfset request.myAuthenticatedUser =
createObject("component","AuthenticatedUser").copy(session.myAuthenticatedUs
er) />
</cflock>
Thanks!
Ryan
> -----Original Message-----
> From: Rich [mailto:[EMAIL PROTECTED]
> Sent: Monday, October 29, 2007 12:40 PM
> To: CF-Talk
> Subject: RE: Copying a CFC Persisted in Session Scope
>
> > I realize this topic may have been covered on this list a
> while back,
> > but I'm having problems locating a good answer, so here goes.
> > Typically in our administrative web sites, on a request, we
> copy over
> > our session variables to the request scope so we can have
> read-access
> > to the information without having to place locks all over the place.
>
> I would suggest that you create a Session Facade and then
> have all your objects reference the façade. It is generally
> a bad idea to have an object reference an external scope
> (session, request, etc.), and this technique hides the
> implementation from your business objects.
>
> Assuming you wanted to return an 'admin' object, your objects
> would use a
> sessionFaçade.getAdminObject() and the function within the
> façade would look like the following (excluding locks, etc.
> for the sake of simplicity):
>
> function getAdminObject() {
> Return session.adminObject
> }
>
> HTH,
> Rich Kroll
>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
ColdFusion is delivering applications solutions at at top companies
around the world in government. Find out how and where now
http://www.adobe.com/cfusion/showcase/index.cfm?event=finder&productID=1522&loc=en_us
Archive:
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:292263
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4