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