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: [email protected]
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]
--
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]