Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Is there a way to find out who invoked a CFC?

Posted on 2006-07-13
7
Medium Priority
?
348 Views
Last Modified: 2013-12-24
Is there a way to find out who invoked a CFC? I would like to check and log who the calling .CFM or .CFC file is from within the CFC being invoked. Sort of like back in the Custom Tag days, I need to know which templated called me. I am looking at the GetMetaData() and GetPageContext() functions but nothing stands out yet as how to do what I need to do.

This is a pretty tough one, and I wish I could diagram it to help explain.

cfc1
cfc2
...
...
cfc55

In any of these CFC's, we have code wraped in try/catch statements. When an exception is thrown, the catch statements kick in. in the catch blocks, I invoke a cfc called myErrorCFC.cfc..

err = createObject("component", "myError");

From there inside of the catch block I am invoking a method (see below) which performs legancy handling/logging.

err.parseException(cfcatch.Message);

What I now need to do is extend that method to log who thrown the exception. Yes the simple way is to pass the name of the cfc or cfm page as an argument, but changing the code which invokes the err cfc is out of my control. So I am left with trying to solve this the hard way.

So far this is where I am at (in my "myErrorCFC.cfc", invoked from within the catch blocks) which is not currently working:

tmp = getPageContext().getException();

This does not work but it may clearify the approach I am taking. Does anyone have any good ideas on how to return the error object from the JRun/jsp/java side of things. "getPageContext()" returns a "coldfusion.runtime.NeoPageContext" object. The end result I am trying to achieve is simply (ha ha) to find out which cfc or cfm page that the exception was thrown and having access to any additional info would be benificial as well.

Any help will be appriciated greatly.

Thank you,
Erik
0
Comment
Question by:SealWeb
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
7 Comments
 
LVL 18

Accepted Solution

by:
Plucka earned 1000 total points
ID: 17105119
SealWeb,

Try

GetCurrentTemplatePath()

This should work for the page, not sure what will happen when another component has called it.

Regards
Plucka
0
 
LVL 9

Assisted Solution

by:73Spyder
73Spyder earned 1000 total points
ID: 17107966
It may be more work, but you could pass an extra argument with the page name to the cfc.  This way you would have the information right there.

You would have to modify all the invokes to include this though.
0
 
LVL 1

Expert Comment

by:micahp
ID: 17110206
this is just a shot in the dark and i certainly havent tried it but you may try diggin into the coldfusion debug variables accessible via:

coldfusion.server.ServiceFactory.getDebuggingService().getDebugger().getData();

or something close to that... (note: this is a java object so be sure to specify java in your createobject call)

you may be able to futz around with the stack trace or template trace and get what u are looking for...

gosh, this would be highly invasive tho it seems... the whole templatepath thing would probably be less so
0
 
LVL 1

Expert Comment

by:micahp
ID: 17112683
er... coldfusion.server.ServiceFactory.getDebuggingService() is what you want to be looking at...

coldfusion.server.ServiceFactory.getDebuggingService().getDebugger().getData() will return a query with all the queries that were run for the request...

sorry =P
0

Featured Post

Simplify Your Workload with One Tool

How do you combat today’s intelligent hacker while managing multiple domains and platforms? By simplifying your workload with one tool. With Lunarpages hosting through Plesk Onyx, you can:

Automate SSL generation and installation with two clicks
Experience total server control

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever sent email via ColdFusion and thought of tracking this mail to capture the exact date and time when the message was opened ?  If yes, then this article is for you ! First we need a table user_email with columns user_id , email , sub…
When it comes to security, close monitoring is a must. According to WhiteHat Security annual report, a substantial number of all web applications are vulnerable always. Monitis offers a new product - fully-featured Website security monitoring and pr…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

719 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question