[ 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