axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fred Preston (JIRA)" <axis-c-...@ws.apache.org>
Subject [jira] Created: (AXISCPP-421) Problems with handlers
Date Thu, 10 Feb 2005 11:24:13 GMT
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


Mime
View raw message