You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by Amitesh Pandya <am...@gmail.com> on 2006/06/23 12:56:12 UTC

SOOOOOOOAP FAULLLLLT.... Sandesha2

Hi there,
I can't believe no one has yet hit this problem or NO ONE has yet tried it.
I'm sure there is a Solution to this problem. OR it is not a problem
(It's just me who is not using it properly :(

The problem is regarding sending a SOAPFault to the client from a
reliable service:

Description: Axis2 v1.0 + Sandesha2 v1.0

1) I have an IN-OUT HelloWorldECHO service.
2) I've generated this service from a WSDL using WSDL2JAVA script.
3) I've a Reliable client which invokes this service.

NORMAL invocation works perfect :)

NOW: I want to throw an exception from my service and want to see it
as a SOAPFAULT in my client.
In order to achive this I do the following things:

1) I throw an Exception from the Generated SKELETON class:

	    public class ReliableHelloWorldServiceSkeleton{
	        /**
	         * Auto generated method signature
	         */
	        public  HelloWorldDocument helloWorld(HelloWorldDocument param0 ){
	
	            System.out.println("Message received in the ECHO Service
is == " + param0);
	            OMFactory fac = OMAbstractFactory.getOMFactory();
	            HelloWorldDocument hwDoc =
HelloWorldDocument.Factory.newInstance();
	            hwDoc.addNewHelloWorld().setInput("ECHO RESPONSE FROM
CLIENT.....");
	
	            throw new NullPointerException();
	        }
	
	    }
	
	
2) In the generated "InOut" class
(HelloWorldServiceMessageReceiverInOut.java) I don't do a lot but the
code of the "invokeBusinessLogic()" method is below:

        public void invokeBusinessLogic(MessageContext msgContext,
MessageContext newMsgContext)throws AxisFault{
        try {
	        // get the implementation class for the Web Service
	        Object obj = getTheImplementationObject(msgContext);
	        //Inject the Message Context if it is asked for
	        org.apache.axis2.engine.DependencyManager.configureBusinessLogicProvider(obj,
msgContext.getOperationContext());
	        ReliableHelloWorldServiceSkeleton skel =
(ReliableHelloWorldServiceSkeleton)obj;
	        //Out Envelop
	        org.apache.axiom.soap.SOAPEnvelope envelope = null;
	        //Find the axisOperation that has been set by the Dispatch phase.
	        org.apache.axis2.description.AxisOperation op =
msgContext.getOperationContext().getAxisOperation();
	        if (op == null) {
	        	throw new org.apache.axis2.AxisFault("Operation is not
located, if this is doclit style the SOAP-ACTION should specified via
the SOAP Action to use the RawXMLProvider");
	        }
	        String methodName;
	        if(op.getName() != null & (methodName =
op.getName().getLocalPart()) != null){
	        	if("helloWorld".equals(methodName)){
	        		examples.webservices.reliable.HelloWorldDocument param3 = null;
                    		//doc style
                    		param3 =skel.helloWorld(

	(examples.webservices.reliable.HelloWorldDocument)fromOM(

msgContext.getEnvelope().getBody().getFirstElement(),

examples.webservices.reliable.HelloWorldDocument.class,

getEnvelopeNamespaces(msgContext.getEnvelope())));

                    		envelope =
toEnvelope(getSOAPFactory(msgContext), param3, false);
	        	}
	        	newMsgContext.setEnvelope(envelope);
	
	        }
        }catch (Exception e) {
            	System.out.println("Reached the CATCH block of the INOUT");
                System.out.println("NOW Throwing the Axis Exception");
            	throw org.apache.axis2.AxisFault.makeFault(e);
            }
        }


3) All I expect after this is to see that the "onError()" message get
invoked on my "callback"
   at the client side. But I get this on the server side CONTINUOUSLEY:



[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Message received
in the ECHO Service is ==
<helloWorld xmlns="http://examples/webservices/reliable"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <input>THIS IS A TEST MESSAGE FOR ===> ECHO</input>
</helloWorld>
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Reached the CATCH
block of the INOUT
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O NOW Throwing the
Axis Exception
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: reasonOFFault; nested
exception is:
	java.lang.NullPointerException; nested exception is:
	org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
	java.lang.NullPointerException
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
	java.lang.NullPointerException
	at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
	at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
	at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
	at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
Caused by: java.lang.NullPointerException
	at my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
	at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
	... 4 more

[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
	java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R 	... 4 more
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
	org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
	at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
	at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
	at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
	at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
	at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)

[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R 	at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:57:247 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
	org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
	at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
	at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
	at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
	at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
	at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
	at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)


QUESTIONS:
1) Is this the right way of throwing exception and receiveng SOAP Fault ?
2) If it is not then could you please suggest what should I do to get
the SOAPFault at the client side??

