You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Fred Preston (JIRA)" <ax...@ws.apache.org> on 2005/02/10 12:24:13 UTC

[jira] Created: (AXISCPP-421) Problems with handlers

Problems with handlers
----------------------

         Key: AXISCPP-421
         URL: http://issues.apache.org/jira/browse/AXISCPP-421
     Project: Axis-C++
        Type: Bug
 Environment: n/a
    Reporter: Fred Preston


I am investigating handlers, and there seems to be a problem with the number of times init and fini are called (I would expect, when everything is working correctly for the init and fini methods to be called once only).  Also when the WSDD file contains global and transport type handlers some fini methods on some handlers are not called at all.  Here is a simple WSDD with just one Client handler:-

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
  <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
    <requestFlow>
      <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
      </handler>
    </requestFlow>
    <responseFlow>
      <handler name="myHandle1Res" type="C:\myHandler1.dll">
      </handler>
    </responseFlow>
  </service>
</deployment>

And this is the debug I get: (Notice how there are two calls to init)

0> myClientHandler::myClientHandler() <-- Method entry
0< myClientHandler::myClientHandler() <-- Method exit
0> myClientHandler::init() <-- Method entry
0< myClientHandler::init() <-- Method exit
0> myClientHandler::init() <-- Method entry *** Why is this method being
0< myClientHandler::init() <-- Method exit  *** called twice?
0> myHandler::myHandler() <-- Method entry
0< myHandler::myHandler() <-- Method exit
0> myHandler::init() <-- Method entry
0< myHandler::init() <-- Method exit
0> myHandler::init() <-- Method entry *** Why is this method being
0< myHandler::init() <-- Method exit  *** called twice?
0> myClientHandler::invoke() <-- Method entry
0- Before the pivot point
0< myClientHandler::invoke() <-- Method exit
0> myHandler::invoke() <-- Method entry
0- After the pivot point
0< myHandler::invoke() <-- Method exit
0> myClientHandler::fini() <-- Method entry
0< myClientHandler::fini() <-- Method exit
0> myHandler::fini() <-- Method entry
0< myHandler::fini() <-- Method exit

Stock quote for XXX is #50.38 ($92.70) per share.

0> myClientHandler::fini() <-- Method entry *** Why is this method being
0< myClientHandler::fini() <-- Method exit  *** called twice?
0> myClientHandler::~myClientHandler() <-- Method entry
0< myClientHandler::~myClientHandler() <-- Method exit
0> myHandler::fini() <-- Method entry *** Why is this method being
0< myHandler::fini() <-- Method exit  *** called twice?
0> myHandler::~myHandler() <-- Method entry
0< myHandler::~myHandler() <-- Method exit

Here is a simple WSDD of all client side handler types:-

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
  <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
    <requestFlow>
      <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
      </handler>
    </requestFlow>
    <responseFlow>
      <handler name="myHandle1Res" type="C:\myHandler1.dll">
      </handler>
    </responseFlow>
  </service>
  <globalConfiguration name="GlobalHandler" provider="CPP:DOCUMENT" description="Global Handler">
    <requestFlow>
      <handler name="myGlobalHandleReq" type="C:\myGlobalHandler.dll">
      </handler>
    </requestFlow>
    <responseFlow>
      <handler name="myGlobalHandleRes" type="C:\myGlobalHandler.dll">
      </handler>
    </responseFlow>
  </globalConfiguration>
  <transport name="TransportHandler" provider="CPP:DOCUMENT" description="Transport Handler">
    <requestFlow>
      <handler name="myTransportHandleReq" type="C:\myTransportHandler.dll">
      </handler>
    </requestFlow>
    <responseFlow>
      <handler name="myTransportHandleRes" type="C:\myTransportHandler.dll">
      </handler>
    </responseFlow>
  </transport>
</deployment>

And here is the debug I get: (Notice this time that there is no call to fini or the destructor method for the following handler types: myGlobalHandler (either instance)and myTransportHandler (either instance)) I have also anotated other potential problems with comments (i.e. *** comment).

