Getting invoker object

How could I get the reference of a calling object?
An example:
class A {
method() {
B b = new B();
class B {
public B() {
/*getInstanceOfClassA*/
In class B I need the instance of the class A (a), without passing "this" to B (or b).
I suppose that it could be possible by using the stack trace or reflections, couldn't it?
Thanx
Marc

i'm interested to know what problem you're trying to solve that you would need this capability. i mean, if you want a method to have visibility to the object that called it, why not just pass it as a parameter to the method?
generally speaking, the "don't talk to strangers" design principle (also known as the "law of demeter") tells us that a method should send messages only to direct objects to avoid unnecessary coupling--a) self; b) a parameter of the method; c) an attribute of self; d) an element of a collection which is an attribute of self; or e) an object created within the method.
flipping this around a bit, if you want the calling object to be visible to the called object, you can create the visibility by passing the calling object as a parameter to the method, or making it globally visible somehow. i don't see how you'd get around that, or why you'd want to. i need to understand the problem you're trying to solve using the technique you desire.
you can discover the name of the method that called your method by creating a new Throwable and parsing its stack trace. Log4J uses this trick to discover the name of the class and method requesting that a log be written. this is discussed in numerous other posts.

Similar Messages

  • Get JSF objects in a Filter Class

    Hi! I have a problem with my JSF application. As the most of the web applications I have a login at the begining and I place a Listener - Filter classes for catching the session timeout to returning the user to the login page. All this works OK. The problem it´s to validate that the user only has 1 session open at the time, when the user begin session I change a flag into it's database row, and when the user logout the flags change again to false (both actions (login and logout) was fired by the user clicking it's respective buttons), this works fine, but I want to change the data flag in the database row with the timeout Filter classes after pass 1 minute. My Filter class it's like this:
        public void doFilter(ServletRequest request,ServletResponse response, FilterChain filterChain) throws IOException,ServletException {
            if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
                HttpServletRequest httpServletRequest = (HttpServletRequest) request;
                HttpServletResponse httpServletResponse = (HttpServletResponse) response;                      
                if (!StringUtils.contains(httpServletRequest.getRequestURI(), "welcomeJSF.jsp")) {                                
                    if((httpServletRequest.getRequestedSessionId() != null) && !httpServletRequest.isRequestedSessionIdValid()){
                         /* 1 */               
                           FacesContext context = FacesContext.getCurrentInstance();
                             User user = (User) context.getExternalContext().getSessionMap().get("simpleUser");
                             UserDAO conn = new UserDAO();
                             List users = conn.findByNumber(new Long(user.getNumber()));
                             persistence.User userDB = (persistence.User) users.get(0);
                             userDB.setUse(false);
                             Transaction tx = conn.getSession().beginTransaction();
                             conn.save(userDB);
                             tx.commit();
                             conn.getSession().close();                                     
                             /* 2 */                     
                        String timeoutUrl = httpServletRequest.getContextPath()+ "/faces/" + "welcomeJSF.jsp";
                        System.out.println("Session is not invalid. Redirecting to login page. ");
                        httpServletResponse.sendRedirect(timeoutUrl);
                        return;
            filterChain.doFilter(request, response);
        }When I comment from 1 to 2 works fine, but if I want to get the context.getExternalContext().getSessionMap().get("simpleUser") i get this error:
    java.lang.NullPointerException
         at validadores.SessionTimeoutFilter.doFilter(SessionTimeoutFilter.java:53)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Thread.java:619)This is because I'm working in a diferent conexts? How can I get Jsf objects from ServletRequest? or to pass getExternalContext().getSessionMap() to the filter class? Any ideas to change the database when the session timeouts if I'm using hibernate?
    Thanks for your time and help!

    correction :
    MyObjectProxy extends ObjectProxy{
         override callProperty(
              // your dyna logic
    and expose new MyObjectProxy(dynaInstance)

  • Same BO is getting invoked for Pur. Order, Schedule Agreement and Contract

    Hi All,
    My Scenario is like this:
    For Purchase order, Scheduling Agreement and for Contract the Release Statergy are same. For these three scenarios i have created 3 different workflow templates.
    My Purchase order workflow is working fine.
    My problem is :
    When i create a Schedule agreement or a contract, my PO business object is getting invoked and it goes to error.
    I have a doubt:
    For all the three scenario's they are using same number range, will this may be one of reason for the above problem???
    Kindly help me to resolve the issue.
    Thanks and Regards
    Balaji E.

    Hi,
    You can check this link:-
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/abap/workflow+scenario (based on PO change)
    https://www.sdn.sap.com/irj/scn/wiki?path=/display/crm/action%252bprofiles%252bin%252bsap-crm(reason for more than 1 WF trigger)
    More than 1 WF trigger, could be that there would be a triggering condition that triggers more than 1 WF. Since further the conditions are not satisfied, this could lead the WF in error state.
    Let me know if u still face any issues..!!
    Regards,
    Kanika

  • Getting "Method" objects

    hi, i'm trying to encapulate a method in an Object and utilize the methods in the Method Class.
    eg:
    void AMethod() {
    I want to get associated object for AMethod() and call methods in the Method Class with it. ie:
    object = AMethod.invoke();
    thanks

    http://java.sun.com/docs/books/tutorial/reflect/object/invoke.html

  • Concurrent timers are not getting invoked for same timer inf

    Do weblogic has some parameter in weblogic deployment descriptor like numAlarmThreads="5" minThreads="1" maxThreads="10" etc
    becoz I am facing one problem relating to timer service in EJB
    Problem Scope: Concurrent timers are not getting invoked for same timer info (Serializable object containing the details of timer).
    Details : I am implementing EJB timer 2.1 and when ejbTimeOut execution of one timer exceeds the interval time, next timeout doesn’t happens till the execution of first ejbTimeOut completes . Ideally the timers should behave in the manner that on every interval the ejbTimeOut should occur no matter the previous timeout is completed or not
    for example : consider there is timer T whose timeout occurs every minute, and on every timeout it calls process P, so on every minute ideally container should give call to process P irrespective of the previous status of P (call is complete or not). In our case next call to process P is not happening after timeout also since it is waiting for previous call to P to get completed

    You should also cross-post this in the WebLogic EJB forum:
    WebLogic Server - EJB

  • Concurrent timers are not getting invoked for same timer info (Serializable

    Problem Scope: Concurrent timers are not getting invoked for same timer info (Serializable object containing the details of timer).
    Details : I am implementing EJB timer 2.1 and when ejbTimeOut execution of one timer exceeds the interval time, next timeout doesn’t happens till the execution of first ejbTimeOut completes . Ideally the timers should behave in the manner that on every interval the ejbTimeOut should occur no matter the previous timeout is completed or not
    for example : consider there is timer T whose timeout occurs every minute, and on every timeout it calls process P, so on every minute ideally container should give call to process P irrespective of the previous status of P (call is complete or not). In our case next call to process P is not happening after timeout also since it is waiting for previous call to P to get completed

    You should also cross-post this in the WebLogic EJB forum:
    WebLogic Server - EJB

  • Concurrent timers are not getting invoked for same timer info

    Problem Scope: Concurrent timers are not getting invoked for same timer info (Serializable object containing the details of timer).
    Details : I am implementing EJB timer 2.1 and when ejbTimeOut execution of one timer exceeds the interval time, next timeout doesn’t happens till the execution of first ejbTimeOut completes . Ideally the timers should behave in the manner that on every interval the ejbTimeOut should occur no matter the previous timeout is completed or not
    for example : consider there is timer T whose timeout occurs every minute, and on every timeout it calls process P, so on every minute ideally container should give call to process P irrespective of the previous status of P (call is complete or not). In our case next call to process P is not happening after timeout also since it is waiting for previous call to P to get completed

    You should also cross-post this in the WebLogic EJB forum:
    WebLogic Server - EJB

  • RBA GATP check is not getting invoked for Sales Order

    Hi Everyone,
    RBA GATP check is not getting invoked for Sales order.
    I maintained the configuration settings for 'Rules-Based Availability Check', APO general settings (check mode, check instruction), carried out integrated rule maintenance, Rule determination for the combination of order type & product, associated the check mode to product master. Also maintained all the settings in ECC towards Req class, Req type, checking control etc.
    However, sales order is not invoking RBA Check though it is showing up the 'Rule' icon in the screen. Also, in the APO Availability check in Sales order when I click onto 'check instruction', I get the checking mode that pertains to RBA for business event 'A' (Sales order). Though I have not maintained any stock for the main material for which I have the sales order, yet system is confirming any quantity that I put in.
    I would expect that system would propose the same material in an alternate location where we have stock through RBA.
    Request you to share ideas on this.
    Regards,
    Avijit Dutta

    Hi Avijit,
    You should used No Checking Horizon in Checking instructions and also Check your rule control settings.
    What you have defined in 1st and 2nd steps. Check whether product substitution is carried out or Location Substitution.
    Thanks,
    Bala.

  • Could not get schema Object:java.sql.SQLSyntaxErrorException ora-904

    All of a sudden I get
    Could not get schema Object:java.sql.SQLSyntaxErrorException: ORA-00904: "SYS"."O"."NAME": ongeldige ID
    when doing anything in the tables tree in the connections pane
    The only thing I set recently is pga_aggregate_target
    Environment
    Oracle 11.2.0.1
    OS Windows Vista Ultimate sp2
    Sql developer 2.1.1.64.39 with its own JDK
    As the download links on OTN are broken I can not upgrade, and I'd rather not work in command line sqlplus.
    Help!!!
    Sybrand Bakker
    Senior Oracle DBA

    My copy of sqldeveloper isn't located in that directory. Would that matter?
    In the mean time I have disabled filtering the tables node. Opening the tables node doesn't result in exceptions anymore.
    Now, when I click on any table in that node I get 4 identical ora-904 error messages for sys.o.name for any table.
    Apparently it is querying either the all_objects view and it thinks it is querying sys.obj$.
    I didn't yet enable sql_trace for the session, I'm more or less giving up on sqldeveloper. I can not use the space bar in any datagrid, sqldeveloper has always been extreemly unresponsive when navigating the schema browser (as opposed to Toad), etc, etc. Too bad I bought Sue Harpers book, but I think I will be de-installing sqldeveloper soon.
    Sybrand Bakker
    Senior Oracle DBA

  • Getting Duplicate Object existing issue while deploying the BIAR file

    Hi All,
    We are trying to deploy BIAR File with XI R2 Command tool InstallEntSdkWrapper. But we are getting Duplicate Object exixting issue while deploying the BIAR file.
    Error Message:
    [report] [InstallEntSdkWrapper.main] Connecting to CMS plmdevapp31:6400 as administrator
       [report] [InstallEntSdkWrapper.CmsImportFile] Exception: An error occurred at the server :
       [report] Failed to commit objects to server : Duplicate object name in the same folder.
       [report]
       [report] [InstallEntSdkWrapper.main] BIAR File could not be imported
    If we are doing any promition with Import Wizard we have an option to "Overwrite object contents" option to overwite exixting objects. It will very helpful if any one suggest how we can achieve this through InstallEntSdkWrapper.
    Unfortunately there is no documentation availabe on InstallEntSdkWrapper.
    Cheers!

    That's a limitation with the XI Release 2 InstallEntSdkWrapper.jar tool.
    Sincerely,
    Ted Ueda

  • How to get the object class field value in CDHDR table for vendor

    hi
    how to get the object class field value in CDHDR table for vendor

    Try KRED/KRED_N as object class in CDHDR for Vendor.

  • Web Dynpro Java : Failed to get deployable object part info for component

    Currently we have a web dynpro java project which connects to the ABAP backend with Web Services. Everything seems fine, and when we transport to the production server via NWDI, we have the following error. Everytime we try to access the application , the error is occurred.
    com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Failed to get deployable object part info for component com.sie.attachmentcomp.AttachmentComp
        at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.getComponentDeploymentDescription(ClientComponent.java:784)
        at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.createComponent(ClientComponent.java:934)
        at com.sap.tc.webdynpro.clientserver.cal.ClientComponent.createComponent(ClientComponent.java:177)
        at com.sap.tc.webdynpro.progmodel.components.ComponentUsage.createComponentInternal(ComponentUsage.java:149)
        at com.sap.tc.webdynpro.progmodel.components.ComponentUsage.createComponent(ComponentUsage.java:116)
    It is working properly in our development , and testing environment. Only production has this error. And one weird thing is that this particular error occurred only sometimes to some user. For example; I could not access to the application with this error yesterday but my friend can access. Today, I can access in the morning but my friend cannot. For another friend , Yesterday he can access by using IE but not by Firefox. But today Firefox is fine but not with IE. It seems crazy.
    For more information, in our J2EE engine for the production server, we have 3 server nodes (clusters). And we are not sure it is the source of the problem. Is there any solution , and any way to know from the application that we are on which server?
    We also go and check from the Content Administrator in Web Dynpro Console. Under our project name, in the list of Components, sometimes we can see AttachmentComp but sometimes not.
    Please help us as our project is about to go-live next week.
    Thanks,
    Yu

    Hi Meenge,
    Please check below document for finding root cause for "Failed to start deployable object part info for <development component> and application <application name>"
    http://help.sap.com/saphelp_nwce711core/helpdata/en/44/7716e1633a12d1e10000000a422035/frameset.htm
    OR http://help.sap.com/saphelp_nw04/helpdata/EN/f4/1a1041a0f6f16fe10000000a1550b0/frameset.htm
    Hope it helps
    Regards
    Arun

  • Shell Script not getting invoked in File adapter

    Hi all,
    Requirement:
    PI need to pick the file from source directory and send it to target directory using SFTP.
    I'm using SCP command for this purpose.
    When I run the shell script (with simple SCP command) from command prompt, script is working fine.
    Same script is called from PI File adapter but script is not getting invoked.
    In the communication channel logs, "Executed OS command" is available. There are no Error/Warning messages in the log.
    NFS transport protocol is used in the File communication channel.
    Complete directory path of the shell script is mentioned in File channel -> Run Operating System command after message processing.
    Even the following simple command is not working from PI receiver file channel:
    echo "Test file" >> /data/test.txt
    Please let me know if I'm missing out something.
    Thanks,
    Geetha

    Hi Geetha,
    I think the syntax u are using is not correct. Please follow the below syntax:
    /path/<script_name> %F
    for ex: /staging/Interface/XI/Script/FTPData %F
    use the above in the communication channel.
    %F should be after a space.
    FTPData is the script name
    /staging/Interface/XI/Script/ is the location where the script is present
    Cheers,
    Souvik
    Edited by: Souvik Chatterjee on Apr 14, 2011 3:38 PM

  • Help to get text objects in ABAP

    Hi guys!
    I've created my first report program and need some help to get text objects into the report. The program combines the tables KNA1, LIKP, LIPS, VBAK, VBAP and VBKD to create a deliverylist which we import as excel info a shipping service. The issue at hand is that our website allows customers to change the ship-to party's address when creating an order. The adress are not updated to KNA1, but are comitted as a text on the ship-to on the delivery itself.
    The text I need in the report is RV50A-TXTWE.
    Can you help me get going on how to add this from the delivery?
    Thanks a lot!

    Your problem is that its a structure.  Structures are filled in a program and no longer exist after the program is closed.  They are temporary data.  It will have been moved to tables somewhere most likely.  The next step is to debug / trace through the code to find out what was done with it.
    What program were you using that created the structure?
    Neal

  • Hostname verifier does not get invoked

    Hi All,
    I am new to weblogic and currently facing an issue with SSL. I checked this forum but none of the solutions really worked for me, so seeking advice starting a new thread. Kindly help.
    Problem 1
    I have a REST webservice running in one weblogic server and another weblogic server contains a client which is based on the code from the following link -
    http://wiki.open-esb.java.net/attach/RestBCEchoSSL/SslClient.java
    One way handshaking is enabled in both the weblogic and the KeyStore and Truststore are read from configurable directory in the client java code. I specify a directory which resides outside weblogic home.
    Even though there is an HostnameVerifier implemented in the code to return true always, it does not get invoked and I get a certificate exception as below -
    <Warning> <Security> <BEA-090542> <Certificate chain received from xx.yy.zz.rrr - xx.yy.zz.rrr was not trusted causing SSL handshake failure. Check the certificate chain to determine if it should be trusted or not. If it should be trusted, then update the client trusted CA configuration to trust the CA certificate that signed the peer certificate chain. If you are connecting to a WLS server that is using demo certificates (the default WLS server behavior), and you want this client to trust demo certificates, then specify -Dweblogic.security.TrustKeyStore=DemoTrust on the command line for this client.>
    But when I run the java client from Eclipse I am able to invoke the webservice methods using HTTPs.
    So is not it possible to add a default hostname verifier as in the java code when the application is deployed in weblogic?
    Problem 2
    I another attempt to solve the above issue I turned off the hostname verification from weblogic admin console in the client weblogic side. In the console for the server Configuration > SSL->Hostname Verification field is set to "None". But that did not help.
    Then I added the '-Dweblogic.security.SSL.ignoreHostnameVerification=true' flag into the <domain>/bin/startWebLogic.sh file and restarted the weblogic. No luck again.
    ${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy -Dweblogic.security.SSL.ignoreHostnameVerification=true ${PROXY_SETTINGS} ${SERVER_CLASS}
    I tried recreating the certificate using the' hostname' instead of the ip address ( also added an entry into the /etc/hosts file putting the ip and hostname so that I can do ping <hostname> from the client and get response returned from the server side). Again no luck :(. I keep getting the same handshake failure as mentioned above.
    The weblogic version is 10.x.
    Thanks,
    Amrit

    I did some more research for the issue mentioned which I yet to get rid of.
    1) I wrote a REST web service which makes a call to another REST service deployed on another weblogic using HTTPs (same code as mentioned above is used). I delpoyed the war and made a http call to the first webservice, the other REST service was invoked successfully using HTTPs. So this confirmed that there is no problem with the certificates or keystore or hostname verifictaion.
    2) My actual application still throws the handshake exception as below -
    <Warning> <Security> <BEA-090542> <Certificate chain received from xx.yy.zz.rrr - xx.yy.zz.rrr was not trusted causing SSL handshake failure. Check the certificate chain to determine if it should be trusted or not. If it should be trusted, then update the client trusted CA configuration to trust the CA certificate that signed the peer certificate chain. If you are connecting to a WLS server that is using demo certificates (the default WLS server behavior), and you want this client to trust demo certificates, then specify -Dweblogic.security.TrustKeyStore=DemoTrust on the command line for this client.>
    So I think the problem is something else but weblogic is priniting the exception message wrong.
    The process hierarchy ( in UNIX ) is as shown below -
    bea 31914 31913 0 14:29 ? 00:00:00 /bin/sh <DOMAIN HOME>//bin/startWebLogic.sh
    bea 31989 31914 0 14:29 ? 00:01:25 /opt/bea/jdk160_24/bin/java <The weblogic start server process> started by startWebLogic.sh
    bea 32107 31989 0 14:29 ? 00:00:09 /opt/bea/jdk160_24/bin/java <One of custom process>
    bea 2038 32107 0 18:38 ? 00:00:15 /opt/bea/jdk160_24/bin/java <Another custom process which contains my java classes containing the REST client>
    The problem is there in both Weblogic 11 and 10.3 version.
    I will be grateful if someone gives any clue about the problem.

Maybe you are looking for

  • How do I stop iTunes from synching TV shows with my iPad?

    I have purchased the latest Mad Men TV series from iTunes using my iPad. Therefore, the entire season is now on my iPad. When I have the iPad in my house and iTunes is active on my Mac, synching begins (as I would like it to), but iTunes automaticall

  • Problem in the HTML Page

    Hello All, In our SUS system , PO Response tab is visible in Dev system and its not visible in Test System. Can you please tell me which settings is missing in Test System and How to find the root cause of the problem. Assured Points !! Thanks in Adv

  • How can I capture phone numbers of incoming calls?

    I want to capture the phone numbers of incoming calls. There seems to be know way to even copy and paste them. I know the must be a simple solution, what is it?

  • Deployment error with JAX-WS using NB 5.5 and SJAS 9.0

    Hi, I'm trying to expose a session bean as a web service. My service parses MPP files. When a few specific classes are used, the service fails to deploy with a java.lang.NoClassDefFoundError (the class is very much in the classpath). All the other cl

  • Acquire semaphore gives error Code = 0

    I have incorporated a semaphore into our software.  The semaphore protection works fine for a little while then gives a mysterious error code = 0.  From that point on, no semaphore operations will work correctly.  Has anyone ever seen this error?  An