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