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