Please open a bug report to track the problem/patches etc.

-- dims

On Tue, 18 May 2004 12:04:28 +0200, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> 
> I would like to add to this thread that I had a similar problem with custome
> exceptions.
> 
> The java2wsdl utility unfortuantely creates the SAME QName for the <fault>
> elements in the WSDL for a particular operation. So if you have several custome
> Exceptions thrown by your method the map kept by the generated classes fails to
> deserialise any custom exception but the first.
> 
> These QNames are derived from the namespace attribute of the fault element
> withing the WSDL binding element. If you manually change each of these to be
> urn:{ExceptionName} before using wsdl2java the auto generated code will
> deserialise the correct Exceptions.
> 
> P.S. RemoteException does NOT have to be listed in the fault elements of the
> operations
> 
> Regards
> 
> Steve
> 
> 
> 
> Quoting [EMAIL PROTECTED]:
> 
> > By throwing following Exception:
> >
> >   package de.eis.skoda.gwo.ws.state.validierung;
> >   import java.rmi.RemoteException;
> >   public class GWException extends RemoteException {
> >     private String message = null;
> >     private FehlerBean[] fehlerBeans = new FehlerBean[0];
> >
> >     public GWException() { super(); }
> >
> >     public GWException(String message) { this.message = message; }
> >
> >     public String getMessage() { return message; }
> >
> >     public void setMessage(String message) { this.message = message; }
> >
> >     public FehlerBean[] getFehlerBeans() { return fehlerBeans; }
> >
> >     public void setFehlerBeans(FehlerBean[] fehlerBeans) { this.fehlerBeans
> > =
> > fehlerBeans; }
> >   }
> >
> >
> >   package de.eis.skoda.gwo.ws.state.validierung;
> >   import java.io.Serializable;
> >   public class FehlerBean implements Serializable {
> >     private String gerkz = null;
> >     private Integer gercod = null;
> >     private String gertxt = null;
> >
> >     public FehlerBean() {
> >     }
> >
> >     public FehlerBean(String gerkz, Integer gercod, String gertxt) {
> >       this.gerkz = gerkz;
> >       this.gercod = gercod;
> >       this.gertxt = gertxt;
> >     }
> >
> >     public String getGerkz() { return gerkz; }
> >
> >     public void setGerkz(String gerkz) { this.gerkz = gerkz; }
> >
> >     public Integer getGercod() { return gercod; }
> >
> >     public void setGercod(Integer gercod) { this.gercod = gercod; }
> >
> >     public String getGertxt() { return gertxt; }
> >
> >     public void setGertxt(String gertxt) { this.gertxt = gertxt; }
> >   }
> >
> >
> > Client receives the following XML Stream:
> >
> >   <?xml version="1.0" encoding="UTF-8"?>
> >   <soapenv:Envelope
> > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >     <soapenv:Body>
> >       <soapenv:Fault>
> >         <faultcode>soapenv:Server.userException</faultcode>
> >         <faultstring>de.eis.test.ws.state.validierung.GWException: Die
> > Antragsdaten sind fehlerhaft</faultstring>
> >         <detail>
> >           <de.eis.test.ws.state.validierung.GWException
> > xsi:type="ns1:GWException"
> > xmlns:ns1="http://validierung.state.ws.test.eis.de";>
> >             <fehlerBeans xsi:type="soapenc:Array"
> > soapenc:arrayType="ns1:FehlerBean[1]"
> > xmlns:ns2="http://action.ws.test.eis.de";
> > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
> >               <item>
> >                 <gerkz xsi:type="xsd:string">661</gerkz>
> >                 <gercod xsi:type="xsd:int">661</gercod>
> >                 <gertxt xsi:type="xsd:string">Kilometerstand muss 1 bis 4
> > stellige Zahl sein</gertxt>
> >               </item>
> >             </fehlerBeans>
> >             <message xsi:type="xsd:string">Die Antragsdaten sind
> > fehlerhaft</message>
> >           </de.eis.skoda.gwo.ws.state.validierung.GWException>
> >         </detail>
> >       </soapenv:Fault>
> >     </soapenv:Body>
> >   </soapenv:Envelope>
> >
> >
> >
> > -----Urspr�ngliche Nachricht-----
> > Von: Tom Jordahl [mailto:[EMAIL PROTECTED]
> > Gesendet: Freitag, 2. April 2004 00:10
> > An: '[EMAIL PROTECTED]'
> > Betreff: RE: Exception Handling - possible solution
> >
> >
> >
> > You are enhancing the Axis specific Hack that send the class name of the
> > exception over the wire.  I invented this (and it was bad) a long time ago.
> >
> >
> > Axis now uses the <details> element in the fault to locate the correct
> > Exception class.  A table of QNames to Exception class names is kept and
> > each
> > child element of <details> is looked up in this table until we find a match
> > (or don't, then we throw an AxisFault).
> >
> > This functions correctly, see java/test/wsdl/faults for some test cases that
> > work.
> >
> > --
> > Tom Jordahl
> > Macromedia Server Development
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, April 01, 2004 3:24 PM
> > To: [EMAIL PROTECTED]
> > Subject: AW: Exception Handling - possible solution
> >
> > Hello,
> >
> > I looked through the sourcecode of Axis 1.1. By a few small changes can xml
> > stream deserialized correctly. In the attachment of this email lie 3
> > classes,
> > which I changed. The changes, which I made are commented und can be found by
> > searching for "007". Can someone look through the changes and say whether it
> > ok is or perhaps You be able to use the changes in the next Version.
> >
> > Excuse me for my englich.
> >
> > Many Thanks,
> > Alexander Becker
> >
> >
> >
> > -----Urspr�ngliche Nachricht-----
> > Von: Steve Loughran [mailto:[EMAIL PROTECTED]
> > Gesendet: Dienstag, 23. M�rz 2004 11:08
> > An: [EMAIL PROTECTED]
> > Betreff: Re: Exception Handling
> >
> >
> > [EMAIL PROTECTED] wrote:
> > > Hello,
> > >
> > > I have "de.eis.ws.axis.WSException extends RemoteException" class on
> > > server side. Via Java2WSDL & WSDL2Java was generated
> > > "de.eis.ws.axis.WSException extends AxisFault" for a client side.
> > > When the Exception is triggered on the server side, a client receives the
> > > following XML stream:
> > >
> > >   <?xml version="1.0" encoding="UTF-8"?>
> > >   <soapenv:Envelope
> > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > >
> > >     xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> > >    <soapenv:Body>
> > >     <soapenv:Fault>
> > >      <faultcode>soapenv:Server.userException</faultcode>
> > >      <faultstring>de.eis.ws.axis.WSException</faultstring>
> > >      <detail>
> > >       <de.eis.ws.axis.WSException xsi:type="ns1:WSException"
> > > xmlns:ns1="http://axis.ws.eis.de";>
> > >        <message xsi:type="xsd:string" xsi:nil="true"/>
> > >       </de.eis.ws.axis.WSException>
> > >      </detail>
> > >     </soapenv:Fault>
> > >    </soapenv:Body>
> > >   </soapenv:Envelope>
> > >
> > > Axis deserialize this Stream to an AxisFault.
> > > Is there a way to deserialize this Stream to
> > > "de.eis.ws.axis.WSException extends AxisFault" class, which was
> > > generated via WSDL2Java?
> >
> > In theory, Axis should follow the exception marshalling behaviour of
> > JAX-RPC. If this is not happening, then we have a bug.
> >
> >
> >
> > -----Urspr�ngliche Nachricht-----
> > Von: James Turner [mailto:[EMAIL PROTECTED]
> > Gesendet: Dienstag, 18. Mai 2004 02:59
> > An: [EMAIL PROTECTED]
> > Betreff: How to craft a custom Fault detail message?
> >
> >
> > Hi there,
> >    I'm trying to create custom detail messages to indicate the nature of
> > request faults, so that they can appropriately be handled on the client
> > side.
> > I've been told by Those Who Know that I shouldn't use anything beyond Client
> > or Server in the faultcode to be compatible with the Basic Profile, so I
> > need
> > to pass details in.. well, the details.
> >
> >    Everything is fine, except that I was also told to use a custom namespace
> > for the tags in the detail, to avoid collisions.  Fair enough, and here's my
> > utility method to create the AxisFault:
> >
> >     static final String NS = "http://benefit-systems.com/faults/exceptions";;
> >     static final String XMLNS_NS = "http://www.w3.org/2000/xmlns/";;
> >     private AxisFault generateAxisFault(String type, String desc, String
> > errorName, String errorDetail) {
> >         String where = "http://secure.benefit-systems.com";;
> >             DocumentBuilderFactory dbf =
> > DocumentBuilderFactory.newInstance();
> >         DocumentBuilder db = null;
> >         try {
> >             db = dbf.newDocumentBuilder();
> >         } catch (ParserConfigurationException e) {
> >             e.printStackTrace();
> >         }
> >         Document doc = db.newDocument();
> >         Element error = doc.createElementNS(NS, "e:error");
> >         doc.appendChild(error);
> >         error.setAttributeNS(XMLNS_NS, "xmlns:e", NS);
> >         Element errorcode = doc.createElementNS(NS, "e:errorcode");
> >         error.appendChild(errorcode);
> >         errorcode.appendChild(doc.createTextNode(errorName));
> >         Element errordetail = doc.createElementNS(NS, "e:errordetail");
> >         error.appendChild(errordetail);
> >         errordetail.appendChild(doc.createTextNode(errorDetail));
> >         Element[] detail = {error};
> >         AxisFault fault = new AxisFault(type, desc, where, detail);
> >         return fault;
> >     }
> >
> > Unfortunately, in spite of all the messing around with namespaces, what
> > comes
> > out is:
> >
> > <soapenv:Envelope>
> >   <soapenv:Body>
> >     <soapenv:Fault>
> >       <faultcode>ns1:Client</faultcode>
> >       <faultstring>Bad Username or Password</faultstring>
> >       <faultactor>http://secure.benefit-systems.com</faultactor>
> >       <detail>
> >         <e:error>
> >           <e:errorcode>Authentication</e:errorcode>
> >           <e:errordetail/>
> >         </e:error>
> >       </detail>
> >      </soapenv:Fault>
> >    </soapenv:Body>
> > </soapenv:Envelope>
> >
> > One will notice the conspicuous lack of an xmlns field.  Searching on the
> > web, it seems like everybody has the same problem with Xerces in general.
> > Any
> > ideas?  I suppose I could generate the wrapping error tag using non-XML
> > methods to force the xmlns line, but that's gross.
> >
> >
> 
>

Reply via email to