Hi!

Try removing your unnecessary "throws Exception" clause.

**
Martin

2010/10/12 paul nibin <nibin....@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-unsubscr...@axis.apache.org
For additional commands, e-mail: java-user-h...@axis.apache.org

Reply via email to