I'd be grateful for any help people can provide:
I have a client which creates an array of SOAPBodyElements and uses this as the input parameter to a call on a service. The service method exposed requires an Vector an input.
The client appears to send a valid SOAP message (see below) but the Service reports that it has received a NULL input.
To enable the Service to get array of SOAPBodyElements should the Service method specify a different parameter? I tried rewriting the method so that it took an array of SOAPBodyElements but got the same error.
I set the Operation style property on the Service Call to be document. Is this correct?
I'm running the Service using the JBoss jboss-net axis.
As I said I'd appreciate any suggestions.
Regards,
Alison
Example code follows:
Client: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
String endpoint = "http://localhost:8070/jboss-net/services/SRW"; String methodName = "searchRetrieve";
Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName(methodName); call.setProperty(Call.OPERATION_STYLE_PROPERTY, "document");
SOAPBodyElement[] input = buildInput(); Vector elems = (Vector) call.invoke( input ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Service:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public Element[] searchRetrieve(Vector elems)
{
if(elems == null){
System.out.println("Service : NULL input");
}
else{
System.out.println("Service : Input not null");
}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SOAP Message
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:searchRetrieve xmlns:ns1="searchRetrieve">Request</ns1:searchRetrieve>
<query>http://........../rdf/oai_dc.rdf#subject = 'PHOTOGRAPH'</query>
<recordSchemaId>oai_dc</recordSchemaId>
</soapenv:Body>
</soapenv:Envelope>
NB what I want to happen is that the service gets a vector which contains the two elements from the message (ie query and recordSchemaId).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_________________________________________________________________
Use MSN Messenger to send music and pics to your friends http://www.msn.co.uk/messenger
