axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Makundi <martin.maku...@koodaripalvelut.com>
Subject Re: Simple web service invocation failing
Date Tue, 12 Oct 2010 06:05:22 GMT
Ah, so your problem is only the void ? Ok. Then I don't know what's
wrong. Is it a blocker or you'd just rather have it void than return
dummy value?

**
Martin

2010/10/12 paul nibin <nibin.cse@gmail.com>:
> Sorry. I did not exactly understand what you meant..
>
> I tried the following web service
>
> public class SimpleTestVoid
> {
>     public String echo( String message ) throws Exception
>     {
>         return message;
>     }
> }
>
> Even though the method is throws exception, the client is successfully able
> to invoke the web method and everything is working great.
>
> Thanks,
> Paul
>
> On Tue, Oct 12, 2010 at 11:13 AM, Martin Makundi
> <martin.makundi@koodaripalvelut.com> wrote:
>>
>> If  you want to throw exceptions they must be wrapped into web service
>> exceptions.
>>
>> **
>> Martin
>>
>> 2010/10/12 paul nibin <nibin.cse@gmail.com>:
>> > Hi,
>> >
>> >                Thank you so much for the response.
>> >
>> > I know that it will work if the "throws Exception" clause is removed.
>> >
>> > But I need to support this feature. Is there any way to support invoking
>> > a
>> > method which does not take any input arguments, returns void and throws
>> > an
>> > exception?
>> >
>> > Paul
>> >
>> > On Tue, Oct 12, 2010 at 11:01 AM, Martin Makundi
>> > <martin.makundi@koodaripalvelut.com> wrote:
>> >>
>> >> Hi!
>> >>
>> >> Try removing your unnecessary "throws Exception" clause.
>> >>
>> >> **
>> >> Martin
>> >>
>> >> 2010/10/12 paul nibin <nibin.cse@gmail.com>:
>> >> > Hi all,
>> >> >
>> >> >        I am trying to invoke a simple web service.
>> >> >
>> >> > public class SimpleTestVoid
>> >> > {
>> >> >     public void printMessage() throws Exception
>> >> >     {
>> >> >         System.out.println( "Hello world" );
>> >> >     }
>> >> > }
>> >> >
>> >> >
>> >> > The WSDL is generated fine. Generated the client. But when invoking
>> >> > the
>> >> > service, I am getting an exception.
>> >> >
>> >> > java.lang.UnsupportedOperationException: An access occurred that is
>> >> > not
>> >> > valid.
>> >> >         at
>> >> >
>> >> >
>> >> > org.apache.axis2.description.InOnlyAxisOperation.getMessage(InOnlyAxisOperation.java:117)
>> >> >         at
>> >> >
>> >> >
>> >> > org.apache.axis2.util.MessageContextBuilder.createOutMessageContext(MessageContextBuilder.java:183)
>> >> >         at
>> >> >
>> >> >
>> >> > org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:37)
>> >> >         at
>> >> >
>> >> >
>> >> > org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
>> >> >         at
>> >> > org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
>> >> >         at
>> >> >
>> >> >
>> >> > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
>> >> >         at
>> >> >
>> >> > org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
>> >> >
>> >> > I debugged some part of the code.
>> >> >
>> >> > When the service is deployed, according to the signature of the
>> >> > method,
>> >> > it
>> >> > is creating a InOnlyAxisOperation with "robust-in-only" as the
>> >> > message
>> >> > exchange pattern( it is not taking any input params and throwing an
>> >> > exception).
>> >> >
>> >> >
>> >> > org.apache.axis2.deployment.util.UtilsgetAxisOperationForJmethod()
>> >> >
>> >> >      if ("void".equals(method.getReturnType().getName())) {
>> >> >             if (method.getExceptionTypes().length > 0)
{
>> >> >                 operation = AxisOperationFactory
>> >> >
>> >> > .getAxisOperation(WSDLConstants.MEP_CONSTANT_ROBUST_IN_ONLY);
>> >> >             } else {
>> >> >                 operation = AxisOperationFactory
>> >> >
>> >> > .getAxisOperation(WSDLConstants.MEP_CONSTANT_IN_ONLY);
>> >> >             }
>> >> >
>> >> > If MEP_CONSTANT_IN_ONLY message exchange pattern is used, then all
>> >> > works
>> >> > fine. But if there a method which does not take any input parameters
>> >> > and
>> >> > throws some exception, then this issue comes.
>> >> >
>> >> >
>> >> > org.apache.axis2.description.AxisOperationFactory.getAxisOperation(int
>> >> > mepURI)
>> >> >
>> >> >             case WSDLConstants.MEP_CONSTANT_ROBUST_IN_ONLY
: {
>> >> >                 abOpdesc = new InOnlyAxisOperation();
>> >> >
>> >> >
>> >> >
>> >> > abOpdesc.setMessageExchangePattern(WSDL2Constants.MEP_URI_ROBUST_IN_ONLY);
>> >> >                 break;
>> >> >
>> >> > So when the invoking the method using a client, in
>> >> >
>> >> >
>> >> > org.apache.axis2.util.MessageContextBuilder.createOutMessageContext(MessageContext
>> >> > inMessageContext)
>> >> >
>> >> > if (ao != null){
>> >> >
>> >> >
>> >> >
>> >> > newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
>> >> >         }
>> >> >
>> >> > Since a0 is a org.apache.axis2.description.InOnlyAxisOperation, the
>> >> > following getMessage is invoked, so it is throwing this
>> >> > UnsupportedOperationException.
>> >> >
>> >> > public AxisMessage getMessage(String label) {
>> >> >         if (WSDLConstants.MESSAGE_LABEL_IN_VALUE.equals(label))
{
>> >> >             return (AxisMessage) getChild("inMessage");
>> >> >         } else {
>> >> >             throw new
>> >> > UnsupportedOperationException(Messages.getMessage("invalidacess"));
>> >> >         }
>> >> >     }
>> >> >
>> >> > If any more info is required please let me know. Hoping for a
>> >> > response..
>> >> >
>> >> > Please.. I need help with this one...
>> >> >
>> >> > Thanks,
>> >> > Paul
>> >> >
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
>> >> For additional commands, e-mail: java-user-help@axis.apache.org
>> >>
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
>> For additional commands, e-mail: java-user-help@axis.apache.org
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
For additional commands, e-mail: java-user-help@axis.apache.org


Mime
View raw message