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]

Reply via email to