I have a minimal Java interface that I want to expose as a web service.
Most of the methods in this interface throw a custom exception derived from
Exception. Ultimately, through my RPC web service, I want these exceptions
to translate into SOAP faults. My understanding is that I don't have to be
introducing AxisFault or SOAPFault objects into this interface.
When I run Java2WSDL, I get the following warning messages:
Nov 16, 2002 5:55:08 PM org.apache.axis.wsdl.fromJava.Types isBeanCompatible
WARNING: The class java.lang.Throwable is defined in a java or javax
package and
cannot be converted into an xml schema type. An xml schema anyType will
be use
d to define this class in the wsdl file.
Nov 16, 2002 5:55:08 PM org.apache.axis.wsdl.fromJava.Types isBeanCompatible
WARNING: The class java.lang.StackTraceElement is defined in a java or
javax pac
kage and cannot be converted into an xml schema type. An xml schema
anyType wil
l be used to define this class in the wsdl file.
Here are the suspicious passages in the generated WSDL:
<complexContent>
____<extension base="tns3:KeyedException">
________<sequence>
____________<element name="cause" nillable="true" type="xsd:anyType" />
____________<element name="localizedMessage" nillable="true"
type="xsd:string" />
____________<element name="stackTrace" nillable="true"
type="impl:ArrayOf_tns4_StackTraceElement" />
________</sequence>
____</extension>
</complexContent>
...
<complexType name="ArrayOf_tns4_StackTraceElement">
____<complexContent>
________<restriction base="soapenc:Array">
____________<attribute ref="soapenc:arrayType" wsdl:arrayType="null[]" />
________</restriction>
____</complexContent>
</complexType>
Then running WSDL2Java using the WSDL file just generated fails with the
following exception rather abruptly:
java.io.IOException: Type {http://www.w3.org/2001/XMLSchema}null is
referenced but not defined.
at
org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable.java:484)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:384)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:371)
at
org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:358)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:243)
at java.lang.Thread.run(Thread.java:536)
It appears that an array of StackTraceElements, as inherited from
Exception's interface, winds up as an array of nulls.
What should I be doing differently? Note: I'm using the release Axis 1.0.
Thanks.