0> myGlobalHandler::myGlobalHandler() <- Entry
0< myGlobalHandler::myGlobalHandler() <- Exit
0> myGlobalHandler::init()            <- Entry
0< myGlobalHandler::init()            <- Exit
0> myGlobalHandler::init()            <- Entry *** Why is the init being called
0< myGlobalHandler::init()            <- Exit  *** Twice?
1> myGlobalHandler::myGlobalHandler() <- Entry
1< myGlobalHandler::myGlobalHandler() <- Exit
1> myGlobalHandler::init()            <- Entry
1< myGlobalHandler::init()            <- Exit
1> myGlobalHandler::init()            <- Entry *** Again, on this instance, why
1< myGlobalHandler::init()            <- Exit  *** is init being called twice?
0> myTransportHandler::myTransportHandler() <- Entry
0< myTransportHandler::myTransportHandler() <- Exit
0> myTransportHandler::init()         <- Entry
0< myTransportHandler::init()         <- Exit
0> myTransportHandler::init()         <- Entry *** Why is the init beign called
0< myTransportHandler::init()         <- Exit  *** twice?
1> myTransportHandler::myTransportHandler()<- Entry
1< myTransportHandler::myTransportHandler() <- Exit
1> myTransportHandler::init()         <- Entry
1< myTransportHandler::init()         <- Exit
1> myTransportHandler::init()         <- Entry *** Again, on this instance, why
1< myTransportHandler::init()         <- Exit  *** is init being called twice?
0> myClientHandler::myClientHandler() <- Entry
0< myClientHandler::myClientHandler() <- Exit
0> myClientHandler::init()            <- Entry
0< myClientHandler::init()            <- Exit
0> myClientHandler::init()            <- Entry *** Why is the init beign called
0< myClientHandler::init()            <- Exit  *** twice?
0> myHandler::myHandler()             <- Entry
0< myHandler::myHandler()             <- Exit
0> myHandler::init()                  <- Entry
0< myHandler::init()                  <- Exit
0> myHandler::init()                  <- Entry *** Why is the init beign called
0< myHandler::init()                  <- Exit  *** twice?
0> myClientHandler::invoke()          <- Entry
0- Before the pivot point
0< myClientHandler::invoke()          <- Exit
0> myGlobalHandler::invoke()          <- Entry
0- Before the pivot point
0< myGlobalHandler::invoke()          <- Exit
0> myTransportHandler::invoke()       <- Entry
0- Before the pivot point
0< myTransportHandler::invoke()       <- Exit
1> myTransportHandler::invoke()       <- Entry
1- After the pivot point
1< myTransportHandler::invoke()       <- Exit
1> myGlobalHandler::invoke()          <- Entry
1- After the pivot point
1< myGlobalHandler::invoke()          <- Exit
0> myHandler::invoke()                <- Entry
0- After the pivot point
0< myHandler::invoke()                <- Exit
0> myClientHandler::fini()            <- Entry
0< myClientHandler::fini()            <- Exit
0> myHandler::fini()                  <- Entry
0< myHandler::fini()                  <- Exit

Stock quote for XXX is £50.38 ($92.70) per share.

0> myClientHandler::fini()            <- Entry
0< myClientHandler::fini()            <- Exit
0> myClientHandler::~myClientHandler() <- Entry
0< myClientHandler::~myClientHandler() <- Exit
0> myHandler::fini()                  <- Entry
0< myHandler::fini()                  <- Exit
0> myHandler::~myHandler()            <- Entry
0< myHandler::~myHandler()            <- Exit

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Updated: (AXISCPP-421) Problems with handlers

Posted by "Samisa Abeysinghe (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-421?page=history ]

Samisa Abeysinghe updated AXISCPP-421:
--------------------------------------

    Component: Handlers

> Problems with handlers
> ----------------------
>
>          Key: AXISCPP-421
>          URL: http://issues.apache.org/jira/browse/AXISCPP-421
>      Project: Axis-C++
>         Type: Bug
>   Components: Handlers
>  Environment: n/a
>     Reporter: Fred Preston
>     Priority: Minor

