Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

onSessionEnd

New Here ,
Sep 17, 2008 Sep 17, 2008
I am calling the following adminapi method from within onSessionEnd in my application to clean the user's Datasource connection as shown in the code below...

************************************************************************************************************************
<!--- Login CF API--->
<cfinvoke component="CFIDE.adminapi.administrator" method="login">
<cfinvokeargument name="adminPassword" value="#Arguments.ApplicationScope.AppInt.CFSERVERPW#"/>
</cfinvoke>

<!--- DELETE DataSource --->
<cfinvoke component="CFIDE.adminapi.datasource" method="deleteDatasource">
<cfinvokeargument name="dsnname" value="#Arguments.SessionScope.auth.Temp_DSN#"/>
</cfinvoke>

<!--- Logout CF API--->
<cfinvoke component="CFIDE.adminapi.administrator" method="logout">
</cfinvoke>
************************************************************************************************************************

The code works as expected and does cleanup of the temporarily assigned datasource, however my onError method writes the following: "Error in Method [onSessionEnd] Event handler exception" to my application log shortly after firing. Does anyone have any insight on this problem.

Below is a complete snippet of entire onSessionEnd method. As you will see I am also invoking a com object to delete the DNS on my PSQL server, but I don't believe this is problem.

************************************************************************************************************************
<!--- Cleanup of Temp DSN and TEMP DS on Session End --->
<cffunction access="public" name="onSessionEnd" output="no" returnType="void">
<cfargument name="sessionScope" required="yes">
<cfargument name="applicationScope" required="yes">

<!--- Remove User from List of Active Sessions --->
<cfif StructKeyExists(arguments.sessionScope.auth, "WEB_USER_NAME")>
<cfset structDelete(arguments.applicationScope.sessionTracker,arguments.sessionScope.auth.sessionTracker)>
</cfif>

<!--- Delete DSN from CF Admin --->
<!--- Login CF API--->
<cfinvoke component="CFIDE.adminapi.administrator" method="login">
<cfinvokeargument name="adminPassword" value="#Arguments.ApplicationScope.AppInt.CFSERVERPW#"/>
</cfinvoke>

<!--- DELETE DataSource --->
<cfinvoke component="CFIDE.adminapi.datasource" method="deleteDatasource">
<cfinvokeargument name="dsnname" value="#Arguments.SessionScope.auth.Temp_DSN#"/>
</cfinvoke>

<!--- Loginout CF API--->
<cfinvoke component="CFIDE.adminapi.administrator" method="logout">
</cfinvoke>


<!--- Create PSQL the Session object --->
<cfobject class="dto.dtoSession.1" name="dtoSession" action="create" context="inproc" type="com">

<!--- Connect to Session --->
<cfset session_return = dtoSession.Connect(Arguments.ApplicationScope.AppInt.PSQLServerName,Arguments.ApplicationScope.AppInt.PSQLServerUID,Arguments.ApplicationScope.AppInt.PSQLServerPW)>

<cfif session_return NEQ 0>
<cflog text="PSQL v8 Error Status:#session_return#" type="Warning" log="Application">
</cfif>

<!--- Delete DSN --->
<cfobject class="dto.dtoDSN" name="del_dtoDSN" action="create" context="inproc" type="com">
<cfset delDSN_result = dtoSession.DSNs.Remove(Arguments.SessionScope.auth.Temp_DSN)>
<cfset retVal = dtoSession.disconnect()>

<cfif delDSN_result neq 0>
<cflog text="PSQL v8 DSN Removal error Status:#delDSN_result#" type="Warning" log="Application">
</cfif>

</cffunction>
************************************************************************************************************************

TOPICS
Advanced techniques
472
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Sep 17, 2008 Sep 17, 2008
Hi,

Can you post your "OnError" method's code here?.
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Sep 24, 2008 Sep 24, 2008
LATEST
<cffunction name="onError" output="no" returnType="void">
<cfargument name="exception" required="yes">
<cfargument name="eventName" type="string" required="yes">

<!--- Use the cflog tag to record info on the error --->
<cfif arguments.eventName is "">
<cflog type="Error" log="Application" text="#arguments.exception.message#">
<cfelse>
<cflog type="Error" log="Application" text="Error in Method [#arguments.eventName#] #arguments.exception.message#">
</cfif>

<!--- Let the <cferror> tags do their job. --->
<cfthrow object="#arguments.exception#">

</cffunction>

Thanks Dave
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources