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 Amila Suriarachchi <am...@gmail.com> on 2007/07/30 13:56:10 UTC

Processing Roubust in only messages problem.

Anyway there seems to be a problem with the code, I'll forward this to dev
list as well.

in AxisOperationFactory.java we have this code
} else if (WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) ||
                WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)
||
                WSDL20_2004_Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI))
{
            abOpdesc = new InOnlyAxisOperation();
            abOpdesc.setMessageExchangePattern(
WSDL2Constants.MEP_URI_ROBUST_IN_ONLY);

which generates an InOnlyAxisOperation for the Roubust in only operaions and
set the message exchange pattern. But in Abstract messge receiver it only
checks for InOnlyAxisOperation

try {
            invokeBusinessLogic(messageCtx);
        } catch (AxisFault fault) {
            // If we're in-only, eat this.  Otherwise, toss it upwards!
            if (messageCtx.getAxisOperation() instanceof
InOnlyAxisOperation) {
                log.error(fault);
            } else {
                throw fault;
            }
        } finally {
            restoreThreadContext(tc);
        }

Don't we have to check for mep here as well? otherwise fault messages of the
Roubust inOnly messages also won't thrown.

Amila.

On 7/30/07, Amila Suriarachchi <am...@gmail.com> wrote:
>
> see the wsdl spec http://www.w3.org/TR/wsdl#_one-way
>
> for one way operations there can not be fault messages. if you use fault
> it must be in out.
>
> Amila.
>
> On 7/30/07, Michael Bell <mi...@cms.hu-berlin.de> wrote:
> >
> > Hi Deepal.
> >
> > Deepal jayasinghe schrieb:
> >
> > > I create a POJO and deploy and I got the expected result , so will you
> > > be able to provide me more data to re-generate the issues. FYI I have
> > > attached my POJO.
> >
> > I attached two WSDL files (stupid SQL wrapper plus common types and
> > messages). The file with suffix orig is the web service which I want to
> > implement. The file with the short filename is the specification which
> > works. It looks like that AxisFault will only be correctly handled by
> > the InOut message receiver. The RobustInOnly message receiver has a
> > problem. Perhaps this has something to do with the initialization of the
> > web server or the inheritaed classes.
> >
> > BTW some details about my server implementation. I always generate the
> > skeleton and the interface. My implementation class extends the
> > skeleton. If I throw the custom exception (specified in the WSDL)in my
> > implementation then his exception will be catched by the generated
> > message receiver. This receiver packs the exception into an AxisFault
> > and throw it again. The problem is that it looks like the handling of
> > the RobustInOnly and InOut message receivers is different.
> >
> > If you have a normal InOut receiver then you get an http 202 code plus
> > the SOAP error. If you have RobustInOnly then you get only http 202.
> >
> > Best regards
> >
> > Michael
> > --
> > _______________________________________________________________
> >
> > Michael Bell                    Humboldt-Universitaet zu Berlin
> >
> > Tel.: +49 (0)30-2093 2482       ZE Computer- und Medienservice
> > Fax:  +49 (0)30-2093 2704       Unter den Linden 6
> > michael.bell@cms.hu-berlin.de   D-10099 Berlin
> > _______________________________________________________________
> >
> > X.509 CA Certificates / Wurzelzertifikate
> >
> > http://ra.pki.hu-berlin.de
> >
> >
>
>
> --
> Amila Suriarachchi,
> WSO2 Inc.




-- 
Amila Suriarachchi,
WSO2 Inc.

Re: Processing Roubust in only messages problem.

Posted by Amila Suriarachchi <am...@gmail.com>.
I did change the AbstractMessageReceiver to support this senario and some
trivial changes.

http://svn.apache.org/viewvc?view=rev&rev=561257

Please see the commit message.

Amila.

On 7/30/07, Amila Suriarachchi <am...@gmail.com> wrote:
>
> Anyway there seems to be a problem with the code, I'll forward this to dev
> list as well.
>
> in AxisOperationFactory.java we have this code
> } else if (WSDL2Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) ||
>                 WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)
> ||
>
> WSDL20_2004_Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)) {
>             abOpdesc = new InOnlyAxisOperation();
>             abOpdesc.setMessageExchangePattern(
> WSDL2Constants.MEP_URI_ROBUST_IN_ONLY );
>
> which generates an InOnlyAxisOperation for the Roubust in only operaions
> and set the message exchange pattern. But in Abstract messge receiver it
> only checks for InOnlyAxisOperation
>
> try {
>             invokeBusinessLogic(messageCtx);
>         } catch (AxisFault fault) {
>             // If we're in-only, eat this.  Otherwise, toss it upwards!
>             if (messageCtx.getAxisOperation() instanceof
> InOnlyAxisOperation) {
>                 log.error(fault);
>             } else {
>                 throw fault;
>             }
>         } finally {
>             restoreThreadContext(tc);
>         }
>
> Don't we have to check for mep here as well? otherwise fault messages of
> the Roubust inOnly messages also won't thrown.
>
> Amila.
>
> On 7/30/07, Amila Suriarachchi <am...@gmail.com> wrote:
> >
> > see the wsdl spec http://www.w3.org/TR/wsdl#_one-way
> >
> > for one way operations there can not be fault messages. if you use fault
> > it must be in out.
> >
> > Amila.
> >
> > On 7/30/07, Michael Bell <michael.bell@cms.hu-berlin.de > wrote:
> > >
> > > Hi Deepal.
> > >
> > > Deepal jayasinghe schrieb:
> > >
> > > > I create a POJO and deploy and I got the expected result , so will
> > > you
> > > > be able to provide me more data to re-generate the issues. FYI I
> > > have
> > > > attached my POJO.
> > >
> > > I attached two WSDL files (stupid SQL wrapper plus common types and
> > > messages). The file with suffix orig is the web service which I want
> > > to
> > > implement. The file with the short filename is the specification which
> > >
> > > works. It looks like that AxisFault will only be correctly handled by
> > > the InOut message receiver. The RobustInOnly message receiver has a
> > > problem. Perhaps this has something to do with the initialization of
> > > the
> > > web server or the inheritaed classes.
> > >
> > > BTW some details about my server implementation. I always generate the
> > > skeleton and the interface. My implementation class extends the
> > > skeleton. If I throw the custom exception (specified in the WSDL)in my
> > >
> > > implementation then his exception will be catched by the generated
> > > message receiver. This receiver packs the exception into an AxisFault
> > > and throw it again. The problem is that it looks like the handling of
> > > the RobustInOnly and InOut message receivers is different.
> > >
> > > If you have a normal InOut receiver then you get an http 202 code plus
> > > the SOAP error. If you have RobustInOnly then you get only http 202.
> > >
> > > Best regards
> > >
> > > Michael
> > > --
> > > _______________________________________________________________
> > >
> > > Michael Bell                    Humboldt-Universitaet zu Berlin
> > >
> > > Tel.: +49 (0)30-2093 2482       ZE Computer- und Medienservice
> > > Fax:  +49 (0)30-2093 2704       Unter den Linden 6
> > > michael.bell@cms.hu-berlin.de   D-10099 Berlin
> > > _______________________________________________________________
> > >
> > > X.509 CA Certificates / Wurzelzertifikate
> > >
> > > http://ra.pki.hu-berlin.de
> > >
> > >
> >
> >
> > --
> > Amila Suriarachchi,
> > WSO2 Inc.
>
>
>
>
> --
> Amila Suriarachchi,
> WSO2 Inc.




-- 
Amila Suriarachchi,
WSO2 Inc.