An additional piece of information...
The server returning the soap fault has a faultcode of generalException.
I double checked the deploy.wsdd to make sure my fault class has a mapping
registered. It does.
So maybe this is the intended behavior for Axis, this is?
-c
On Mon, Feb 09, 2004 at 08:24:40PM -0500, Christopher Blunck wrote:
> All-
>
> I have a somewhat basic question regarding custom / user defined faults in
> Axis. First, some background:
>
> I define my services via WSDL, and translate them into Java classes. In my
> WSDL I define a fault, and what is generated is a class that extends AxisFault.
>
>
> In my server side implementation, I subclass the BindingSkeleton, and implement
> the operations I defined in my WSDL. Because I included fault information,
> Axis correctly defined the operations with "throws" clauses for my exceptions.
>
>
> In one of my unit tests, I tickle the server side operation in such a way that
> should generate a user defined fault. In my client side code, I'm working
> through the details of how I detect the user defined fault. That's where my
> questions are thrown from.
>
> I'm not sure of the proper terminology for my invocation style, but I'm using
> Axis via the Call interface, and invoking invoke(Object[]). I'm catching an
> AxisFault when I tickle the interface intending to generate the exception.
> My code is entering the catch block for AxisFault correctly.
>
> My first question is:
> In this invocation style, are the string and reason supposed to be blank?
>
> If I print out my AxisFault (e.printStackTrace(System.out)), what I see is:
> AxisFault
> faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
> faultSubcode:
> faultString:
> faultActor:
> faultNode:
> faultDetail:
> {}fault: null
> {http://xml.apache.org/axis/}exceptionName:
> gov.nasa.echo.adapter.order.types.faults.DisconnectedEndpointFault
>
>
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> ..... and so on
>
>
>
> Shouldn't the faultCode returned be a Server.userException?
> Is this a problem with the type of my fault (DisconnectedEndpointFault) not
> being properly registered with Axis? I have registered my mapping in the
> TypeMapping instance I use:
> String prefix = "http://order.adapter.echo.nasa.gov";
> qn = new QName(prefix + "/types/faults", "DisconnectedEndpointFault");
> map.register(DisconnectedEndpointFault.class, qn,
> new BeanSerializerFactory(DisconnectedEndpointFault.class, qn),
> new BeanDeserializerFactory(DisconnectedEndpointFault.class, qn));
>
>
>
> I can work around the problem by looking in the 2nd element of the fault
> details Element[], but would like clarification as to if I'm doing something
> stupid.
>
> If the case is that I'm not registering my types properly, and if I registered
> them correctly then faultString would be the fully qualified name of my
> fault class, it would save me a lot of time.
>
>
> Any help is greatly appreciated,
> -c
>
> --
> 20:15:00 up 70 days, 9:59, 15 users, load average: 0.17, 0.29, 0.23
--
20:25:00 up 70 days, 10:09, 15 users, load average: 0.11, 0.09, 0.13