Amila,  Thanks very much for the article it is a great help.  I see you are the 
author of the article and I had a question/comment about it.  It says:
"
Axis engine invokes in flow handlers for the given message, and at the end, it 
invokes the message receiver. Here, it should be noted that it is up to the 
message receiver XML info set is represented as an axiom object model and data 
binding (i.e converting xml info set to java objects and converting java 
objects to xml info set) is taken place at the message receiver. Finally, 
message receiver invokes service methods with Java objects.
"
Then the article a little later says:
"
As explained earlier axis2 data binding happens after message receiver and 
before the client api.
"

Those two seem a little contradictory (at & after) and I was a little concerned 
about that because our current Axis 1.4 implementation that extends RPCProvider 
doesn't handle the SOAP message and just calls the underlying service.  So, I 
turned on Axis2 debug trace and added some additional trace calls to better 
understand the flow and it looks, at least in this case (below), that the order 
is: data binding (,837), MessageReceiver (,852), service method (,915), and 
then the umarshalling on the out flow (,930).  Does that seem right to you, or 
am I misunderstanding terminology, etc.?

This is the trace output, which I've edited to make it more succinct:
...
,649 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Starting to process SOAP 
1.2 message
,649 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement 
Envelope by the StaxSOAPModelBuilder
,665 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement Body 
by the StaxSOAPModelBuilder
,665 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "Transport"
,665 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "Transport"
,665 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'RequestURIBasedDispatcher' in Phase 'Transport'
,665 axis2.dispatchers.RequestURIBasedServiceDispatcher  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking for Service using 
target endpoint address : http://localhost:8080/axis2/services/SampleService
...
,680 axis2.engine.AbstractDispatcher  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Found AxisService : 
SampleService
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'SOAPActionBasedDispatcher' in Phase 'Transport'
,680 axis2.dispatchers.ActionBasedOperationDispatcher  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking for Operation using 
Action : urn:multipleParameters
,680 axis2.description.AxisService  - getOperationBySOAPAction: Operation 
(org.apache.axis2.description.inoutaxisoperat...@13785d3,multipleParameters) 
for soapAction: urn:multipleParameters found in action map.
...
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "Transport"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "Addressing"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "Addressing"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'AddressingInHandler' in Phase 'Addressing'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'AddressingBasedDispatcher' in Phase 'Addressing'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "Addressing"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "Security"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "Security"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "Security"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "PreDispatch"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "PreDispatch"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "PreDispatch"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "Dispatch"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "Dispatch"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'RequestURIBasedDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'SOAPActionBasedDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'RequestURIOperationDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'SOAPMessageBodyBasedDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'AddressingValidationHandler' in Phase 'Dispatch'
,680 axis2.addressing.AddressingHelper  - 
getAddressingRequirementParemeterValue: value: 'null'
,680 axis2.addressing.AddressingHelper  - getInvocationPatternParameterValue: 
value: 'null'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'HTTPLocationBasedDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'GenericProviderDispatcher' in Phase 'Dispatch'
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'MustUnderstandValidationDispatcher' in Phase 'Dispatch'
,680 axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher  - JAXWS 
MustUnderstandValidationDispatcher.invoke on AxisService SampleService; 
AxisOperation org.apache.axis2.description.inoutaxisoperat...@13785d3
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "Dispatch"
,680 axis2.addressing.AddressingHelper  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] isReplyRedirected: ReplyTo is 
null. Returning false
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "RMPhase"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase "RMPhase"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "RMPhase"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking pre-condition for 
Phase "OperationInPhase"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking phase 
"OperationInPhase"
,680 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Invoking Handler 
'MustUnderstandChecker' in Phase 'OperationInPhase'
,696 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489695] Checking post-conditions for 
phase "OperationInPhase"
,696 axiom.om.util.StAXUtils  - About to create XMLOutputFactory implementation 
with classloader=WebappClassLoader
...
,790 axiom.om.util.StAXUtils  - Size of XMLOutputFactory map =1
,805 axiom.om.util.StAXUtils  - XMLStreamWriter is 
com.ctc.wstx.sw.SimpleNsStreamWriter
,837 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement 
multipleParameters by the StaxSOAPModelBuilder
,837 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement price 
by the StaxSOAPModelBuilder
,837 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement itemId 
by the StaxSOAPModelBuilder
,837 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement 
description by the StaxSOAPModelBuilder
,837 axiom.soap.impl.builder.StAXSOAPModelBuilder  - Build the OMElement 
itemName by the StaxSOAPModelBuilder
,837 axiom.om.impl.MTOMXMLStreamWriter  - Calling MTOMXMLStreamWriter.flush
,852 axis2.context.ConfigurationContext  - messageID is null.
,852 axis2.rpc.receivers.RPCMessageReceiver  - In 
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(MessageContext,
 MessageContext) for  class sample.service.SampleService - SampleService
