【发布时间】:2010-03-10 23:18:39
【问题描述】:
我正在使用axis2提供一个基本的Web服务,它将文件名作为参数并生成一个响应SOAP数据包,该数据包将与SOAP一起附加文件。
这是我创建服务代码的方式(其简单且受 Axis2 示例代码的启发)
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;
}
现在是客户端代码 -
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);
问题是 dataHandler 始终为空。虽然我认为是在服务器端,但该文件与 SOAP 数据包一起被读取并附加。我是不是做错了什么?
编辑:
我已将<parameter name="enableSwA" locked="false">true</parameter> 放入axis2.xml 文件中。
【问题讨论】:
标签: java web-services axis2