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.