problem invoking axis service from PDA with CDC configuration
Hi all, I have a client running on a PDA with JVM 1.3, and CDC configuration. The client should invoke a Web Service deployed in Tomcat on a server. The problem is that when the client invokes the service, it always receive a null response, and (strange thing) the server does not seem to receive any request (it should log something on stdout but it doesn't). No exception is raised! If I run the client code on my laptop, the invocation is correct and the server logs correctly. Any idea? Maybe some .jar is lacking on the PDA? -- Michele Amoretti, Ph.D. Distributed Systems Group Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma http://www.ce.unipr.it/amoretti
problem when invoking axis2 service with axis1 client
at org.apache.axis.client.Call.invokeEngine (Call.java:2765) at org.apache.axis.client.Call.invoke(Call.java:2748) at org.apache.axis.client.Call.invoke(Call.java:2424) at org.apache.axis.client.Call.invoke(Call.java:2347) at org.apache.axis.client.Call.invoke (Call.java:1804) at nc3a.ListServices.main(ListServices.java:72) Why this? -- Michele Amoretti, Ph.D. Distributed Systems Group Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma http://www.ce.unipr.it/amoretti
problem when invoking axis2 service with axis1 client
ache.axis.client.Call.invoke(Call.java:2347) at org.apache.axis.client.Call.invoke(Call.java:1804) at nc3a.ListServices.main(ListServices.java:72) Why this? -- Michele Amoretti, Ph.D. Distributed Systems Group Dipartimento di Ingegneria dell'Informazione Università degli Studi di Parma http://www.ce.unipr.it/amoretti
Re: using MTOM in a AXIOM-based WS
Yes I read the guide but I need a more complete example. In my MTOM implementation I did not used a base64 encoded string.. I simply did: public OMElement getPriceFile(OMElement element) throws XMLStreamException { element.build(); element.detach(); OMElement fileNameElement = element.getFirstElement(); String fileName = "C:\\Programmi\\" + 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 response = fac.createOMElement("getPriceFileResponse", omNs); OMElement priceFile = fac.createOMElement("priceFile", omNs); priceFile.addChild(textData); response.addChild(priceFile); return response; } And it does work wheter I transfer a txt, a pdf, a jpg.. The WSDL currently defines: Is this bad? Thanks On 4/20/07, Thilina Gunarathne <[EMAIL PROTECTED]> wrote: > I have question about the WSDL for the MTOM-based service... For the > operation which has a parameter which is a binary file, which type > should I declare for the parameter? string? base64Binary.. You may refer to here[1] as a guide... Thanks, Thilina [1] http://ws.apache.org/axis2/1_1_1/mtom-guide.html#25 > > In my enhanced StockQuoteservice.wsdl (which has a getPriceFile method > which receives a file name as input and returns a priceFile as > outpput), I wrote: > > > http://www.w3.org/2001/XMLSchema"; > attributeFormDefault="qualified" elementFormDefault="qualified" > targetNamespace="http://quickstart.samples/xsd";> > > > > > > > > > > > > > > > > > Is this correct? > > Thank you very much > > > > > > [1]http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/samples/deprecated/mtomsample/ > > [2]ws.apache.org/commons/tcpmon > > -- > > Thilina Gunarathne - http://www.wso2.com - http://thilinag.blogspot.com > > > > - > > 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] > > -- Thilina Gunarathne - http://www.wso2.com - http://thilinag.blogspot.com - 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
Re: using MTOM in a AXIOM-based WS
Argh I am sorry, I made a mistake and I was transferring another file (of 24KB size) and saving it with the wrong name (and extension). Now I can say that mymtomwithaxiomexample works properly and could be inserted in the samples folder of axis2 distribution! I only have one doubt about the WSDL: For the operation which has a parameter which is a binary file, which type should I declare for the parameter? string? In my enhanced StockQuoteservice.wsdl (which has a getPriceFile method which receives a file name as input and returns a priceFile as outpput), I wrote: http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd";> Is this correct? Thanks Michele On 4/20/07, Michele Amoretti <[EMAIL PROTECTED]> wrote: 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 , > "4"); > > 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); > &g
Re: using MTOM in a AXIOM-based WS
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, "4"); 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",
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, "4"); 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.OMTextIm
Re: using MTOM in a AXIOM-based WS
Thank you, please read the comments below: On 4/19/07, Thilina Gunarathne <[EMAIL PROTECTED]> wrote: Hi, > 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) You can find a rather complicated deprecated MTOM Sample based on Axiom in here[1]. Ok I will study this. > options.set(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); As Valerie mentioned this should be setProperty... Ok But AFAIKS you are trying to return an attachment from a server.. For that you need to enable MTOM in the server side by adding the following parameter to your axis2.xml or to the service.xml.. true Yes I did it! > Is this ok? Where should I store the "prova.txt" file in the server? You can try giving an absolute path... Ok Please use the TCPMON[2] to capture your messages and check whether the attachment is attached as a MIME part. Thanks, Thilina I have question about the WSDL for the MTOM-based service... For the operation which has a parameter which is a binary file, which type should I declare for the parameter? string? In my enhanced StockQuoteservice.wsdl (which has a getPriceFile method which receives a file name as input and returns a priceFile as outpput), I wrote: http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd";> Is this correct? Thank you very much [1]http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/samples/deprecated/mtomsample/ [2]ws.apache.org/commons/tcpmon -- Thilina Gunarathne - http://www.wso2.com - http://thilinag.blogspot.com - 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]
using MTOM in a AXIOM-based WS
he.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 http://quickstart.samples/"; xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"; xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"; xmlns:ns="http://quickstart.samples/xsd"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; targetNamespace="http://quickstart.samples/";> http://www.w3.org/2001/XMLSchema"; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd";> http://schemas.xmlsoap.org/soap/http"; style="document" /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://schemas.xmlsoap.org/soap/http"; style="document" /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://quickstart.samples/"; /> http://localhost:8080/axis2/services/StockQuoteService"; /> http://localhost:8080/axis2/services/StockQuoteService"; /> Stock Quote Service samples.quickstart.service.axiom.StockQuoteService - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]