You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Glen Daniels <gd...@macromedia.com> on 2002/08/20 01:28:20 UTC

RE: Beta3: Problem with change in MsgProvider and FullMessageServ ice

Incidentally, the SOAPEnvelope/SOAPEnvelope signature below would still be able to access the MessageContext with MessageContext.getCurrentContext().

--Glen

> -----Original Message-----
> From: Glen Daniels [mailto:gdaniels@macromedia.com]
> Sent: Monday, August 19, 2002 7:21 PM
> To: 'axis-dev@xml.apache.org'
> Subject: RE: Beta3: Problem with change in MsgProvider and
> FullMessageServ ice
> 
> 
> 
> Hi Alex:
> 
> If you look at the comment in the code, it says essentially - 
> something that takes a MessageContext in is basically a 
> Handler, so why not just use Handlers (and 
> provider="handler").  So instead of something that looks like:
> 
>     public Document method(MessageContext msgContext);
> 
> you can have a class which extends BasicHandler and implements:
> 
>     public void invoke(MessageContext msgContext);
> 
> To return a Document in the body, you'd...
> 
>     {
>         SOAPEnvelope env = 
> msgContext.getRequestMessage().getSOAPEnvelope();
>         Element resultBody;  // fill this in at some point
>         ...processing...
> 
>         SOAPEnvelope reply = new SOAPEnvelope();
>         SOAPBodyElement body = new SOAPBodyElement(resultBody);
>         reply.addBodyElement(body);
>         Message replyMsg = new Message(reply);
>         msgContext.setResponseMessage(replyMsg);
>     }
> 
> It's a tiny bit more work, but keeps similar patterns 
> together, instead of mixing them.  The stuff dealt with by 
> the MsgProvider is all DOM/SOAP classes, and the stuff dealt 
> with by Handlers is MessageContexts.
> 
> Note that if you don't need all the stuff in the 
> MessageContext, I'm planning to make one more change (as 
> indicated in the comment) to remove the MessageContext call 
> from MsgProvider entirely, and replace it with a call to a 
> method that looks like:
> 
>     public SOAPEnvelope method(SOAPEnvelope request)
> 
> Then you could just take and return a SOAPEnvelope.  Sound 
> reasonable to you?
> 
> --Glen
> 
> > -----Original Message-----
> > From: Volanis, Alexander [mailto:AVolanis@rsasecurity.com]
> > Sent: Monday, August 19, 2002 5:49 PM
> > To: 'axis-dev@xml.apache.org'
> > Subject: Beta3: Problem with change in MsgProvider and
> > FullMessageService
> > 
> > 
> > Hi everyone,
> > 
> > I have a service implemented as a "FullMessageService". It 
> > worked with Axis
> > Beta until about nightly build 7-26-2002. A change in the way 
> > MsgProvider
> > calls a service defined with the "FullMessageService" attribute is
> > preventing me from getting anything out of my service. 
> > Nightly 7-26 had this
> > piece of code to process the request at the bottom of the 
> > MsgProvider.java:
> > 
> >         // !!! WANT TO MAKE THIS SAX-CAPABLE AS WELL.  Some 
> > people will
> >         //     want DOM, but our examples should mostly lean 
> > towards the
> >         //     SAX side of things....
> > 
> >         Document retDoc = (Document) method.invoke( obj, 
> argObjects );
> > 
> >         if ( retDoc != null ) {
> >             SOAPBodyElement el = new
> > SOAPBodyElement(retDoc.getDocumentElement());
> >             resEnv.addBodyElement(el);
> > 
> > The latest nightly has instead this code:
> > 
> >             argObjects[0] = msgContext ;
> >             method.invoke(obj, argObjects);
> > 
> > which completely ignores the return value of the invocation. 
> > How can I get
> > this functionality back? I liked the fact that I could get 
> > the msgContext
> > into my service and deal with the SOAPEnvelope myself. Do I 
> > have to work
> > with the MessageContext to build the response message instead 
> > of returning
> > anything from my method?
> > 
> > The signature of the function invoked is : 
> > org.w3c.dom.Document 
> > requestMethod(org.apache.axis.MessageContext msg);
> > 
> > Thank you in advance for your time,
> > 
> > Alex Volanis 
> > Consulting Engineer 
> > e-mail: avolanis@rsasecurity.com 
> > _______________________________________ 
> > RSA SECURITY Inc. 
> > The Most Trusted Name in e-Security 
> > 174 Middlessex Tpke, Bedford, MA 01730 USA 
> > http://www.rsasecurity.com 
> > 
>