On Wed, Nov 11, 2009 at 1:53 AM, William Walsh <wwa...@curamsoftware.com>wrote:
> 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) > Data binding happens at the message receiver. Normally this is an custom message receiver. 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) > this is not databinding this is building the axiom tree. databinding happens at the message receiver. > , MessageReceiver (,852), > RPCMessageReceiver is an inbuilt message receiver to invoke POJO objects. thanks, Amila. > 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> > 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. > > -- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/