You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Mitch Gitman <mg...@usa.net> on 2002/11/18 18:16:47 UTC

want exceptions in Java interface

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 used 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 package and cannot be converted into an xml schema type.  An xml 
schema anyType will be used to define this class in the wsdl file.

Then I run WSDL2Java on the WSDL file just generated. It fails abruptly 
with the following exception:
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.

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>