J'utilise axis2 pour créer un service Web de base qui obtiendra le nom du fichier en paramètre et produira un paquet SOAP de réponse qui aura le fichier attaché avec le SOAP.Les pièces jointes Axis2 disparaissent dans la réponse
Voici la façon dont je suis en train de créer le code de service (son simple et inspiré par Axis2 exemple de code)
public String getFile(String name) throws IOException
{
MessageContext msgCtx = MessageContext.getCurrentMessageContext();
File file = new File (name);
System.out.println("File = " + name);
System.out.println("File exists = " + file.exists());
FileDataSource fileDataSource = new FileDataSource(file);
System.out.println("fileDataSource = " + fileDataSource);
DataHandler dataHandler = new DataHandler(fileDataSource);
System.out.println("DataHandler = " + dataHandler);
String attachmentID = msgCtx.addAttachment(dataHandler);
System.out.println("attachment ID = " + attachmentID);
return attachmentID;
}
maintenant Le code côté client -
MessageContext response = mepClient
.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
SOAPBody body = response.getEnvelope().getBody();
OMElement element = body.getFirstElement().getFirstChildWithName(
new QName("http://service.soapwithattachments.sample","return"));
String attachementId = element.getText();
System.out.println("attachment id is " + attachementId);
Attachments attachment = response.getAttachmentMap();
DataHandler dataHandler = attachment.getDataHandler(attachementId);
Le problème est que dataHandler est toujours nul. Bien que je pense du côté du serveur, le fichier a été lu et attaché avec le paquet SOAP. Est-ce que je fais quelque chose de mal ? J'ai écrit <parameter name="enableSwA" locked="false">true</parameter>
dans le fichier axis2.xml.