Dear List,
I am not sure if I mix up anything but for what I am trying to do the most
convenient way of building my Web Services client is by using the getPort()
function of Service in order to get a Proxy object.
This works fine until I need to get a complex type across the wire that
would need serialization. In that case I get an Exception on the client
side:
java.lang.reflect.UndeclaredThrowableException: AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: No serializer found for class
org.tigris.scarab.soap.om.SoapIssue in registry
[EMAIL PROTECTED]
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer
found for class org.tigris.scarab.soap.om.SoapIssue in
registry
[EMAIL PROTECTED]
	at
org.apache.axis.encoding.SerializationContextImpl.serializeActual(SerializationContextImpl.java:1285)
	at
org.apache.axis.encoding.SerializationContextImpl.serialize(SerializationContextImpl.java:799)
	at
org.apache.axis.encoding.SerializationContextImpl.outputMultiRefs(SerializationContextImpl.java:870)
	at
org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:181)
	at
org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:509)
	at
org.apache.axis.message.MessageElement.output(MessageElement.java:906)
	at
org.apache.axis.SOAPPart.writeTo(SOAPPart.java:285)
	at
org.apache.axis.SOAPPart.getAsString(SOAPPart.java:498)
	at
org.apache.axis.SOAPPart.getAsBytes(SOAPPart.java:390)
	at
org.apache.axis.Message.getContentType(Message.java:401)
	at
org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:341)
	at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:122)
	at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
	at
org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
	at
org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
	at
org.apache.axis.client.AxisClient.invoke(AxisClient.java:180)
	at
org.apache.axis.client.Call.invokeEngine(Call.java:2564)
	at
org.apache.axis.client.Call.invoke(Call.java:2553)
	at
org.apache.axis.client.Call.invoke(Call.java:2248)
	at
org.apache.axis.client.Call.invoke(Call.java:2171)
	at
org.apache.axis.client.Call.invoke(Call.java:1691)
	at
org.apache.axis.client.AxisClientProxy.invoke(AxisClientProxy.java:186)
	at
$Proxy0.createIssue(Unknown
Source)
	at
This is the code I use to create the proxy object:
String wsdlUrl = "http://...";
String nameSpaceUri = "xyz";
String serviceName = "FooServiceImplService";
String portName = "FooService";
ServiceFactory serviceFactory = ServiceFactory.newInstance();
Service afs = serviceFactory.createService(
new java.net.URL(wsdlUrl),
new QName(nameSpaceUri,serviceName));
afsIntf = (QueryService)afs.getPort(
new QName(nameSpaceUri, portName), QueryService.class);
I understand that I would need to let Axis know that it should use the
built-in BeanSerializer to serialize my comples type. Just where would I do
that.
All samples I found so far were based on the Call.invoke() method.
Torsten