Thanks and Kind Regards
your help is greatly appreciated

---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org


Re: SOOOOOOOAP FAULLLLLT.... Sandesha2

Posted by Ali Sadik Kumlali <as...@yahoo.com>.
Hi Amitesh,
 
May your problem related with http://issues.apache.org/jira/browse/AXIS2-741 ? In that case I didn't use Sandesha. But, Axis2 is alone did not work well for the scenario. 
 
Regards,
 
Ali Sadik Kumlali

----- Original Message ----
From: Amitesh Pandya <am...@gmail.com>
To: sandesha-dev@ws.apache.org
Sent: Friday, June 23, 2006 1:56:12 PM
Subject: SOOOOOOOAP FAULLLLLT.... Sandesha2


Hi there,
I can't believe no one has yet hit this problem or NO ONE has yet tried it.
I'm sure there is a Solution to this problem. OR it is not a problem
(It's just me who is not using it properly :(

The problem is regarding sending a SOAPFault to the client from a
reliable service:

Description: Axis2 v1.0 + Sandesha2 v1.0

1) I have an IN-OUT HelloWorldECHO service.
2) I've generated this service from a WSDL using WSDL2JAVA script.
3) I've a Reliable client which invokes this service.

NORMAL invocation works perfect :)

NOW: I want to throw an exception from my service and want to see it
as a SOAPFAULT in my client.
In order to achive this I do the following things:

1) I throw an Exception from the Generated SKELETON class:

        public class ReliableHelloWorldServiceSkeleton{
            /**
             * Auto generated method signature
             */
            public  HelloWorldDocument helloWorld(HelloWorldDocument param0 ){
    
                System.out.println("Message received in the ECHO Service
is == " + param0);
                OMFactory fac = OMAbstractFactory.getOMFactory();
                HelloWorldDocument hwDoc =
HelloWorldDocument.Factory.newInstance();
                hwDoc.addNewHelloWorld().setInput("ECHO RESPONSE FROM
CLIENT.....");
    
                throw new NullPointerException();
            }
    
        }
    
    
2) In the generated "InOut" class
(HelloWorldServiceMessageReceiverInOut.java) I don't do a lot but the
code of the "invokeBusinessLogic()" method is below:

        public void invokeBusinessLogic(MessageContext msgContext,
MessageContext newMsgContext)throws AxisFault{
        try {
            // get the implementation class for the Web Service
            Object obj = getTheImplementationObject(msgContext);
            //Inject the Message Context if it is asked for
            org.apache.axis2.engine.DependencyManager.configureBusinessLogicProvider(obj,
msgContext.getOperationContext());
            ReliableHelloWorldServiceSkeleton skel =
(ReliableHelloWorldServiceSkeleton)obj;
            //Out Envelop
            org.apache.axiom.soap.SOAPEnvelope envelope = null;
            //Find the axisOperation that has been set by the Dispatch phase.
            org.apache.axis2.description.AxisOperation op =
msgContext.getOperationContext().getAxisOperation();
            if (op == null) {
                throw new org.apache.axis2.AxisFault("Operation is not
located, if this is doclit style the SOAP-ACTION should specified via
the SOAP Action to use the RawXMLProvider");
            }
            String methodName;
            if(op.getName() != null & (methodName =
op.getName().getLocalPart()) != null){
                if("helloWorld".equals(methodName)){
                    examples.webservices.reliable.HelloWorldDocument param3 = null;
                            //doc style
                            param3 =skel.helloWorld(

    (examples.webservices.reliable.HelloWorldDocument)fromOM(

msgContext.getEnvelope().getBody().getFirstElement(),

examples.webservices.reliable.HelloWorldDocument.class,

getEnvelopeNamespaces(msgContext.getEnvelope())));

                            envelope =
toEnvelope(getSOAPFactory(msgContext), param3, false);
                }
                newMsgContext.setEnvelope(envelope);
    
            }
        }catch (Exception e) {
                System.out.println("Reached the CATCH block of the INOUT");
                System.out.println("NOW Throwing the Axis Exception");
                throw org.apache.axis2.AxisFault.makeFault(e);
            }
        }


3) All I expect after this is to see that the "onError()" message get
invoked on my "callback"
   at the client side. But I get this on the server side CONTINUOUSLEY:



[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Message received
in the ECHO Service is ==
<helloWorld xmlns="http://examples/webservices/reliable";
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
  <input>THIS IS A TEST MESSAGE FOR ===> ECHO</input>
</helloWorld>
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Reached the CATCH
block of the INOUT
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O NOW Throwing the
Axis Exception
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: reasonOFFault; nested
exception is:
    java.lang.NullPointerException; nested exception is:
    org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
    at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
Caused by: java.lang.NullPointerException
    at my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
    at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
    ... 4 more

[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     ... 4 more
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
    org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
    at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
    at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)

[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:57:247 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
    org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
    at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
    at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)


QUESTIONS:
1) Is this the right way of throwing exception and receiveng SOAP Fault ?
2) If it is not then could you please suggest what should I do to get
the SOAPFault at the client side??