>
> I am investigating handlers, and there seems to be a problem with the number of times init and fini are called (I would expect, when everything is working correctly for the init and fini methods to be called once only).  Also when the WSDD file contains global and transport type handlers some fini methods on some handlers are not called at all.  Here is a simple WSDD with just one Client handler:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
> </deployment>
> And this is the debug I get: (Notice how there are two calls to init)
> 0> myClientHandler::myClientHandler() <-- Method entry
> 0< myClientHandler::myClientHandler() <-- Method exit
> 0> myClientHandler::init() <-- Method entry
> 0< myClientHandler::init() <-- Method exit
> 0> myClientHandler::init() <-- Method entry *** Why is this method being
> 0< myClientHandler::init() <-- Method exit  *** called twice?
> 0> myHandler::myHandler() <-- Method entry
> 0< myHandler::myHandler() <-- Method exit
> 0> myHandler::init() <-- Method entry
> 0< myHandler::init() <-- Method exit
> 0> myHandler::init() <-- Method entry *** Why is this method being
> 0< myHandler::init() <-- Method exit  *** called twice?
> 0> myClientHandler::invoke() <-- Method entry
> 0- Before the pivot point
> 0< myClientHandler::invoke() <-- Method exit
> 0> myHandler::invoke() <-- Method entry
> 0- After the pivot point
> 0< myHandler::invoke() <-- Method exit
> 0> myClientHandler::fini() <-- Method entry
> 0< myClientHandler::fini() <-- Method exit
> 0> myHandler::fini() <-- Method entry
> 0< myHandler::fini() <-- Method exit
> Stock quote for XXX is #50.38 ($92.70) per share.
> 0> myClientHandler::fini() <-- Method entry *** Why is this method being
> 0< myClientHandler::fini() <-- Method exit  *** called twice?
> 0> myClientHandler::~myClientHandler() <-- Method entry
> 0< myClientHandler::~myClientHandler() <-- Method exit
> 0> myHandler::fini() <-- Method entry *** Why is this method being
> 0< myHandler::fini() <-- Method exit  *** called twice?
> 0> myHandler::~myHandler() <-- Method entry
> 0< myHandler::~myHandler() <-- Method exit
> Here is a simple WSDD of all client side handler types:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
>   <globalConfiguration name="GlobalHandler" provider="CPP:DOCUMENT" description="Global Handler">
>     <requestFlow>
>       <handler name="myGlobalHandleReq" type="C:\myGlobalHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myGlobalHandleRes" type="C:\myGlobalHandler.dll">
>       </handler>
>     </responseFlow>
>   </globalConfiguration>
>   <transport name="TransportHandler" provider="CPP:DOCUMENT" description="Transport Handler">
>     <requestFlow>
>       <handler name="myTransportHandleReq" type="C:\myTransportHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myTransportHandleRes" type="C:\myTransportHandler.dll">
>       </handler>
>     </responseFlow>
>   </transport>
> </deployment>
> And here is the debug I get: (Notice this time that there is no call to fini or the destructor method for the following handler types: myGlobalHandler (either instance)and myTransportHandler (either instance)) I have also anotated other potential problems with comments (i.e. *** comment).
> 0> myGlobalHandler::myGlobalHandler() <- Entry
> 0< myGlobalHandler::myGlobalHandler() <- Exit
> 0> myGlobalHandler::init()            <- Entry
> 0< myGlobalHandler::init()            <- Exit
> 0> myGlobalHandler::init()            <- Entry *** Why is the init being called
> 0< myGlobalHandler::init()            <- Exit  *** Twice?
> 1> myGlobalHandler::myGlobalHandler() <- Entry
> 1< myGlobalHandler::myGlobalHandler() <- Exit
> 1> myGlobalHandler::init()            <- Entry
> 1< myGlobalHandler::init()            <- Exit
> 1> myGlobalHandler::init()            <- Entry *** Again, on this instance, why
> 1< myGlobalHandler::init()            <- Exit  *** is init being called twice?
> 0> myTransportHandler::myTransportHandler() <- Entry
> 0< myTransportHandler::myTransportHandler() <- Exit
> 0> myTransportHandler::init()         <- Entry
> 0< myTransportHandler::init()         <- Exit
> 0> myTransportHandler::init()         <- Entry *** Why is the init beign called
> 0< myTransportHandler::init()         <- Exit  *** twice?
> 1> myTransportHandler::myTransportHandler()<- Entry
> 1< myTransportHandler::myTransportHandler() <- Exit
> 1> myTransportHandler::init()         <- Entry
> 1< myTransportHandler::init()         <- Exit
> 1> myTransportHandler::init()         <- Entry *** Again, on this instance, why
> 1< myTransportHandler::init()         <- Exit  *** is init being called twice?
> 0> myClientHandler::myClientHandler() <- Entry
> 0< myClientHandler::myClientHandler() <- Exit
> 0> myClientHandler::init()            <- Entry
> 0< myClientHandler::init()            <- Exit
> 0> myClientHandler::init()            <- Entry *** Why is the init beign called
> 0< myClientHandler::init()            <- Exit  *** twice?
> 0> myHandler::myHandler()             <- Entry
> 0< myHandler::myHandler()             <- Exit
> 0> myHandler::init()                  <- Entry
> 0< myHandler::init()                  <- Exit
> 0> myHandler::init()                  <- Entry *** Why is the init beign called
> 0< myHandler::init()                  <- Exit  *** twice?
> 0> myClientHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myClientHandler::invoke()          <- Exit
> 0> myGlobalHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myGlobalHandler::invoke()          <- Exit
> 0> myTransportHandler::invoke()       <- Entry
> 0- Before the pivot point
> 0< myTransportHandler::invoke()       <- Exit
> 1> myTransportHandler::invoke()       <- Entry
> 1- After the pivot point
> 1< myTransportHandler::invoke()       <- Exit
> 1> myGlobalHandler::invoke()          <- Entry
> 1- After the pivot point
> 1< myGlobalHandler::invoke()          <- Exit
> 0> myHandler::invoke()                <- Entry
> 0- After the pivot point
> 0< myHandler::invoke()                <- Exit
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> Stock quote for XXX is £50.38 ($92.70) per share.
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myClientHandler::~myClientHandler() <- Entry
> 0< myClientHandler::~myClientHandler() <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> 0> myHandler::~myHandler()            <- Entry
> 0< myHandler::~myHandler()            <- Exit

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Updated: (AXISCPP-421) Problems with handlers

