[ 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

Reply via email to