I believe it is setProperty(), not set() on the options object -----Original Message----- From: Michele Amoretti [mailto:[EMAIL PROTECTED] Sent: Wednesday, April 18, 2007 1:24 PM To: axis-user@ws.apache.org Subject: using MTOM in a AXIOM-based WS
Hello, I am trying to create a new version of the "quickstartaxiom" sample, with the StockQuoteService providing a getPriceFile operation which returns a file using MTOM. In the MTOM tutorial unfortunately there are only parts of code (I cannot find a complete example in axis2-1.1.1 - the mtom sample is not based on AXIOM) thus I had to write the other parts, but since I have some problems in invoking the service I think I have made a mistake somewhere. My new ***AXIOMClient*** should set options.set(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); as explained in the tutorial, but the Options class has no "set" method and I cannot find the right one.. Btw, I added to the client the following method: public static OMElement getPriceFilePayload(String priceFileName) { OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace( "http://quickstart.samples/xsd", "tns"); OMElement method = fac.createOMElement("getPriceFile", omNs); OMElement value = fac.createOMElement("priceFileName", omNs); value.addChild(fac.createOMText(value, priceFileName)); method.addChild(value); return method; } and in the main() method of the client I added the following part, for getFilePrice invocation: OMElement getPriceFilePayload = getPriceFilePayload("prova.txt"); ....... result = sender.sendReceive(getPriceFilePayload); OMElement ele = result.getFirstElement(); OMText binaryNode = (OMText) ele.getFirstOMChild(); DataHandler actualDH = (DataHandler) binaryNode.getDataHandler(); File file = new File("prova.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file); actualDH.writeTo(fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); In the ***StockQuoteService*** the getPriceFile method is implemented as follows: public OMElement getPriceFile(OMElement element) throws XMLStreamException { element.build(); element.detach(); OMElement fileNameElement = element.getFirstElement(); String fileName = fileNameElement.getText(); System.out.println("fileName = " + fileName); OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://quickstart.samples/xsd", "ns"); OMElement fileElement = fac.createOMElement("file", omNs); FileDataSource dataSource = new FileDataSource(fileName); DataHandler dataHandler = new DataHandler(dataSource); // create an OMText node with the above DataHandler and set optimized to true OMText textData = fac.createOMText(dataHandler, true); fileElement.addChild(textData); OMElement method = fac.createOMElement("getPriceFileResponse", omNs); OMElement value = fac.createOMElement("priceFile", omNs); value.addChild(textData); method.addChild(value); return method; } Is this ok? Where should I store the "prova.txt" file in the server? In the same folder in which I put the *.aar file? I attach to this mail the wsdl of the service, and the configuration file. I am using Tomcat as servlet engine, and the logs are clean at the server side. At the client side the error message is: [java] org.apache.axiom.om.OMException: Referenced Attachment not found in the MIME Message. ContentID:1.urn:uuid:[EMAIL PROTECTED] [java] at org.apache.axiom.soap.impl.builder.MTOMStAXSOAPModelBuilder.getDataHandler(MTOMStAXSOAPModelBuilder.java:107) [java] at org.apache.axiom.om.impl.llom.OMTextImpl.getDataHandler(OMTextImpl.java:379) [java] at samples.quickstart.clients.AXIOMClient.main(AXIOMClient.java:105) [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [java] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [java] at java.lang.reflect.Method.invoke(Unknown Source) [java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:202) [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:134) [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:710) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178) [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84) [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [java] at org.apache.tools.ant.Task.perform(Task.java:364) [java] at org.apache.tools.ant.Target.execute(Target.java:341) [java] at org.apache.tools.ant.Target.performTasks(Target.java:369) [java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) [java] at org.apache.tools.ant.Project.executeTarget(Project.java:1185) [java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40) [java] at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32) [java] at org.apache.tools.ant.Project.executeTargets(Project.java:1068) [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423) [java] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137) Thank you very much! -- Michele Amoretti, Ph.D. Distributed Systems Group Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma http://www.ce.unipr.it/amoretti --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]