Thanks and Kind Regards
your help is greatly appreciated

---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org


Re: SOOOOOOOAP FAULLLLLT.... Sandesha2

Posted by Ali Sadik Kumlali <as...@yahoo.com>.
Hi Amitesh,
 
May your problem related with http://issues.apache.org/jira/browse/AXIS2-741 ? In that case I didn't use Sandesha. But, Axis2 is alone did not work well for the scenario. 
 
Regards,
 
Ali Sadik Kumlali

----- Original Message ----
From: Amitesh Pandya <am...@gmail.com>
To: sandesha-dev@ws.apache.org
Sent: Friday, June 23, 2006 1:56:12 PM
Subject: SOOOOOOOAP FAULLLLLT.... Sandesha2


Hi there,
I can't believe no one has yet hit this problem or NO ONE has yet tried it.
I'm sure there is a Solution to this problem. OR it is not a problem
(It's just me who is not using it properly :(

The problem is regarding sending a SOAPFault to the client from a
reliable service:

Description: Axis2 v1.0 + Sandesha2 v1.0

1) I have an IN-OUT HelloWorldECHO service.
2) I've generated this service from a WSDL using WSDL2JAVA script.
3) I've a Reliable client which invokes this service.

NORMAL invocation works perfect :)

NOW: I want to throw an exception from my service and want to see it
as a SOAPFAULT in my client.
In order to achive this I do the following things:

