Hi

This is not an axis specific issue but I would appreciate any help.

 

I am using axis and am trying to implement exception handling functionality for my web service but I'm running into an issue.

 

My Exception class is:

----------------------------------------------------------------------------

public class WebException extends Exception{   

      private String message;

      public WebException(String message){           

            this.message = message; }

 

      public String getMessage() {

            return this.message;

      }

}

 

And my web services implementation class is:

 

public class ComSuzSiebelWebService {

     

      private ComSuzSiebelWebServicesBean bean = null;

     

      public void setBean(ComSuzSiebelWebServicesBean bean) throws Exception, WebException {

            this.bean = bean;

            if (bean.getAccountLocation() != "b"){

                  WebException e = new WebException("wrong value entered for account location");

                  throw e;

}

      }

     

     

}    

 

And in the wsdl I defined the fault as:

 

<wsdl:message name="WebException">

   <part name="message" type="xsd:string"/>

 </wsdl:message>

<wsdl:portType>

<wsdl:operation name="setBean" parameterOrder="bean">

         <wsdl:input message="intf:setBeanRequest" name="setBeanRequest"/>

         <wsdl:output message="intf:setBeanResponse" name="setBeanResponse"/>

         <wsdl:fault name="fault" message="intf:WebException"/>  

      </wsdl:operation>

   </wsdl:portType>

 

 

But in the SOAP response message that I get back I'm getting the whole stack trace back

 

 

-        <soapenv:Fault>

                  <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</faultcode>

                  <faultstring>

com.suz.siebel.webservice.WebException: wrong value entered for account location

</faultstring>

                  <detail>

                        <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">

com.suz.siebel.webservice.WebException: wrong value entered for account location at com.suz.siebel.webservice.ComSuzSiebelWebService.setBean(ComSuzSiebelWebService.java:37) at java.lang.reflect.Method.invoke(Native Method) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:372) at

-----------------------

                        </ns2:stackTrace>

                  </detail>

        </soapenv:Fault>

 

 

 

 

 

My idea behind throwing the exception was to communicate back to the client that he has sent a wrong value for the "accountLocation" field of the bean that is sent to the setBean method. I don't want the whole stack trace to be sent back to the Client.

 

Could you pls tell what am I doing wrong or if I am taking the wrong approach here.

 

Thanks in advance.

 

Vikas Phonsa

 

 

Reply via email to