|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Axis 1.x to Axis2 - intercepting all messages?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. 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. |
|
|
Re: Axis 1.x to Axis2 - intercepting all messages?On Wed, Nov 4, 2009 at 4:43 AM, William Walsh <WWalsh@...> wrote:
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
-- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/ |
|
|
RE: Axis 1.x to Axis2 - intercepting all messages?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.InOutAxisOperation@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.InOutAxisOperation@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:amilasuriarachchi@...] On Wed, Nov 4, 2009 at 4:43 AM, William Walsh <WWalsh@...> 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.
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. |
|
|
Re: Axis 1.x to Axis2 - intercepting all messages?On Wed, Nov 11, 2009 at 1:53 AM, William Walsh <WWalsh@...> wrote:
Data binding happens at the message receiver. Normally this is an custom message receiver.
this is not databinding this is building the axiom tree. databinding happens at the message receiver.
RPCMessageReceiver is an inbuilt message receiver to invoke POJO objects. thanks, Amila.
-- Amila Suriarachchi WSO2 Inc. blog: http://amilachinthaka.blogspot.com/ |
| Free embeddable forum powered by Nabble | Forum Help |