Posted by "Fred Preston (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-421?page=history ]

Fred Preston updated AXISCPP-421:
---------------------------------

    Priority: Minor  (was: Major)

As long as the handler writer remembers to clean up all pointers and set them to null, if fini is called a second time, then this should not effect Axis.  This is down to good coding practices when deleting objects, i.e.
if( pObject != NULL)
{
delete pObject;

pObject = NULL;
}

It is further assumed that any pointer that is not assigned to an object when it is created, but be set to NULL. i.e.

either:-
OBJECT * pObject = new OBJECT(...);
or
OBJECT * pObject = NULL;


> Problems with handlers
> ----------------------
>
>          Key: AXISCPP-421
>          URL: http://issues.apache.org/jira/browse/AXISCPP-421
>      Project: Axis-C++
>         Type: Bug
>  Environment: n/a
>     Reporter: Fred Preston
>     Priority: Minor

>
> I am investigating handlers, and there seems to be a problem with the number of times init and fini are called (I would expect, when everything is working correctly for the init and fini methods to be called once only).  Also when the WSDD file contains global and transport type handlers some fini methods on some handlers are not called at all.  Here is a simple WSDD with just one Client handler:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
> </deployment>
> And this is the debug I get: (Notice how there are two calls to init)
> 0> myClientHandler::myClientHandler() <-- Method entry
> 0< myClientHandler::myClientHandler() <-- Method exit
> 0> myClientHandler::init() <-- Method entry
> 0< myClientHandler::init() <-- Method exit
> 0> myClientHandler::init() <-- Method entry *** Why is this method being
> 0< myClientHandler::init() <-- Method exit  *** called twice?
> 0> myHandler::myHandler() <-- Method entry
> 0< myHandler::myHandler() <-- Method exit
> 0> myHandler::init() <-- Method entry
> 0< myHandler::init() <-- Method exit
> 0> myHandler::init() <-- Method entry *** Why is this method being
> 0< myHandler::init() <-- Method exit  *** called twice?
> 0> myClientHandler::invoke() <-- Method entry
> 0- Before the pivot point
> 0< myClientHandler::invoke() <-- Method exit
> 0> myHandler::invoke() <-- Method entry
> 0- After the pivot point
> 0< myHandler::invoke() <-- Method exit
> 0> myClientHandler::fini() <-- Method entry
> 0< myClientHandler::fini() <-- Method exit
> 0> myHandler::fini() <-- Method entry
> 0< myHandler::fini() <-- Method exit
> Stock quote for XXX is #50.38 ($92.70) per share.
> 0> myClientHandler::fini() <-- Method entry *** Why is this method being
> 0< myClientHandler::fini() <-- Method exit  *** called twice?
> 0> myClientHandler::~myClientHandler() <-- Method entry
> 0< myClientHandler::~myClientHandler() <-- Method exit
> 0> myHandler::fini() <-- Method entry *** Why is this method being
> 0< myHandler::fini() <-- Method exit  *** called twice?
> 0> myHandler::~myHandler() <-- Method entry
> 0< myHandler::~myHandler() <-- Method exit
> Here is a simple WSDD of all client side handler types:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
>   <globalConfiguration name="GlobalHandler" provider="CPP:DOCUMENT" description="Global Handler">
>     <requestFlow>
>       <handler name="myGlobalHandleReq" type="C:\myGlobalHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myGlobalHandleRes" type="C:\myGlobalHandler.dll">
>       </handler>
>     </responseFlow>
>   </globalConfiguration>
>   <transport name="TransportHandler" provider="CPP:DOCUMENT" description="Transport Handler">
>     <requestFlow>
>       <handler name="myTransportHandleReq" type="C:\myTransportHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myTransportHandleRes" type="C:\myTransportHandler.dll">
>       </handler>
>     </responseFlow>
>   </transport>
> </deployment>
> And here is the debug I get: (Notice this time that there is no call to fini or the destructor method for the following handler types: myGlobalHandler (either instance)and myTransportHandler (either instance)) I have also anotated other potential problems with comments (i.e. *** comment).
> 0> myGlobalHandler::myGlobalHandler() <- Entry
> 0< myGlobalHandler::myGlobalHandler() <- Exit
> 0> myGlobalHandler::init()            <- Entry
> 0< myGlobalHandler::init()            <- Exit
> 0> myGlobalHandler::init()            <- Entry *** Why is the init being called
> 0< myGlobalHandler::init()            <- Exit  *** Twice?
> 1> myGlobalHandler::myGlobalHandler() <- Entry
> 1< myGlobalHandler::myGlobalHandler() <- Exit
> 1> myGlobalHandler::init()            <- Entry
> 1< myGlobalHandler::init()            <- Exit
> 1> myGlobalHandler::init()            <- Entry *** Again, on this instance, why
> 1< myGlobalHandler::init()            <- Exit  *** is init being called twice?
> 0> myTransportHandler::myTransportHandler() <- Entry
> 0< myTransportHandler::myTransportHandler() <- Exit
> 0> myTransportHandler::init()         <- Entry
> 0< myTransportHandler::init()         <- Exit
> 0> myTransportHandler::init()         <- Entry *** Why is the init beign called
> 0< myTransportHandler::init()         <- Exit  *** twice?
> 1> myTransportHandler::myTransportHandler()<- Entry
> 1< myTransportHandler::myTransportHandler() <- Exit
> 1> myTransportHandler::init()         <- Entry
> 1< myTransportHandler::init()         <- Exit
> 1> myTransportHandler::init()         <- Entry *** Again, on this instance, why
> 1< myTransportHandler::init()         <- Exit  *** is init being called twice?
> 0> myClientHandler::myClientHandler() <- Entry
> 0< myClientHandler::myClientHandler() <- Exit
> 0> myClientHandler::init()            <- Entry
> 0< myClientHandler::init()            <- Exit
> 0> myClientHandler::init()            <- Entry *** Why is the init beign called
> 0< myClientHandler::init()            <- Exit  *** twice?
> 0> myHandler::myHandler()             <- Entry
> 0< myHandler::myHandler()             <- Exit
> 0> myHandler::init()                  <- Entry
> 0< myHandler::init()                  <- Exit
> 0> myHandler::init()                  <- Entry *** Why is the init beign called
> 0< myHandler::init()                  <- Exit  *** twice?
> 0> myClientHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myClientHandler::invoke()          <- Exit
> 0> myGlobalHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myGlobalHandler::invoke()          <- Exit
> 0> myTransportHandler::invoke()       <- Entry
> 0- Before the pivot point
> 0< myTransportHandler::invoke()       <- Exit
> 1> myTransportHandler::invoke()       <- Entry
> 1- After the pivot point
> 1< myTransportHandler::invoke()       <- Exit
> 1> myGlobalHandler::invoke()          <- Entry
> 1- After the pivot point
> 1< myGlobalHandler::invoke()          <- Exit
> 0> myHandler::invoke()                <- Entry
> 0- After the pivot point
> 0< myHandler::invoke()                <- Exit
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> Stock quote for XXX is £50.38 ($92.70) per share.
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myClientHandler::~myClientHandler() <- Entry
> 0< myClientHandler::~myClientHandler() <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> 0> myHandler::~myHandler()            <- Entry
> 0< myHandler::~myHandler()            <- Exit

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Assigned: (AXISCPP-421) Problems with handlers

