You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ax...@ws.apache.org on 2004/10/12 19:09:51 UTC

[jira] Commented: (AXIS-1605) SOAPFaultException should be throw instead of AxisFault to be compliant with JAX-RPC 1.1

The following comment has been added to this issue:

     Author: Sébastien Tardif
    Created: Tue, 12 Oct 2004 10:08 AM
       Body:
Maybe my interpretation of the spec is not exact but for sure it will be better to use SOAPFaultException than a specific Axis class.

My use case triggering this inquiry is that when I call on the instance of Exception getMessage() it doesn't return all the errors messages describing the problems. But they are shown when I do ex.printStackTrace(). So to get all the information we have to cast to AxisFault.

So if getMessage() return a complete message I will not need anymore a AxisFault or a SOAPFaultException.

The stack trace is like this:
SEVERE: Message doesn't comply with the associated XML schema :
The following exception occured while validating field: _queryExpressionList of class: com.docharbor.webservices.Criteria
ValidationException: The field '_operator' (whose xml name is 'operator') is a required field of class 'com.docharbor.webservices.QueryExpression;
   - location of error: XPATH: QueryExpression
	at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:208)
	at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDescriptorImpl.java:903)
	at org.exolab.castor.xml.Validator.validate(Validator.java:122)
	at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:229)
	at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDescriptorImpl.java:903)
	at org.exolab.castor.xml.Validator.validate(Validator.java:122)

But the ex.getMessage() is just this:
; nested exception is: 
	java.io.IOException: Message doesn't comply with the associated XML schema :The following exception occured while validating field: _queryExpressionList of class: com.docharbor.webservices.Criteria

So at least the getMessage() should return this:
SEVERE: Message doesn't comply with the associated XML schema :
The following exception occured while validating field: _queryExpressionList of class: com.docharbor.webservices.Criteria
ValidationException: The field '_operator' (whose xml name is 'operator') is a required field of class 'com.docharbor.webservices.QueryExpression;
   - location of error: XPATH: QueryExpression

---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/AXIS-1605?page=comments#action_53946

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/AXIS-1605

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: AXIS-1605
    Summary: SOAPFaultException should be throw instead of AxisFault to be compliant with JAX-RPC 1.1
       Type: Bug

     Status: Unassigned
   Priority: Major

    Project: Axis
   Versions:
             1.2 Beta

   Assignee: 
   Reporter: Sébastien Tardif

    Created: Tue, 12 Oct 2004 9:35 AM
    Updated: Tue, 12 Oct 2004 10:08 AM
Environment: Axis 9/23/2004

Description:
SOAPFaultException should be throw instead of AxisFault to be compliant with JAX-RPC 1.1.

Right now as a Axis client of a webservices implemented with Axis I receive an AxisFault instead of a SOAPFaultException.

The JAX-RPC 1.1 said:

>From 4.3.6:
A wsdl:fault is mapped to either a java.rmi.RemoteException (or its subclass),
service specific Java exception (described later in this section) or a javax.xml.rpc.
soap.SOAPFaultException. Refer to the section 6.5, "SOAP Fault" for more details on
the Java mapping of a WSDL fault based on the SOAP binding.
Refer to the section 14.3.6, "Mapping of Remote Exceptions" for the mapping between
the standard SOAP faults [5] and the java.rmi.RemoteException.
...
Service Specific Exception
A service specific Java exception (mapped from a wsdl:fault and the corresponding
wsdl:message) extends the class java.lang.Exception directly or indirectly.
The single message part in the wsdl:message (referenced from the wsdl:fault
element) may be either a type or an element. If the former, it can be either a
xsd:complexType or a simple XML type.
Each element inside the xsd:complexType is mapped to a getter method and a
parameter in the constructor of the Java exception. Mapping of these elements follows
the standard XML to Java type mapping. The name of the Java exception class is
mapped from the name attribute of the xsd:complexType for the single message part.
This naming scheme enables the WSDL to Java mapping to map an xsd:complexType
derivation hierarchy to the corresponding Java exception class hierarchy. The following
section illustrates an example. Refer to the section

>From 6.5:
A SOAP fault is mapped to either a javax.xml.rpc.soap.SOAPFaultException, a
service specific exception class or RemoteException.

- Without this bug I could change of webservices runtime compliant with JAX-RPC and keep the same Java code.
- AxisFault is not a service specific Exception and so should not derived from RemoteException.


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira