Thanks for the explanation, Anne. Does Axis 1.2 (in a SOAP 1.1 context) use the SOAP-ENV namespace (i.e. http://schemas.xmlsoap.org/soap/envelope/) for all faultcode values? A message in a recent thread here seemed to indicate that. Axis 1.1 uses SOAP-ENV for MustUnderstand and VersionMismatch, but uses http://xml.apache.org/axis/ for Server.*. A previous thread ("Verisign EPC Sandbox" by Yeo Wee Tat) showed a faultcode value of SOAP-ENV:Server.UserException. This indicates an extension to the SOAP-ENV namespace. I presume that, assuming Axis 1.2 extended this namespace, there is no XSD available that specifies the extension either?
Also, any idea if my description of the <detail> element below is correct? That seems to be what the code does, but the comment in that section of AxisFault is confusing to me and seems to imply something different than how I'm reading the code. Here's the method in AxisFault that has the comment referenced above. I can't identify the referent of the pronoun "that" in the phrase "We now serialize exception data and the other side uses *that* QName to figure out what exception to use." Also don't understand what it means to say the Axis-specific hack is obsolete, when it's still reflected in the code. -Mark Leone private void initFromException(Exception target) { //look for old stack trace Element oldStackTrace=lookupFaultDetail(Constants.QNAME_FAULTDETAIL_STACKTRACE); if(oldStackTrace!=null) { // todo: Should we replace it or just let it be? return; } // Set the exception message (if any) as the fault string setFaultString( target.toString() ); // Put the exception class into the AXIS SPECIFIC HACK // "exceptionName" element in the details. This allows // us to get back a correct Java Exception class on the other side // (assuming they have it available). // NOTE: This hack is obsolete! We now serialize exception data // and the other side uses *that* QName to figure out what exception // to use, because the class name may be completly different on the // client. if ((target instanceof AxisFault) && (target.getClass() != AxisFault.class)) { addFaultDetail(Constants.QNAME_FAULTDETAIL_EXCEPTIONNAME, target.getClass().getName()); } //add stack trace addFaultDetail(Constants.QNAME_FAULTDETAIL_STACKTRACE, JavaUtils.stackToString(target)); } -----Original Message----- From: Anne Thomas Manes [mailto:[EMAIL PROTECTED] Sent: Sunday, October 17, 2004 4:13 AM To: [EMAIL PROTECTED] Subject: RE: Looking for XSD for http://xml.apache.org/axis/ Axis 1.1 returns axis:Server.userException where it should return soapenv:Client. Because these fault codes are defined in a separate namespace, technically, this isn't a bug. But a developer should have the choice to return the standard soapenv fault codes. This issue has been fixed in Axis 1.2. I'm not aware of a schema for http://xml.apache.org/axis/, but perhaps someone else is... Anne -----Original Message----- From: Leone, Mark (Mission Systems) [mailto:[EMAIL PROTECTED] Sent: Saturday, October 16, 2004 2:09 PM To: [EMAIL PROTECTED] Subject: Looking for XSD for http://xml.apache.org/axis/ I'm working on a project that is building a web services gateway that invokes services on several independently-developed data brokers. One of those brokers is already implemented, using Axis 1.1 with SOAP 1.1 RPC style, while our gateway is planning on Using WebLogic. The developers of the Axis service that we'll be invoking provided us some sample SOAP messages, including a Fault message. This message has the faultcode as <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</faultcode> In order to validate the Fault message when received at my gateway, I need an XSD for the namespace "http://xml.apache.org/axis/". I searched all over the web as well as through all the Axis documentation on my computer, and I can't find such an XSD. Are consumers of Axis services expected to reverse-engineer the XSD from the Axis source code? Looking through the Axis source code (org.apache.axis.AxisFault, org.apache.axis.Constants), it seems that the QName content of <faultcode> (in a SOAP 1.1 context) can have the following values for its local part: Server.generalException Server.userException Server.NoService MustUnderstand VersionMismatch Curiously, I don't see the value "Client", which the SOAP spec says the service must return if the client submits an invalid request. I also conclude from the source code that the fault detail element will include: <detail> <!-- the <exceptionName> element is only present if the exception thrown was a subclass of AxisFault --> <exceptionName>exception name here</exceptionName> <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">string dump of the stack trace </stackTrace> </detail> Could someone please either a) Point me to an XSD for namespace "http://xml.apache.org/axis/" or b) Confirm that the above values for <faultcode> and <detail> properly describe what I need to specify in the XSD if I create it myself. Also, does Axis not use the <faultcode> value "Client"? -Mark Leone