Hmm, strange. I don't have an answer. Here is what I have in my wsdl for
the operation I tested:

...

<wsdl:portType name="TestWebService">

<wsdl:operation name="baseTester">

<wsdl:input message="tns:getBaseRequest"/>

<wsdl:output message="tns:getBaseResponse"/>

<wsdl:fault name="RequestFault" message="tns:RequestFault"/>

<wsdl:fault name="ResponseFault" message="tns:ResponseFault"/>

</wsdl:operation>

...

down in the binding section I have:

...

<wsdl:binding name="TestWebServiceSoapBinding"
type="tns:TestWebService">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http";
style="document"/>

<wsdl:operation name="baseTester">

<soap:operation soapAction=""/>

<wsdl:input>

<soap:body use="literal"/>

</wsdl:input>

<wsdl:output>

<soap:body use="literal"/>

</wsdl:output>

<wsdl:fault name="RequestFault">

<soap:fault name="RequestFault" use="literal"/>

</wsdl:fault>

<wsdl:fault name="ResponseFault">

<soap:fault name="ResponseFault" use="literal"/>

</wsdl:fault>

</wsdl:operation>

...

 If I try to throw a RequestFault or ResponseFault, it goes straight
back to the client by-passing my handler. If I throw a Runtime, I get my
onFault() called. Again, I am using the much older Axis 1.4 with Tomcat
5.5. I'm using Document/Literal, too. I noticed your using the RPC style
of SOAP web service? (Why should that matter here?)

-jeff

   
  _____  

From: pp pp [mailto:[EMAIL PROTECTED] 
Sent: Monday, September 17, 2007 12:42 PM
To: axis-user@ws.apache.org
Subject: Re: axis handler being omitted



        well, if it comes to me I got different result. if I am wrong
somewhere, please correct me. 
        Now, If I call a method:
        public void print(){
             System.out.println("MyService: print()" +1/0);
         }
        
        the handler is omitted and client
receives:"java.lang.ArithmeticException: / by zero" 
        so I quess if I rethrow even a new exception handler would still
be omitted
        if I call a method:
        public int add (int i1, int i2) throws DMSException    { 
        
        // ....
        }
        then I got my DMSException on the client side and my handler is
omitted here as well.
        
        so I assume whether or not it is checked or unchecked exception
the handler is never started.
        
        My handler is: 
        public class MonitorHandler extends BasicHandler{
            public   void onFault(MessageContext msgContext) {
                System.out.println("Inside ON FAULT OPERATION");
            
            }
            public void invoke(MessageContext msgContext)  throws
AxisFault{ 
              try { 
                  System.out.println("!!!!!!INSIDE MONITOR HANDLER#
!!!!!!!");
                ...
             }catch (Exception e) {
                          throw AxisFault.makeFault(e);
             }  
        }
        
        

Reply via email to