Posted by "Fred Preston (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-421?page=history ]

Fred Preston reassigned AXISCPP-421:
------------------------------------

    Assign To:     (was: Fred Preston)

> Problems with handlers
> ----------------------
>
>          Key: AXISCPP-421
>          URL: http://issues.apache.org/jira/browse/AXISCPP-421
>      Project: Axis-C++
>         Type: Bug
>  Environment: n/a
>     Reporter: Fred Preston

>
> I am investigating handlers, and there seems to be a problem with the number of times init and fini are called (I would expect, when everything is working correctly for the init and fini methods to be called once only).  Also when the WSDD file contains global and transport type handlers some fini methods on some handlers are not called at all.  Here is a simple WSDD with just one Client handler:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
> </deployment>
> And this is the debug I get: (Notice how there are two calls to init)
> 0> myClientHandler::myClientHandler() <-- Method entry
> 0< myClientHandler::myClientHandler() <-- Method exit
> 0> myClientHandler::init() <-- Method entry
> 0< myClientHandler::init() <-- Method exit
> 0> myClientHandler::init() <-- Method entry *** Why is this method being
> 0< myClientHandler::init() <-- Method exit  *** called twice?
> 0> myHandler::myHandler() <-- Method entry
> 0< myHandler::myHandler() <-- Method exit
> 0> myHandler::init() <-- Method entry
> 0< myHandler::init() <-- Method exit
> 0> myHandler::init() <-- Method entry *** Why is this method being
> 0< myHandler::init() <-- Method exit  *** called twice?
> 0> myClientHandler::invoke() <-- Method entry
> 0- Before the pivot point
> 0< myClientHandler::invoke() <-- Method exit
> 0> myHandler::invoke() <-- Method entry
> 0- After the pivot point
> 0< myHandler::invoke() <-- Method exit
> 0> myClientHandler::fini() <-- Method entry
> 0< myClientHandler::fini() <-- Method exit
> 0> myHandler::fini() <-- Method entry
> 0< myHandler::fini() <-- Method exit
> Stock quote for XXX is #50.38 ($92.70) per share.
> 0> myClientHandler::fini() <-- Method entry *** Why is this method being
> 0< myClientHandler::fini() <-- Method exit  *** called twice?
> 0> myClientHandler::~myClientHandler() <-- Method entry
> 0< myClientHandler::~myClientHandler() <-- Method exit
> 0> myHandler::fini() <-- Method entry *** Why is this method being
> 0< myHandler::fini() <-- Method exit  *** called twice?
> 0> myHandler::~myHandler() <-- Method entry
> 0< myHandler::~myHandler() <-- Method exit
> Here is a simple WSDD of all client side handler types:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
>   <globalConfiguration name="GlobalHandler" provider="CPP:DOCUMENT" description="Global Handler">
>     <requestFlow>
>       <handler name="myGlobalHandleReq" type="C:\myGlobalHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myGlobalHandleRes" type="C:\myGlobalHandler.dll">
>       </handler>
>     </responseFlow>
>   </globalConfiguration>
>   <transport name="TransportHandler" provider="CPP:DOCUMENT" description="Transport Handler">
>     <requestFlow>
>       <handler name="myTransportHandleReq" type="C:\myTransportHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myTransportHandleRes" type="C:\myTransportHandler.dll">
>       </handler>
>     </responseFlow>
>   </transport>
> </deployment>
> And here is the debug I get: (Notice this time that there is no call to fini or the destructor method for the following handler types: myGlobalHandler (either instance)and myTransportHandler (either instance)) I have also anotated other potential problems with comments (i.e. *** comment).
> 0> myGlobalHandler::myGlobalHandler() <- Entry
> 0< myGlobalHandler::myGlobalHandler() <- Exit
> 0> myGlobalHandler::init()            <- Entry
> 0< myGlobalHandler::init()            <- Exit
> 0> myGlobalHandler::init()            <- Entry *** Why is the init being called
> 0< myGlobalHandler::init()            <- Exit  *** Twice?
> 1> myGlobalHandler::myGlobalHandler() <- Entry
> 1< myGlobalHandler::myGlobalHandler() <- Exit
> 1> myGlobalHandler::init()            <- Entry
> 1< myGlobalHandler::init()            <- Exit
> 1> myGlobalHandler::init()            <- Entry *** Again, on this instance, why
> 1< myGlobalHandler::init()            <- Exit  *** is init being called twice?
> 0> myTransportHandler::myTransportHandler() <- Entry
> 0< myTransportHandler::myTransportHandler() <- Exit
> 0> myTransportHandler::init()         <- Entry
> 0< myTransportHandler::init()         <- Exit
> 0> myTransportHandler::init()         <- Entry *** Why is the init beign called
> 0< myTransportHandler::init()         <- Exit  *** twice?
> 1> myTransportHandler::myTransportHandler()<- Entry
> 1< myTransportHandler::myTransportHandler() <- Exit
> 1> myTransportHandler::init()         <- Entry
> 1< myTransportHandler::init()         <- Exit
> 1> myTransportHandler::init()         <- Entry *** Again, on this instance, why
> 1< myTransportHandler::init()         <- Exit  *** is init being called twice?
> 0> myClientHandler::myClientHandler() <- Entry
> 0< myClientHandler::myClientHandler() <- Exit
> 0> myClientHandler::init()            <- Entry
> 0< myClientHandler::init()            <- Exit
> 0> myClientHandler::init()            <- Entry *** Why is the init beign called
> 0< myClientHandler::init()            <- Exit  *** twice?
> 0> myHandler::myHandler()             <- Entry
> 0< myHandler::myHandler()             <- Exit
> 0> myHandler::init()                  <- Entry
> 0< myHandler::init()                  <- Exit
> 0> myHandler::init()                  <- Entry *** Why is the init beign called
> 0< myHandler::init()                  <- Exit  *** twice?
> 0> myClientHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myClientHandler::invoke()          <- Exit
> 0> myGlobalHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myGlobalHandler::invoke()          <- Exit
> 0> myTransportHandler::invoke()       <- Entry
> 0- Before the pivot point
> 0< myTransportHandler::invoke()       <- Exit
> 1> myTransportHandler::invoke()       <- Entry
> 1- After the pivot point
> 1< myTransportHandler::invoke()       <- Exit
> 1> myGlobalHandler::invoke()          <- Entry
> 1- After the pivot point
> 1< myGlobalHandler::invoke()          <- Exit
> 0> myHandler::invoke()                <- Entry
> 0- After the pivot point
> 0< myHandler::invoke()                <- Exit
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> Stock quote for XXX is £50.38 ($92.70) per share.
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myClientHandler::~myClientHandler() <- Entry
> 0< myClientHandler::~myClientHandler() <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> 0> myHandler::~myHandler()            <- Entry
> 0< myHandler::~myHandler()            <- Exit

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Assigned: (AXISCPP-421) Problems with handlers