1) I throw an Exception from the Generated SKELETON class:

        public class ReliableHelloWorldServiceSkeleton{
            /**
             * Auto generated method signature
             */
            public  HelloWorldDocument helloWorld(HelloWorldDocument param0 ){
    
                System.out.println("Message received in the ECHO Service
is == " + param0);
                OMFactory fac = OMAbstractFactory.getOMFactory();
                HelloWorldDocument hwDoc =
HelloWorldDocument.Factory.newInstance();
                hwDoc.addNewHelloWorld().setInput("ECHO RESPONSE FROM
CLIENT.....");
    
                throw new NullPointerException();
            }
    
        }
    
    
2) In the generated "InOut" class
(HelloWorldServiceMessageReceiverInOut.java) I don't do a lot but the
code of the "invokeBusinessLogic()" method is below:

        public void invokeBusinessLogic(MessageContext msgContext,
MessageContext newMsgContext)throws AxisFault{
        try {
            // get the implementation class for the Web Service
            Object obj = getTheImplementationObject(msgContext);
            //Inject the Message Context if it is asked for
            org.apache.axis2.engine.DependencyManager.configureBusinessLogicProvider(obj,
msgContext.getOperationContext());
            ReliableHelloWorldServiceSkeleton skel =
(ReliableHelloWorldServiceSkeleton)obj;
            //Out Envelop
            org.apache.axiom.soap.SOAPEnvelope envelope = null;
            //Find the axisOperation that has been set by the Dispatch phase.
            org.apache.axis2.description.AxisOperation op =
msgContext.getOperationContext().getAxisOperation();
            if (op == null) {
                throw new org.apache.axis2.AxisFault("Operation is not
located, if this is doclit style the SOAP-ACTION should specified via
the SOAP Action to use the RawXMLProvider");
            }
            String methodName;
            if(op.getName() != null & (methodName =
op.getName().getLocalPart()) != null){
                if("helloWorld".equals(methodName)){
                    examples.webservices.reliable.HelloWorldDocument param3 = null;
                            //doc style
                            param3 =skel.helloWorld(

    (examples.webservices.reliable.HelloWorldDocument)fromOM(

msgContext.getEnvelope().getBody().getFirstElement(),

examples.webservices.reliable.HelloWorldDocument.class,

getEnvelopeNamespaces(msgContext.getEnvelope())));

                            envelope =
toEnvelope(getSOAPFactory(msgContext), param3, false);
                }
                newMsgContext.setEnvelope(envelope);
    
            }
        }catch (Exception e) {
                System.out.println("Reached the CATCH block of the INOUT");
                System.out.println("NOW Throwing the Axis Exception");
                throw org.apache.axis2.AxisFault.makeFault(e);
            }
        }


3) All I expect after this is to see that the "onError()" message get
invoked on my "callback"
   at the client side. But I get this on the server side CONTINUOUSLEY:



[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Message received
in the ECHO Service is ==
<helloWorld xmlns="http://examples/webservices/reliable";
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
  <input>THIS IS A TEST MESSAGE FOR ===> ECHO</input>
</helloWorld>
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O Reached the CATCH
block of the INOUT
[07/06/06 11:22:55:210 BST] 00000039 SystemOut     O NOW Throwing the
Axis Exception
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: reasonOFFault; nested
exception is:
    java.lang.NullPointerException; nested exception is:
    org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
    at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
Caused by: java.lang.NullPointerException
    at my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
    at my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
    ... 4 more

[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: reasonOFFault; nested exception is:
    java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:71)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R Caused by:
java.lang.NullPointerException
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceSkeleton.helloWorld(ReliableHelloWorldServiceSkeleton.java:22)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     at
my.test.serv.schemas.ReliableHelloWorldServiceMessageReceiverInOut.invokeBusinessLogic(ReliableHelloWorldServiceMessageReceiverInOut.java:56)
[07/06/06 11:22:55:225 BST] 00000039 SystemErr     R     ... 4 more
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
    org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
    at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
    at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)

[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R Caused by:
org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
[07/06/06 11:22:56:228 BST] 00000039 SystemErr     R     at
org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)
[07/06/06 11:22:57:247 BST] 00000039 SystemErr     R
org.apache.sandesha2.SandeshaException: Invalid message addition ,
operation context completed; nested exception is:
    org.apache.axis2.AxisFault: Invalid message addition , operation
context completed
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:199)
Caused by: org.apache.axis2.AxisFault: Invalid message addition ,
operation context completed
    at org.apache.axis2.description.InOutAxisOperation.addMessageContext(InOutAxisOperation.java:63)
    at org.apache.axis2.context.OperationContext.addMessageContext(OperationContext.java:85)
    at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:35)
    at org.apache.axis2.engine.AxisEngine.resumeReceive(AxisEngine.java:497)
    at org.apache.axis2.engine.AxisEngine.resume(AxisEngine.java:543)
    at org.apache.sandesha2.workers.InOrderInvoker.run(InOrderInvoker.java:189)


QUESTIONS:
1) Is this the right way of throwing exception and receiveng SOAP Fault ?
2) If it is not then could you please suggest what should I do to get
the SOAPFault at the client side??

Thanks and Kind Regards
your help is greatly appreciated

---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org