I am trying to use message style web service to send a plain xml document. The element
tag in the document has no namespace in front of it. And I got the following error
when invoking the service:
AxisFault
faultCode: {http://xml.apache.org/axis/}Call.invoke
faultSubcode:
faultString: Cannot invoke Call with null namespace URI for method null
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: AxisFault
faultCode: {http://xml.apache.org/axis/}Call.invoke
faultSubcode:
faultString: Cannot invoke Call with null namespace URI for method null
faultActor:
faultNode:
faultDetail:
Does it mean I have to add namespace for every element tag in order for it to become a
qualified SOAPBodyElement to be sent across the wire, or is there any work around?
This xml document I was trying to send is created by JAXB binding, and thus has no
namespace in front of each element tag.
Thanks.
-----Original Message-----
From: Carbone Cedric [mailto:[EMAIL PROTECTED]
Sent: Monday, February 09, 2004 11:42 AM
To: [EMAIL PROTECTED]
Subject: RE: JAX-RPC with attachments question
This an example i use for my message style Web service. The webService wait
a DOM and response with another DOM and a binary attachment. I have added
several comments in the code following.
Hope this helps,
C�dric Carbone
Neopost France
cca<at>brainsoft.fr
Server side (the Web service) :
-------------------------------
public Document SendMessage(Document demand) throws RemoteException,
SOAPException {
//make your stuff with the org.xml.w3c.Document demand
//build your DOM answer
org.xml.w3c.Document response = ...;
//Bind the attachments (here 2 javax.activation.Datahandler)
DataHandler dh1 = new DataHandler(new FileDataSource("c:/web.jpg"));
DataHandler dh2 = new DataHandler(new
FileDataSource("c:/TaskManager.txt"));
MessageContext messageContext = MessageContext.getCurrentContext();
org.apache.axis.Message responseMessage =
messageContext.getResponseMessage();
responseMessage.addAttachmentPart(new AttachmentPart(dh1));
responseMessage.addAttachmentPart(new AttachmentPart(dh2));
//return the DOM answer
return response;
}
Client Side :
-------------
Element payload = /*the DOM to send to the web service*/ ;
Service service = new Service();
Call call = (Call) service.createCall();
call.setTimeout(this.timeout);
call.setTargetEndpointAddress(this.endPoint);
SOAPBodyElement[] input = new SOAPBodyElement[1];
input[0] = new SOAPBodyElement(payload);
Vector elems = null;
//Send
Vector elems = (Vector) call.invoke(input);
// Response treatement
//Extract Attachment(s)
org.apache.axis.MessageContext messageContext =
call.getMessageContext();
org.apache.axis.Message returnedMessage =
messageContext.getResponseMessage();
System.out.println("Number of attachments is -> " +
returnedMessage.countAttachments());
Iterator iteAtta = returnedMessage.getAttachments();
DataHandler[] dhTab = new
DataHandler[returnedMessage.countAttachments()];
for (int i=0;iteAtta.hasNext();i++) {
AttachmentPart ap = (AttachmentPart) iteAtta.next();
dhTab[i] = ap.getDataHandler();
System.out.println("Filename=" +
dhTab[i].getName());
}
//Extract XML Payload
SOAPBodyElement SOAPelem = null;
SOAPelem = (SOAPBodyElement) elems.get(0);
Element elemResp = SOAPelem.getAsDOM();
The DOM response is Element elemResp.
The attachments received from the server are DataHandler[] dhTab[].
-----Message d'origine-----
De : Steve Pruitt [mailto:[EMAIL PROTECTED]
Envoy� : lundi 9 f�vrier 2004 17:00
� : [EMAIL PROTECTED]
Objet : JAX-RPC with attachments question
I have a service that needs to return xml and an attachment, the xml
contains some meta-information about the attachment. I am using the jax-rpc
api. My question is how to return both an xml document and an attachment.
I can see how to return one or the other, but not both.
Can someone point me to a good example, I can't find one.
Thanks,
-Steve Pruitt