Posted by "Fred Preston (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-421?page=history ]

Fred Preston reassigned AXISCPP-421:
------------------------------------

    Assign To: Fred Preston

> Problems with handlers
> ----------------------
>
>          Key: AXISCPP-421
>          URL: http://issues.apache.org/jira/browse/AXISCPP-421
>      Project: Axis-C++
>         Type: Bug
>  Environment: n/a
>     Reporter: Fred Preston
>     Assignee: Fred Preston

>
> I am investigating handlers, and there seems to be a problem with the number of times init and fini are called (I would expect, when everything is working correctly for the init and fini methods to be called once only).  Also when the WSDD file contains global and transport type handlers some fini methods on some handlers are not called at all.  Here is a simple WSDD with just one Client handler:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
> </deployment>
> And this is the debug I get: (Notice how there are two calls to init)
> 0> myClientHandler::myClientHandler() <-- Method entry
> 0< myClientHandler::myClientHandler() <-- Method exit
> 0> myClientHandler::init() <-- Method entry
> 0< myClientHandler::init() <-- Method exit
> 0> myClientHandler::init() <-- Method entry *** Why is this method being
> 0< myClientHandler::init() <-- Method exit  *** called twice?
> 0> myHandler::myHandler() <-- Method entry
> 0< myHandler::myHandler() <-- Method exit
> 0> myHandler::init() <-- Method entry
> 0< myHandler::init() <-- Method exit
> 0> myHandler::init() <-- Method entry *** Why is this method being
> 0< myHandler::init() <-- Method exit  *** called twice?
> 0> myClientHandler::invoke() <-- Method entry
> 0- Before the pivot point
> 0< myClientHandler::invoke() <-- Method exit
> 0> myHandler::invoke() <-- Method entry
> 0- After the pivot point
> 0< myHandler::invoke() <-- Method exit
> 0> myClientHandler::fini() <-- Method entry
> 0< myClientHandler::fini() <-- Method exit
> 0> myHandler::fini() <-- Method entry
> 0< myHandler::fini() <-- Method exit
> Stock quote for XXX is #50.38 ($92.70) per share.
> 0> myClientHandler::fini() <-- Method entry *** Why is this method being
> 0< myClientHandler::fini() <-- Method exit  *** called twice?
> 0> myClientHandler::~myClientHandler() <-- Method entry
> 0< myClientHandler::~myClientHandler() <-- Method exit
> 0> myHandler::fini() <-- Method entry *** Why is this method being
> 0< myHandler::fini() <-- Method exit  *** called twice?
> 0> myHandler::~myHandler() <-- Method entry
> 0< myHandler::~myHandler() <-- Method exit
> Here is a simple WSDD of all client side handler types:-
> <?xml version="1.0" encoding="UTF-8"?>
> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:C="http://xml.apache.org/axis/wsdd/providers/c">
>   <service name="ServiceHandler" provider="CPP:DOCUMENT" description="Service Handlers">
>     <requestFlow>
>       <handler name="myClientHandleReq" type="C:\myClientHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myHandle1Res" type="C:\myHandler1.dll">
>       </handler>
>     </responseFlow>
>   </service>
>   <globalConfiguration name="GlobalHandler" provider="CPP:DOCUMENT" description="Global Handler">
>     <requestFlow>
>       <handler name="myGlobalHandleReq" type="C:\myGlobalHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myGlobalHandleRes" type="C:\myGlobalHandler.dll">
>       </handler>
>     </responseFlow>
>   </globalConfiguration>
>   <transport name="TransportHandler" provider="CPP:DOCUMENT" description="Transport Handler">
>     <requestFlow>
>       <handler name="myTransportHandleReq" type="C:\myTransportHandler.dll">
>       </handler>
>     </requestFlow>
>     <responseFlow>
>       <handler name="myTransportHandleRes" type="C:\myTransportHandler.dll">
>       </handler>
>     </responseFlow>
>   </transport>
> </deployment>
> And here is the debug I get: (Notice this time that there is no call to fini or the destructor method for the following handler types: myGlobalHandler (either instance)and myTransportHandler (either instance)) I have also anotated other potential problems with comments (i.e. *** comment).
> 0> myGlobalHandler::myGlobalHandler() <- Entry
> 0< myGlobalHandler::myGlobalHandler() <- Exit
> 0> myGlobalHandler::init()            <- Entry
> 0< myGlobalHandler::init()            <- Exit
> 0> myGlobalHandler::init()            <- Entry *** Why is the init being called
> 0< myGlobalHandler::init()            <- Exit  *** Twice?
> 1> myGlobalHandler::myGlobalHandler() <- Entry
> 1< myGlobalHandler::myGlobalHandler() <- Exit
> 1> myGlobalHandler::init()            <- Entry
> 1< myGlobalHandler::init()            <- Exit
> 1> myGlobalHandler::init()            <- Entry *** Again, on this instance, why
> 1< myGlobalHandler::init()            <- Exit  *** is init being called twice?
> 0> myTransportHandler::myTransportHandler() <- Entry
> 0< myTransportHandler::myTransportHandler() <- Exit
> 0> myTransportHandler::init()         <- Entry
> 0< myTransportHandler::init()         <- Exit
> 0> myTransportHandler::init()         <- Entry *** Why is the init beign called
> 0< myTransportHandler::init()         <- Exit  *** twice?
> 1> myTransportHandler::myTransportHandler()<- Entry
> 1< myTransportHandler::myTransportHandler() <- Exit
> 1> myTransportHandler::init()         <- Entry
> 1< myTransportHandler::init()         <- Exit
> 1> myTransportHandler::init()         <- Entry *** Again, on this instance, why
> 1< myTransportHandler::init()         <- Exit  *** is init being called twice?
> 0> myClientHandler::myClientHandler() <- Entry
> 0< myClientHandler::myClientHandler() <- Exit
> 0> myClientHandler::init()            <- Entry
> 0< myClientHandler::init()            <- Exit
> 0> myClientHandler::init()            <- Entry *** Why is the init beign called
> 0< myClientHandler::init()            <- Exit  *** twice?
> 0> myHandler::myHandler()             <- Entry
> 0< myHandler::myHandler()             <- Exit
> 0> myHandler::init()                  <- Entry
> 0< myHandler::init()                  <- Exit
> 0> myHandler::init()                  <- Entry *** Why is the init beign called
> 0< myHandler::init()                  <- Exit  *** twice?
> 0> myClientHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myClientHandler::invoke()          <- Exit
> 0> myGlobalHandler::invoke()          <- Entry
> 0- Before the pivot point
> 0< myGlobalHandler::invoke()          <- Exit
> 0> myTransportHandler::invoke()       <- Entry
> 0- Before the pivot point
> 0< myTransportHandler::invoke()       <- Exit
> 1> myTransportHandler::invoke()       <- Entry
> 1- After the pivot point
> 1< myTransportHandler::invoke()       <- Exit
> 1> myGlobalHandler::invoke()          <- Entry
> 1- After the pivot point
> 1< myGlobalHandler::invoke()          <- Exit
> 0> myHandler::invoke()                <- Entry
> 0- After the pivot point
> 0< myHandler::invoke()                <- Exit
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> Stock quote for XXX is £50.38 ($92.70) per share.
> 0> myClientHandler::fini()            <- Entry
> 0< myClientHandler::fini()            <- Exit
> 0> myClientHandler::~myClientHandler() <- Entry
> 0< myClientHandler::~myClientHandler() <- Exit
> 0> myHandler::fini()                  <- Entry
> 0< myHandler::fini()                  <- Exit
> 0> myHandler::~myHandler()            <- Entry
> 0< myHandler::~myHandler()            <- Exit

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira