No, I tried this but the problem persists: only 24KB of the file are transferred from the service to the client. :(
Michele On 4/19/07, Masin, Valerie <[EMAIL PROTECTED]> wrote:
A colleague had this problem (when using Sun's webserver) and fixed it by setting this on the client. stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Constants.VALUE_FALSE); I don't know if there is a way to say the same thing from the server, or if it is even necessary. The reason had something to do with whether the length was being passed. Sorry I am vague but this didn't happen directly to me so I don't know the exact particulars. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Michele Amoretti Sent: Thursday, April 19, 2007 8:50 AM To: axis-user@ws.apache.org Subject: Re: using MTOM in a AXIOM-based WS Ok, it is setProperty() Now I managed to transfer a file from the service to the client, but if I try to transfer a file > 23963 Bytes, the file is cut. Should I make some adjustments in axis2.xml, or in Tomcat configuration? I tried to enable caching both at the server side and at the client side, as explained in the tutorial: options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE); options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "C://axisTemp"); options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "40000"); but with these lines, the client blocks immediately when trying to invoke any operation of the service (not only the one involving the file transfer..). Any idea? Thanks On 4/18/07, Masin, Valerie <[EMAIL PROTECTED]> wrote: > 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(Internal > AntRunner.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] > > -- 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] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Michele Amoretti, Ph.D. Distributed Systems Group Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma http://www.ce.unipr.it/amoretti