,915 ice.SampleService  - In SampleService.multipleParameters price=20.2 
itemId=999 description=blah blah, woof woof itemName=nothing
,930 axiom.om.util.StAXUtils  - XMLStreamWriter is 
com.ctc.wstx.sw.SimpleNsStreamWriter
,930 axiom.om.impl.MTOMXMLStreamWriter  - Calling MTOMXMLStreamWriter.flush
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking pre-condition for 
Phase "OperationOutPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking phase 
"OperationOutPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking Handler 
'DispatchOperationHandler' in Phase 'OperationOutPhase'
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking post-conditions for 
phase "OperationOutPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking pre-condition for 
Phase "RMPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking phase "RMPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking post-conditions for 
phase "RMPhase"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking pre-condition for 
Phase "PolicyDetermination"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking phase 
"PolicyDetermination"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking post-conditions for 
phase "PolicyDetermination"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking pre-condition for 
Phase "MessageOut"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking phase "MessageOut"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking Handler 
'AddressingOutHandler' in Phase 'MessageOut'
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking post-conditions for 
phase "MessageOut"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking pre-condition for 
Phase "Security"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Invoking phase "Security"
,930 axis2.engine.Phase  - [MessageContext: 
logID=urn:uuid:23202C4F3879831BA71257461489961] Checking post-conditions for 
phase "Security"
,930 axiom.om.OMOutputFormat  - Start getContentType: OMOutputFormat [ 
mimeBoundary =null rootContentId=null doOptimize=false doingSWA=false 
isSOAP11=false charSetEncoding=UTF-8 xmlVersion=null contentType=null 
ignoreXmlDeclaration=false autoCloseWriter=true actionProperty=null 
optimizedThreshold=0]
,930 axiom.om.OMOutputFormat  - getContentType= {application/soap+xml}   
OMOutputFormat [ mimeBoundary =null rootContentId=null doOptimize=false 
doingSWA=false isSOAP11=false charSetEncoding=UTF-8 xmlVersion=null 
contentType=application/soap+xml ignoreXmlDeclaration=false 
autoCloseWriter=true actionProperty=null optimizedThreshold=0]
,930 axis2.transport.http.SOAPMessageFormatter  - contentType from the 
OMOutputFormat =application/soap+xml
,930 axis2.transport.http.SOAPMessageFormatter  - contentType returned 
=application/soap+xml; charset=UTF-8; action="urn:multipleParametersResponse"
,930 axis2.transport.http.SOAPMessageFormatter  - start writeTo()
,930 axis2.transport.http.SOAPMessageFormatter  -   preserve=false
,930 axis2.transport.http.SOAPMessageFormatter  -   isOptimized=false
,930 axis2.transport.http.SOAPMessageFormatter  -   isDoingSWA=false
,930 axis2.util.Utils  - MTOM optimized Threshold value =0
,930 axiom.om.impl.MTOMXMLStreamWriter  - OutputStream =class 
java.io.BufferedOutputStream
,930 axiom.om.impl.MTOMXMLStreamWriter  - OMFormat = OMOutputFormat [ 
mimeBoundary =null rootContentId=null doOptimize=false doingSWA=false 
isSOAP11=false charSetEncoding=UTF-8 xmlVersion=null 
contentType=application/soap+xml ignoreXmlDeclaration=false 
autoCloseWriter=true actionProperty=null optimizedThreshold=0]
,930 axiom.om.util.StAXUtils  - XMLStreamWriter is 
com.ctc.wstx.sw.SimpleNsStreamWriter
,930 axiom.om.impl.MTOMXMLStreamWriter  - Calling MTOMXMLStreamWriter.flush
,930 axiom.om.impl.MTOMXMLStreamWriter  - close
,930 axis2.transport.http.SOAPMessageFormatter  - end writeTo()
,946 axis2.transport.TransportUtils  - Found RequestResponseTransport setting 
response written
Etc.

Thanks,
William



From: Amila Suriarachchi [mailto:amilasuriarach...@gmail.com]
Sent: Wednesday, November 04, 2009 12:10 AM
To: axis-user@ws.apache.org
Subject: Re: Axis 1.x to Axis2 - intercepting all messages?


On Wed, Nov 4, 2009 at 4:43 AM, William Walsh 
<wwa...@curamsoftware.com<mailto:wwa...@curamsoftware.com>> wrote:

Currently we use Axis 1.4 for our application and via the server_config.wsdd 
file (provider="java:<classname>") and extending 
org.apache.axis.providers.java.MsgProvider and 
org.apache.axis.providers.java.RPCProvider we intercept all messages and do our 
own routing.



Obviously things are different in Axis2; but, from all the reading I've done 
it's not clear if we can do equivalent processing via a messageReceiver or via 
a Handler? We don't do any processing on the SOAP messages now, but get the 
method name, etc. from the MessageContext to invoke our method via reflection.  
If it's done via a Handler in Axis2 how do we specify the phase settings in 
axis2.xml to specify the last Handler and does this have to be done via a 
Module?  (Part of my confusion comes from not finding an explanation of what 
RMPhase is.)  Again, if it's via a Handler (as this thread suggests: 
http://marc.info/?t=121988146900001&r=1&w=2), I'm confused by what we would 
return from the Handler invoke method; that is, SUSPEND, ABORT, or CONTINUE 
don't seem to specify what we need to achieve, which would be more along the 
lines of DONE.

for your case better to use a message receiver rather than a handler.
this[1] may help as well.

thanks,
Amila.

[1] http://wso2.org/library/articles/extending-axis2



Thanks for any help available,

William


The information in this email is confidential and may be legally privileged.

It is intended solely for the addressee. Access to this email by anyone else

is unauthorized. If you are not the intended recipient, any disclosure,

copying, distribution or any action taken or omitted to be taken in reliance

on it, is prohibited and may be unlawful. If you are not the intended

addressee please contact the sender and dispose of this e-mail. Thank you.



--
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/


The information in this email is confidential and may be legally privileged.
It is intended solely for the addressee. Access to this email by anyone else
is unauthorized. If you are not the intended recipient, any disclosure,
copying, distribution or any action taken or omitted to be taken in reliance
on it, is prohibited and may be unlawful. If you are not the intended
addressee please contact the sender and dispose of this e-mail. Thank you.

Reply via email to