You will send a attachment - i do it like this:
**********************
Server
**********************
public java.lang.String getFileAsAttachment(java.lang.String
XMLRequest) throws java.rmi.RemoteException {
String fileName = "C:\\WebService\\webapps\\xxx\\arrow.gif";
String fileName1 =
"C:\\WebService\\webapps\\xxx\\folder.gif";
//explicitly set format to DIME, default is MIME
Message rspmsg =
AxisEngine.getCurrentMessageContext().getResponseMessage();
rspmsg.getAttachmentsImpl().setSendType(org.apache.axis.attachments.Attachme
nts.SEND_TYPE_DIME);
DataHandler dh = new DataHandler(new
FileDataSource(fileName));
if (dh == null ) System.err.println("dhSource is null");
DataHandler dh1 = new DataHandler(new
FileDataSource(fileName1));
if (dh1 == null ) System.err.println("dhSource is null");
AttachmentPart ap = new AttachmentPart(dh);
AttachmentPart ap1 = new AttachmentPart(dh1);
ap.setContentId("Filename1");
ap1.setContentId("Filename2");
MessageContext context=MessageContext.getCurrentContext();
Message responseMessage=context.getResponseMessage();
responseMessage.addAttachmentPart(ap);
responseMessage.addAttachmentPart(ap1);
return XMLRequest;
}
******************
Client
********************
String doc = soapService.getFileAsAttachment(xml);
Object[] attachments = soapService.getAttachments();
AttachmentPart attachPart = (AttachmentPart)
attachments[0];
AttachmentPart attachPart1 = (AttachmentPart)
attachments[1];
DataHandler arrow = attachPart.getDataHandler();
DataHandler folder = attachPart1.getDataHandler();
File myFile1 = new File("C:\\temp\\" +
attachPart.getContentId() + ".gif");
FileOutputStream myFOS1 = new
FileOutputStream(myFile1);
arrow.writeTo(myFOS1);
File myFile2 = new File("C:\\temp\\" +
attachPart1.getContentId() + ".gif");
FileOutputStream myFOS2 = new
FileOutputStream(myFile2);
folder.writeTo(myFOS2);
System.out.println(attachPart1.getContentId());
Tomi
-----Urspr�ngliche Nachricht-----
Von: Tony Thompson [mailto:[EMAIL PROTECTED]
Gesendet: Donnerstag, 1. April 2004 15:38
An: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Betreff: Re: AW: AW: MessageContext.getCurrentContext() returns null
OK, forgive my stupidity, but I am trying to send an attachment back
from the server. I did say that I was trying to send the attachment
back in the response in my original message but, I probably should have
been clearer. That would also explain why I was confused about your
orginal response.
Anyway, I have attempted to model my service after the attachments
example included in the Axis distribution. On the server side, I get
null for the message context (which seems impossible to me). Any
ideas?
Thanks.
Tony
>>> [EMAIL PROTECTED] 04/01/04 07:45AM >>>
oService is your Service or your locator (both are Service or extend
Service!)
--> read my text and think about! ;)
Forget the MessageContext - you can t make
MessageContext context = MessageContext.get....
if you use the stub and the skeleton!
I get also null from MessageContext
-----Urspr�ngliche Nachricht-----
Von: Tony Thompson [mailto:[EMAIL PROTECTED]
Gesendet: Donnerstag, 1. April 2004 14:38
An: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Betreff: Re: AW: MessageContext.getCurrentContext() returns null
In your examples, what is "soapService" and "oService"?
Is it possible that my service is not deployed correctly and that is
why the current message context is null?
Thanks.
Tony
>>> [EMAIL PROTECTED] 04/01/04 02:37AM >>>
You can handle your attachment like this - without using the
MessageContext
Object[] attachments = soapService.getAttachments();
AttachmentPart attachPart = (AttachmentPart) attachments[0];
AttachmentPart attachPart1 = (AttachmentPart) attachments[1];
DataHandler arrow = attachPart.getDataHandler();
DataHandler folder = attachPart1.getDataHandler();
File myFile1 = new File("C:\\temp\\" + attachPart.getContentId() +
".gif");
FileOutputStream myFOS1 = new FileOutputStream(myFile1);
arrow.writeTo(myFOS1);
....
Another solution can be - take your Service or Locator (also Service)
and get the AxisEngine --> then make
engine.getCurrentMessageContext()!?
AxisEngine engine = oService.getEngine();
engine.getCurrentMessageContext();
Thomas
-----Urspr�ngliche Nachricht-----
Von: Tony Thompson [mailto:[EMAIL PROTECTED]
Gesendet: Mittwoch, 31. M�rz 2004 15:51
An: [EMAIL PROTECTED]
Betreff: MessageContext.getCurrentContext() returns null
When I invoke MessageContext.getCurrentContext(), it returns null.
Can
anyone explain why that might happen and how I can fix it? I am
trying
to add a DIME attachment to a response and it is hard to do without a
MessageContext.
Thanks.
Tony