Rick, Thank you for your good advice. I'm studying about DIME reffering follow information. But it was very difficult for me to understand. Because sample source was fragment, I could not implement all. Do you have a whole example?
----- Original Message ----- From: "Rick Kellogg" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, October 09, 2003 8:11 AM Subject: RE: Attachment program using DIME > Please refer to the following: > http://www.mail-archive.com/[EMAIL PROTECTED]/msg08732.html > http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages/DotNetInte > rop > > Rick > > > -----Original Message----- > From: Koichi Kokura [mailto:[EMAIL PROTECTED] > Sent: Wednesday, October 08, 2003 6:59 PM > To: [EMAIL PROTECTED] > Subject: Attachment program using DIME > > Hi Guys, > > I'm trying to implement file attachment program using DIME in Axis. > I have found sample web page(Japanese) about DIME and I tried to it, > http://www.atmarkit.co.jp/fdotnet/special/wse04/wse04_04.html > > But Follow message appeared, I can not success to implements. > Maybe Client program is wrong, But I can not find where is wrong. > Please help me. > > Koichi. > > [My Environment] > Tomcat4.1.27 > AXIS1.1 > WindowsXP > > [Error Message] > AxisFault > faultCode: Server.userException > faultSubcode: > faultString: No such operation 'PutData' > faultActor: > faultNode: > faultDetail: > {http://xml.apache.org/axis/}stackTrace: AxisFault > faultCode: Server.userException > faultSubcode: > faultString: No such operation &apos;PutData&apos; > faultActor: > faultNode: > faultDetail: > > No such operation 'PutData' > at > org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.ja > va:2 > 60) > at > org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.jav > a:16 > 9) > at > org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseriali > zati > onContextImpl.java:1015) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1573) > at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) > at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) > at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:534) > at org.apache.crimson.parser.Parser2.parse(Parser2.java:318) > at > org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442) > at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) > at > org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializatio > nCon > textImpl.java:242) > at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) > at org.apache.axis.Message.getSOAPEnvelope(Message.java:376) > at org.apache.axis.client.Call.invokeEngine(Call.java:2583) > at org.apache.axis.client.Call.invoke(Call.java:2553) > at org.apache.axis.client.Call.invoke(Call.java:2248) > at org.apache.axis.client.Call.invoke(Call.java:2171) > at org.apache.axis.client.Call.invoke(Call.java:1691) > at DIME.AxisDIMEClient.main(AxisDIMEClient.java:63) > > > No such operation 'PutData' > at > org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.ja > va:2 > 60) > at > org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.jav > a:16 > 9) > at > org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseriali > zati > onContextImpl.java:1015) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1573) > at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) > at org.apache.crimson.parser.Parser2.content(Parser2.java:1824) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1552) > at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:534) > at org.apache.crimson.parser.Parser2.parse(Parser2.java:318) > at > org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442) > at javax.xml.parsers.SAXParser.parse(SAXParser.java:345) > at > org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializatio > nCon > textImpl.java:242) > at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) > at org.apache.axis.Message.getSOAPEnvelope(Message.java:376) > at org.apache.axis.client.Call.invokeEngine(Call.java:2583) > at org.apache.axis.client.Call.invoke(Call.java:2553) > at org.apache.axis.client.Call.invoke(Call.java:2248) > at org.apache.axis.client.Call.invoke(Call.java:2171) > at org.apache.axis.client.Call.invoke(Call.java:1691) > at DIME.AxisDIMEClient.main(AxisDIMEClient.java:63) > Exception in thread "main" > > > [Server Side] > package DIME; > import java.io.InputStream; > import java.io.FileOutputStream; > import java.io.IOException; > import javax.xml.soap.SOAPException; > > import org.apache.axis.Message; > import org.apache.axis.MessageContext; > import org.apache.axis.attachments.Attachments; > import org.apache.axis.attachments.AttachmentPart; > > public class AxisDIME { > public String PutData(String originalName) throws SOAPException { > try { > MessageContext ctx = MessageContext.getCurrentContext(); > Message msg = ctx.getRequestMessage(); > AttachmentPart part > = (AttachmentPart)msg.getAttachments().next(); > > FileOutputStream fs = new FileOutputStream( > "C:\\TEMP\\" > + originalName); > part.getDataHandler().writeTo(fs); > fs.close(); > > return "OK!"; > } catch (IOException ioex) { > ioex.printStackTrace(); > throw new SOAPException("error", ioex); > } > } > } > > [Client Side > package DIME; > > import org.eclipse.swt.SWT; > import org.eclipse.swt.widgets.FileDialog; > import org.eclipse.swt.widgets.Shell; > > import org.apache.axis.client.Call; > import org.apache.axis.client.Service; > import org.apache.axis.utils.Options; > import org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory; > import org.apache.axis.encoding.ser.JAFDataHandlerDeserializerFactory; > import javax.activation.DataHandler; > import javax.activation.FileDataSource; > import javax.xml.rpc.ParameterMode; > import javax.xml.namespace.QName; > import java.net.URL; > > > public class AxisDIMEClient { > public static void main(String[] args) throws Exception { > FileDialog dlg = new FileDialog(new Shell(), SWT.OPEN); > String fileName = dlg.open(); > > if (fileName != null) { > DataHandler dhSource > = new DataHandler(new FileDataSource(fileName)); > Service service = new Service(); > > Call call = (Call)service.createCall(); > call.setTargetEndpointAddress( > new URL("http://localhost/axis/services/AxisDIME")); > call.setOperationStyle("wrapped"); > call.setOperationName( > new QName("http://localhost", "PutData")); > call.setReturnQName( > new QName("http://localhost", "PutDataResult")); > call.setReturnType( > new QName("http://www.w3.org/2001/XMLSchema", "string"), > String.class); > call.setUseSOAPAction(true); > call.setSOAPActionURI("http://localhost/axis/services/PutData"); > call.setEncodingStyle(null); > call.setScopedProperty( > org.apache.axis.client.Call.SEND_TYPE_ATTR, > Boolean.FALSE); > call.setScopedProperty( > org.apache.axis.AxisEngine.PROP_DOMULTIREFS, > Boolean.FALSE); > > QName att = new QName("urn:DIME.AxisDIME", "DataHandler"); > call.registerTypeMapping(dhSource.getClass(), > att, JAFDataHandlerSerializerFactory.class, > JAFDataHandlerDeserializerFactory.class); > call.addParameter( > new QName("urn:DIME.AxisDIME", "originalName"), > new QName("http://www.w3.org/2001/XMLSchema", "string"), > String.class, ParameterMode.IN); > call.addParameter("data", att, ParameterMode.IN); > call.setProperty(Call.ATTACHMENT_ENCAPSULATION_FORMAT, > Call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME); > > Object ret = call.invoke(new Object[] > { new java.io.File(fileName).getName(), dhSource } ); > } > } > } > > [WSDD] > <deployment xmlns="http://xml.apache.org/axis/wsdd/" > xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> > <service name="AxisDIME" provider="java:RPC"> > <parameter name="className" value="AxisDIME"/> > <parameter name="allowedMethods" value="*"/> > </service> > </deployment> > > > > > >