Hi, I've just started reading this list and haven't come across this here (although I may have missed it). I have a service deployed which seems to be working correctly. I can access the service through a browser with:
http://isis.saic.hq.nasa.gov/sweiss/nmis/services/ViewService?method=programView&id=21 And I get back what looks like the correct XML in the browser. My problem occurs when I try to access the service from a Java client with: java ViewClient program 21 An org.xml.sax.SAXException exception is thrown when I call call.invoke() in the client, the message is: Invalid element in gov.nasa.hq.nmis.core.NmisItem - viewName The problem is that the class NmisItem has no member called viewName, although a different class (NmisView) does. The NmisView class has an array of type NmisWindow, which in turn has an array of NmisItem. My deploy.wsdd looks like this: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="ViewService" provider="java:RPC"> <parameter name="className" value="ViewService"/> <parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:NmisView" languageSpecificType="java:gov.nasa.hq.nmis.core.NmisView"/> <beanMapping qname="myNS:NmisWindow" languageSpecificType="java:gov.nasa.hq.nmis.core.NmisWindow"/> <beanMapping qname="myNS:NmisItem" languageSpecificType="java:gov.nasa.hq.nmis.core.NmisItem"/> </service> </deployment> The relevant chunk of client code is: --- Service service = new Service(); Call call = (Call)service.createCall(); QName qn = new QName( "urn:ViewService", "NmisView" ); // Bean serializer/deserializer for NmisView class BeanSerializerFactory bsfView = new BeanSerializerFactory( NmisView.class, qn ); BeanDeserializerFactory bdsfView = new BeanDeserializerFactory( NmisView.class, qn ); call.registerTypeMapping( NmisView.class, qn, bsfView, bdsfView ); // Bean serializer/deserializer for NmisWindow class BeanSerializerFactory bsfWindow = new BeanSerializerFactory( NmisWindow.class, qn ); BeanDeserializerFactory bdsfWindow = new BeanDeserializerFactory( NmisWindow.class, qn ); call.registerTypeMapping( NmisWindow.class, qn, bsfWindow, bdsfWindow ); // Bean serializer/deserializer for NmisItem class BeanSerializerFactory bsfItem = new BeanSerializerFactory( NmisItem.class, qn ); BeanDeserializerFactory bdsfItem = new BeanDeserializerFactory( NmisItem.class, qn ); call.registerTypeMapping( NmisItem.class, qn, bsfItem, bdsfItem ); call.setTargetEndpointAddress( new java.net.URL(endpointURL) ); call.setOperationName( new QName( "ViewService", type ) ); call.addParameter( "arg1", XMLType.XSD_INT, ParameterMode.IN); call.setReturnType( new QName( "myNS", "NmisView" ) ); Object ret = call.invoke( new Object[] { id } ); // << ERROR HERE --- I guess I'm a little unclear on the correct way to handle more than one bean type object. Can anyone point me in the right direction? Thanks in advance, -Steve
