ArrayList in Webservices
Hi, The following is the class which I have exposed as a webservice. public class Test { public ArrayList getArrayList(){ArrayList list = new ArrayList();TestObject obj = new TestObject();obj.setName(First);list.add(obj);TestObject obj1 = new TestObject(); obj1.setName(Second);list.add(obj1);return list;}public HashMap getMap(){HashMap map = new HashMap();map.put(First,First);map.put(Second,First); return map;}} Now when I access the method getArrayList in the client side it is getting resolved as an Object array instead of an ArrayList but when I access the getMap() it is getting resolved correctly. Can you let me know the reason for the above? Is there any configuration changes that have to be done for the above to work. 1.2beta3 1009 August 17 2004. service name=Test provider=java:RPC parameter name=className value=com.db.cc.Test/ parameter name=allowedMethods value=*/ parameter name=load-on-startup value=true/ parameter name=activateOnStartup value=true/ beanMapping languageSpecificType=java: com.db.cc.object.TestObject qname=ns4:TestObject xmlns:ns4=urn:object.cc.db.com/ /service Thanks and Regards, Nayana
Re: Can't find module.xml
Have you shut down your app/web server before trying to delete it? If so then it is likely there is a java process running with a lock on it, that was the case with me! Aaron Evans wrote: Bryan Allen Bryan.Allen at sas.com writes: Look in: %UserProfile%. This is where my .axis2 folder was located when I had this problem. If your username is gikxh06, that should resolve to something like C:\Documents and Settings\gikxh06 on XP. Bryan Allen SAS Institute Windows won't let me delete it! I get access denied no matter what! Any suggestions? -- Brian Shields BSc. MSc., PhD Candidate, Department of Information Technology, National University of Ireland, Galway, Ireland.
long lines
Hi, I'm using axis 1.3 for java an have problem with that it generates the soap request as one very long line. This is especially a problem since I'm sending MMS content in a byte array which can be up to 300k. I would not care about it, but the web service fails to handle it. I there a way to override this behavior? Maybe, it would be enough if the base64 encoded part would be broken into lines. Unfortunately there is no chance that they will modify their system to accept such long lines. Mudi
Upload service in Axis2 administration
Hi, I got the following expception when I tried the Upload Service link in the administration for Axis2. The environment is Tomcat 5.5.15 and jdk1.5.0_06. Does anyone know what the problem might be? regards, Magnus org.apache.jasper.JasperException: Unable to compile class for JSP Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a package An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error: FileUpload cannot be resolved An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error: DiskFileUpload cannot be resolved to a type An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error: DiskFileUpload cannot be resolved to a type An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error: FileItem cannot be resolved to a type An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error: FileItem cannot be resolved to a type org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause org.apache.jasper.JasperException: Unable to compile class for JSP Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a package An error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error:
AXIS-790 workaround - bad envelope tag
I tried using the workaround attached to https://issues.apache.org/jira/browse/AXIS-790 to allow proxy authentication while operating under Java Web Start but the communication fails with a Bad envelope tag error
Problems with wsdl2code
Hi all I have been using wsdl2code from axis2 version 0.94, and I have got some strange results. I am working on windows XP professional, with SUN jdk 1.5, and I have set AXIS_HOME environment variable to the directory where axis2 was unzipped. I have use the next command: Wsdl2code uri C:/wsdlFolder/Pegs.wsdl o C:/outputFolder/pegs p com.mycompany.pegs ss d xmlbeans. Note that when I use ss option, only server side classes are generated, but with version of axis2 0.93 both server and client classes was generated. If I use the option sd an error occurs. The result of execute the command at first sight seems to be fine, but if we look the generated class PegsRequestSkeleton, all the methods have as parameter a variable of type OMElement, so the class PegsRequestMessageReceiver compiles with errors. With version 0.93, the methods in the skeleton class have as parameter a variable of appropriate type based on wsdl definition. I send attached the mentioned files, Pegs.wsdl and guide_trial.xsd. Later I have modified the wsdl file and the imported schema. The modifications consist in eliminate the wsdl:types tag, and use the wsdl:import tag. When I execute the command described above with Axis 2 0.94 the result is correct, and the methods in the skeleton class have the correct type of parameter, the one based on wsdl definition. The problem is that for being WS-I compliant, I have to use wsdl:types, so I shouldnt make changes on it. I send attached the mentioned files Pegs2.wsdl and guide_trial2.xsd used in this example. Thanks in advance for your interest Ricardo Blanes. Nota Legal: Este correo electronico puede contener informacion estrictamente confidencial y es de uso exclusivo del destinatario, quedando prohibida a cualquier otra persona su revelacion, copia, distribucion, o el ejercicio de cualquier accion relativa a su contenido. Si ha recibido este correo electronico por error, por favor, conteste al remitente, y posteriormente proceda a borrarlo de su sistema. Gracias por su colaboracion. Confidentiality notice: This e-mail message may contain confidential and/or legally privileged information and is solely for the attention and use of the intended recipient. Any disclosure, copying, distribution or the taking of any action with relation to the contents of this e-mail by any other person is strictly prohibited. If you believe that this e-mail has been mistakenly sent to you,please reply to the sender from whom you received the message in error and then delete the original e-mail from your system. Thank you for your co-operation. Pegs2.wsdl Description: Pegs2.wsdl guide_trial2.xsd Description: guide_trial2.xsd Pegs.wsdl Description: Pegs.wsdl guide_trial.xsd Description: guide_trial.xsd
Re: ArrayList in Webservices
If you plan to support interoperability with any language other than Java (or even any SOAP engine other then Axis), you should not expose Java Collections through your WSDL interface. You should convert them to arrays. AnneOn 2/3/06, Nayana Hegde [EMAIL PROTECTED] wrote: Hi, The following is the class which I have exposed as a webservice. public class Test { public ArrayList getArrayList(){ArrayList list = new ArrayList();TestObject obj = new TestObject();obj.setName(First);list.add(obj);TestObject obj1 = new TestObject(); obj1.setName(Second);list.add(obj1);return list;}public HashMap getMap(){HashMap map = new HashMap();map.put(First,First);map.put(Second,First); return map;}} Now when I access the method getArrayList in the client side it is getting resolved as an Object array instead of an ArrayList but when I access the getMap() it is getting resolved correctly. Can you let me know the reason for the above? Is there any configuration changes that have to be done for the above to work. 1.2beta3 1009 August 17 2004. service name=Test provider=java:RPC parameter name=className value=com.db.cc.Test/ parameter name=allowedMethods value=*/ parameter name=load-on-startup value=true/ parameter name=activateOnStartup value=true/ beanMapping languageSpecificType=java: com.db.cc.object.TestObject qname=ns4:TestObject xmlns:ns4=urn:object.cc.db.com/ /service Thanks and Regards, Nayana
Re: ArrayList in Webservices
Hi, Our application has to support only java. Can anyone let me know what are the criteria to be satisfied If I have to write a Serializerand Deserializer for ArrayList? Thanks for the same On 2/3/06, Anne Thomas Manes [EMAIL PROTECTED] wrote: If you plan to support interoperability with any language other than Java (or even any SOAP engine other then Axis), you should not expose Java Collections through your WSDL interface. You should convert them to arrays. Anne On 2/3/06, Nayana Hegde [EMAIL PROTECTED] wrote: Hi, The following is the class which I have exposed as a webservice. public class Test { public ArrayList getArrayList(){ArrayList list = new ArrayList();TestObject obj = new TestObject();obj.setName(First);list.add(obj);TestObject obj1 = new TestObject(); obj1.setName(Second);list.add(obj1);return list;}public HashMap getMap(){HashMap map = new HashMap();map.put(First,First);map.put(Second,First); return map;}} Now when I access the method getArrayList in the client side it is getting resolved as an Object array instead of an ArrayList but when I access the getMap() it is getting resolved correctly. Can you let me know the reason for the above? Is there any configuration changes that have to be done for the above to work. 1.2beta3 1009 August 17 2004. service name=Test provider=java:RPC parameter name=className value=com.db.cc.Test/ parameter name=allowedMethods value=*/ parameter name=load-on-startup value=true/ parameter name=activateOnStartup value=true/ beanMapping languageSpecificType=java: com.db.cc.object.TestObject qname=ns4:TestObject xmlns:ns4=urn:object.cc.db.com/ /service Thanks and Regards, Nayana
Re: Upload service in Axis2 administration
Hmmm Is the commons fileupload jar in the classpath ? I'm not sure whether the war was tested in the mentioned environment (tomcat 5.5 with jdk 1.5) but it seems that the problem is related to the behavior of the commons-fileupload component.On 2/3/06, Magnus Olsson [EMAIL PROTECTED] wrote: Hi,I got the following expception when I tried the Upload Service link in the administration for Axis2. The environment is Tomcat 5.5.15 and jdk1.5.0_06.Does anyone know what the problem might be?regards,Magnusorg.apache.jasper.JasperException: Unable to compile class for JSPGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageGenerated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:FileUpload cannot be resolvedAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error: DiskFileUpload cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:DiskFileUpload cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error:FileItem cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:FileItem cannot be resolved to a type org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:314)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causeorg.apache.jasper.JasperException : Unable to compile class for JSPGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error: -- Ajith Ranabahu
RE: ArrayList in Webservices
If your server and clients are both java, soap may not be the best communication protocol for you. I'd actually recommend a binary based protocol like RMI or Hessian/Burlap for such situations. Binary protocols perform better then text based ones. Generally, SOAP is great for interoperating between different platforms. If all the platforms are the same, then there's probably a better way. Just my 2 cents. JDG From: Nayana Hegde [mailto:[EMAIL PROTECTED] Sent: Friday, February 03, 2006 8:35 AMTo: axis-user@ws.apache.orgSubject: Re: ArrayList in Webservices Hi, Our application has to support only java. Can anyone let me know what are the criteria to be satisfied If I have to write a Serializerand Deserializer for ArrayList? Thanks for the same On 2/3/06, Anne Thomas Manes [EMAIL PROTECTED] wrote: If you plan to support interoperability with any language other than Java (or even any SOAP engine other then Axis), you should not expose Java Collections through your WSDL interface. You should convert them to arrays. Anne On 2/3/06, Nayana Hegde [EMAIL PROTECTED] wrote: Hi, The following is the class which I have exposed as a webservice. public class Test { public ArrayList getArrayList(){ArrayList list = new ArrayList();TestObject obj = new TestObject();obj.setName("First");list.add(obj);TestObject obj1 = new TestObject();obj1.setName("Second");list.add(obj1);return list;}public HashMap getMap(){HashMap map = new HashMap();map.put("First","First");map.put("Second","First"); return map;}} Now when I access the method getArrayList in the client side it is getting resolved as an Object array instead of an ArrayList but when I access the getMap() it is getting resolved correctly. Can you let me know the reason for the above? Is there any configuration changes that have to be done for the above to work. 1.2beta3 1009 August 17 2004. service name="Test" provider="java:RPC" parameter name="className" value="com.db.cc.Test"/ parameter name="allowedMethods" value="*"/ parameter name="load-on-startup" value="true"/ parameter name="activateOnStartup" value="true"/ beanMapping languageSpecificType="java: com.db.cc.object.TestObject" qname="ns4:TestObject" xmlns:ns4="urn:object.cc.db.com"/ /service Thanks and Regards, Nayana
RE: Upload service in Axis2 administration
Yes, the commons-fileupload.jar is in classpath.I compiled the warfrom the source code (0.94)myself. Itried withboth jdk1.4.2 and jdk1.5.0 and got the same result. But then Idownloadedprecompiled war and it worked fine.. thanks, Magnus -Original Message-From: Ajith Ranabahu [mailto:[EMAIL PROTECTED]Sent: Friday, February 03, 2006 3:00 PMTo: axis-user@ws.apache.orgSubject: Re: Upload service in Axis2 administrationHmmmIs the commons fileupload jar in the classpath ? I'm not sure whether the war was tested in the mentioned environment (tomcat 5.5 with jdk 1.5) but it seems that the problem is related to the behavior of the commons-fileupload component. On 2/3/06, Magnus Olsson [EMAIL PROTECTED] wrote: Hi,I got the following expception when I tried the Upload Service link in the administration for Axis2. The environment is Tomcat 5.5.15 and jdk1.5.0_06.Does anyone know what the problem might be?regards,Magnusorg.apache.jasper.JasperException: Unable to compile class for JSPGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageGenerated servlet error: Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a package Generated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:FileUpload cannot be resolvedAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error: DiskFileUpload cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:DiskFileUpload cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jsp Generated servlet error:FileItem cannot be resolved to a typeAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:FileItem cannot be resolved to a type org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:314)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causeorg.apache.jasper.JasperException : Unable to compile class for JSPGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileUpload resolves to a packageGenerated servlet error:Only a type can be imported. org.apache.commons.fileupload.DiskFileUpload resolves to a package Generated servlet error:Only a type can be imported. org.apache.commons.fileupload.FileItem resolves to a packageAn error occurred at line: 60 in the jsp file: /upload.jspGenerated servlet error:-- Ajith Ranabahu
Re: ArrayList in Webservices
Yes. Would say the same. But if you want to use Soap on every price so you dont know what times will come and you must be interoperable, I must say it is not possible to use ArrayLists! You can only use arrays and each element must be of the same type. because soap specifies this and java is using this specification. if it was not so, soap would have no sense! if the types in the array are no primitive datatypes but a dataype of your own, you need a deserializer rather serializer to register with the specified element namespace/name. So if the soap message is parsed it will use the specified deserializer to push the soap values into the java class values. lg, chris Jay Glanville schrieb: If your server and clients are both java, soap may not be the best communication protocol for you. I'd actually recommend a binary based protocol like RMI or Hessian/Burlap for such situations. Binary protocols perform better then text based ones. Generally, SOAP is great for interoperating between different platforms. If all the platforms are the same, then there's probably a better way. Just my 2 cents. JDG *From:* Nayana Hegde [mailto:[EMAIL PROTECTED] *Sent:* Friday, February 03, 2006 8:35 AM *To:* axis-user@ws.apache.org *Subject:* Re: ArrayList in Webservices Hi, Our application has to support only java. Can anyone let me know what are the criteria to be satisfied If I have to write a Serializer and Deserializer for ArrayList? Thanks for the same On 2/3/06, *Anne Thomas Manes* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: If you plan to support interoperability with any language other than Java (or even any SOAP engine other then Axis), you should not expose Java Collections through your WSDL interface. You should convert them to arrays. Anne On 2/3/06, *Nayana Hegde* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Hi, The following is the class which I have exposed as a webservice. public class Test { public ArrayList getArrayList(){ ArrayList list = new ArrayList(); TestObject obj = new TestObject(); obj.setName(First); list.add(obj); TestObject obj1 = new TestObject(); obj1.setName(Second); list.add(obj1); return list; } public HashMap getMap(){ HashMap map = new HashMap(); map.put(First,First); map.put(Second,First); return map; } } Now when I access the method getArrayList in the client side it is getting resolved as an Object array instead of an ArrayList but when I access the getMap() it is getting resolved correctly. Can you let me know the reason for the above? Is there any configuration changes that have to be done for the above to work. 1.2beta3 1009 August 17 2004. service name=Test provider=java:RPC parameter name=className value=com.db.cc.Test/ parameter name=allowedMethods value=*/ parameter name=load-on-startup value=true/ parameter name=activateOnStartup value=true/ beanMapping languageSpecificType=java: com.db.cc.object.TestObject qname=ns4:TestObject xmlns:ns4=urn:object.cc.db.com http://object.cc.db.com// /service Thanks and Regards, Nayana
RE: Generated code not Thread safe
Hello everyone, I am the originator of the thread. Here is the problem that I encountered and the solution to it. Problem: === 1) The issue is NOT in the Locator: I used a cached instance of the Locator (thanks to a suggestion from this list). It made the performance much better. 2) The lock is caused by the generated Stub client: The method createCall() causes it. The moment I use more than one thread I get the lock. I agree with Pratik Parikh, the problem is not in HashMap, but in the way it is used in axis, therefore it is a bug in axis. Neil Fergusson pointed us to https://issues.apache.org/jira/browse/AXIS-2284, where this axis bug and a fix to it is mentioned. My Solution: == Until axis is fixed I have a work around for this lock. I created a class which extends the generated Stub client and overwrites the method createCall() to make it synchronized. I tested it and it works. Here is the class that I created: import gov.nih.nlm.ncbi.www.soap.eutils.EUtilsServiceSoapStub; import javax.xml.namespace.QName; public class eRaStub extends EUtilsServiceSoapStub{ public eRaStub(java.net.URL endpointURL, javax.xml.rpc.Service service,QName cachedPortName) throws Exception{ stub._getService()); super(endpointURL, service); setPortName(cachedPortName); } // End Constructor // Overwrite createCall to resolve the thread Lock public org.apache.axis.client.Call createCall() throws java.rmi.RemoteException { // ObjectLock is a singleton ObjectLock obj = ObjectLock.getInstance(); synchronized(obj) { return super.createCall(); } // End Synch } // End createCall() }// End eRaStub Laheeb Alsarraf -Original Message- From: Cyrille Le Clerc [mailto:[EMAIL PROTECTED] Sent: Friday, February 03, 2006 6:58 AM To: axis-user@ws.apache.org Subject: Re: Generated code not Thread safe Hello Ever, I am confused. I replayed many stress tests and I never reproduced such a multi threading lock. My environment is Sun JDK-1.5.0_06, Tomcat 5.5.9 and Axis 1.3 (same versions on client and server) and I used pretty complex WSDLs (5 to 7 complex types involved each call). Can somebody send me its configuration (wsdl + jdk ... version) ? I would try to reproduce this multi threading lock. Cyrille -- Cyrille Le Clerc [EMAIL PROTECTED] [EMAIL PROTECTED] On 2/1/06, Olano, Ever [EMAIL PROTECTED] wrote: Hello. I just need someone to confirm if my understanding of this thread (pun not intended) is correct. I take it, as it stands right now, even in 1.3, it is not actually safe to use just a single instance of the Locator class due to its use of HashMap (unless we synchronize the call to its getport*() method, i.e. the one that returns a stub object). Is that right? If not, please summarize what exactly it is that we have to look out for. Thanks, Ever -Original Message- From: Parikh,Pratik [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 01, 2006 9:31 AM To: axis-user@ws.apache.org Subject: RE: Generated code not Thread safe Well you can used synchronized block to make sure that access to the map is thread safe. I would not blame HashMap for it, this would be considered as bug. Thanks, Parikh, Pratik | Software Engineer | Cerner Corporation | (1)-816-201-1298 | [EMAIL PROTECTED] | www.cerner.com -Original Message- From: Alsarraf, Laheeb (NIH/OD) [C] [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 01, 2006 9:24 AM To: axis-user@ws.apache.org Subject: RE: Generated code not Thread safe You are right. It is the same issue as the one discussed in the link below. It is the get/put method in HashMap.java. However I found that the problem is not limited to org.apache.axis.utils.JavaUtils.isEnumClass. When I cached the Locator the code locked in another place: org.apache.axis.encoding.TypeMappingImpl.internalRegister The reason is the same HashMap. So it looks like the usage of HashMap in axis should be reviewed. Thread Dump: Thread-0 prio=5 tid=0x00a58ba0 nid=0xbac runnable [2cff000..2cffd8c] at java.util.HashMap.put(HashMap.java:382) at org.apache.axis.encoding.TypeMappingImpl.internalRegister(TypeMapping Impl.java:263) at org.apache.axis.encoding.TypeMappingImpl.register(TypeMappingImpl.jav a:221) at org.apache.axis.encoding.TypeMappingDelegate.register(TypeMappingDele gate.java:73) at org.apache.axis.client.Call.registerTypeMapping(Call.java:2285) at org.apache.axis.client.Call.registerTypeMapping(Call.java:2322) at gov.nih.nlm.ncbi.www.soap.eutils.EUtilsServiceSoapStub.createCall(EUt ilsServiceSoapStub.java:10286) - locked 0x10585758 (a gov.nih.nlm.ncbi.www.soap.eutils.EUtilsServiceS oapStub) at gov.nih.nlm.ncbi.www.soap.eutils.EUtilsServiceSoapStub.run_eSummary(E
FW: axis-java2wsdl is throwing java.lang.NoSuchMethodError
Title: FW: axis-java2wsdl is throwing java.lang.NoSuchMethodError Has anyone come across the following issue? Hello, I am using axis-1_3. When I am trying to use ant task axis-java2wsdl, I am getting the following error. [axis-java2wsdl] java.lang.NoSuchMethodError: org.apache.axis.encoding.DefaultTypeMappingImpl.getSingleton()Lorg/apache/axis/encoding/TypeMapping; [axis-java2wsdl] at org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask.execute(Java2WsdlAntTask.java:221) [axis-java2wsdl] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [axis-java2wsdl] at org.apache.tools.ant.Task.perform(Task.java:364) [axis-java2wsdl] at org.apache.tools.ant.Target.execute(Target.java:341) [axis-java2wsdl] at org.apache.tools.ant.Target.performTasks(Target.java:369) [axis-java2wsdl] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [axis-java2wsdl] at org.apache.tools.ant.Project.executeTargets(Project.java:1062) [axis-java2wsdl] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:377) [axis-java2wsdl] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:135) Initially it was not able to identify 'javax.activation.DataSource' class, so I have added activation.jar (from Sun) and then it threw the above exception. Any clue? I guess somewhere there is a conflict between the versions of the jar files.. Thanks,Kiran This e-mail, and any attachments thereto, is confidential and is intended only for the individual(s) named. If you are not the intended recipient, please let us know by e-mail reply and delete it from your system; do not copy/save this e-mail or disclose its contents to anyone. E-mail transmissions cannot be guaranteed to be secure or error-free as the transmission could be interrupted, corrupted, lost, destroyed, altered, arrive late or contain viruses. ObjectWave does not accept liability for any errors or omissions in the contents of this e-mail which arise as a result of e-mail transmission. The views expressed in this e-mail do not necessarily reflect those of ObjectWave or its affiliates.
Re: FW: axis-java2wsdl is throwing java.lang.NoSuchMethodError
i have a similar problem ... i've this exception:java.lang.NoSuchMethodException : org.apache.axis.encoding.ser.JAFDataHandlerSerializerFactory.create(java.lang.Class, javax.xml.namespace.QName) at java.lang.Class.getMethod(Class.java:1581) at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory (BaseSerializerFactory.java:254) at org.apache.axis.client.Call.registerTypeMapping(Call.java:2315)i have activation.jar in my classpath ... i don't be able to resove this problem... anyone can help me??? thanks,Simone2006/2/3, Kiran Kumar [EMAIL PROTECTED]: Has anyone come across the following issue? Hello, I am using axis-1_3. When I am trying to use ant task axis-java2wsdl, I am getting the following error. [axis-java2wsdl] java.lang.NoSuchMethodError: org.apache.axis.encoding.DefaultTypeMappingImpl.getSingleton()Lorg/apache/axis/encoding/TypeMapping; [axis-java2wsdl] at org.apache.axis.tools.ant.wsdl.Java2WsdlAntTask.execute(Java2WsdlAntTask.java:221) [axis-java2wsdl] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) [axis-java2wsdl] at org.apache.tools.ant.Task.perform(Task.java:364) [axis-java2wsdl] at org.apache.tools.ant.Target.execute(Target.java:341) [axis-java2wsdl] at org.apache.tools.ant.Target.performTasks(Target.java:369) [axis-java2wsdl] at org.apache.tools.ant.Project.executeTarget(Project.java:1214) [axis-java2wsdl] at org.apache.tools.ant.Project.executeTargets(Project.java:1062) [axis-java2wsdl] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:377) [axis-java2wsdl] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:135) Initially it was not able to identify 'javax.activation.DataSource' class, so I have added activation.jar (from Sun) and then it threw the above exception. Any clue? I guess somewhere there is a conflict between the versions of the jar files.. Thanks,Kiran This e-mail, and any attachments thereto, is confidential and is intended only for the individual(s) named. If you are not the intended recipient, please let us know by e-mail reply and delete it from your system; do not copy/save this e-mail or disclose its contents to anyone. E-mail transmissions cannot be guaranteed to be secure or error-free as the transmission could be interrupted, corrupted, lost, destroyed, altered, arrive late or contain viruses. ObjectWave does not accept liability for any errors or omissions in the contents of this e-mail which arise as a result of e-mail transmission. The views expressed in this e-mail do not necessarily reflect those of ObjectWave or its affiliates.
RE: Document Literal vs Document Wrapped vs RPC Encoding
I think that the thing is that when you do soap rpc literal messages you may find it difficult to validate messages in deserializing time. That's because you use the name of the wsdl message element and not the name of the xsd element itself. -Mensaje original-De: Anne Thomas Manes [mailto:[EMAIL PROTECTED]Enviado el: viernes, 03 de febrero de 2006 4:08Para: axis-user@ws.apache.orgAsunto: Re: Document Literal vs Document Wrapped vs RPC Encoding Quite a few SOAP engines don't support rpc/literal, therefore doc/literal (wrapped or unwrapped) is a better idea than rpc/literal. I generally recommend using wrapped doc/literal for best interop and easiest development and configuration. Note that .NET supports wrapped doc/literal by default. Anne On 2/2/06, Cyrille Le Clerc [EMAIL PROTECTED] wrote: WS-I Basic Profile, the reference for SOAP interoperability, says itprefers "literal" rather than "encoded" :Extract : "As a result, the Profile prefers the use of literal,non-encoded XML." Chapter : "4.1.7 SOAP encodingStyle Attribute"URL : http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16448072 Unfortunately, I did not find in this spec any clear statement sayingthat "document" (in a wrapped style) is preferred to "rpc".However, you will find many articles that say "document" is preferred to "rpc". Cyrille--Cyrille Le Clerc[EMAIL PROTECTED][EMAIL PROTECTED]http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.htmlOn 2/2/06, Jyotishman Pathak [EMAIL PROTECTED] wrote: Dov,I found this article [1] from IBM to be quite useful. At the same time, I am interested in knowing more about your investigation.Thanks,- Jyoti[1] http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/?ca=dgr-devx-WebServicesMVP03 On 2/2/06, Balaji D L [EMAIL PROTECTED] wrote: Can you share your analyse with us ?? It will be very useful. Regards Balaji - Original Message From: Dov Rosenberg [EMAIL PROTECTED] To:axis-user@ws.apache.org Sent: 02 February 2006 14:21:37 Subject: Document Literal vs Document Wrapped vs RPC Encoding I have done a bunch of investigating to determine the differences/benefits/limitations of the 3 styles of WSDL generation. In general it seems that the preferred version is Document Literal. Are there any other opinions as to the most popular version? Thanks in advance -- Dov Rosenberg Inquira Inc 370 Centerpointe Circle, ste 1178 Altamonte Springs, FL 32701 (407) 339-1177 x 102 (407) 339-6704 (fax) [EMAIL PROTECTED] AOL IM: dovrosenberg -- Jyotishman Pathak WWW: http://www.cs.iastate.edu/~jpathak
Re: Document Literal vs Document Wrapped vs RPC Encoding
in fact, there are quite a lot of articels, which insists not to use rpc/encoded and hopefully the few web services out there which are still using rpc/encoded will change it. this is very old style but unfurtunatelly axis 1.2 and i think also axis 1.3 has it set as default. but axis2 goes in the right direction and comes with a much faster engine for doc/literal. :) besides the basic profile of the ws-i (http://www.ws-i.org/) insists on using doc/literal, which results in fewer bytes to transmit, because the types of the values are not transmitted! and the ugly array encoding in the soap envelope with multi-refs will belong to the past. :) Alejandro Ariel de Lio schrieb: I think that the thing is that when you do soap rpc literal messages you may find it difficult to validate messages in deserializing time. That's because you use the name of the wsdl message element and not the name of the xsd element itself. -Mensaje original- *De:* Anne Thomas Manes [mailto:[EMAIL PROTECTED] *Enviado el:* viernes, 03 de febrero de 2006 4:08 *Para:* axis-user@ws.apache.org *Asunto:* Re: Document Literal vs Document Wrapped vs RPC Encoding Quite a few SOAP engines don't support rpc/literal, therefore doc/literal (wrapped or unwrapped) is a better idea than rpc/literal. I generally recommend using wrapped doc/literal for best interop and easiest development and configuration. Note that .NET supports wrapped doc/literal by default. Anne On 2/2/06, *Cyrille Le Clerc* [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: WS-I Basic Profile, the reference for SOAP interoperability, says it prefers literal rather than encoded : Extract : As a result, the Profile prefers the use of literal, non-encoded XML. Chapter : 4.1.7 SOAP encodingStyle Attribute URL : http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16448072 http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16448072 Unfortunately, I did not find in this spec any clear statement saying that document (in a wrapped style) is preferred to rpc. However, you will find many articles that say document is preferred to rpc. Cyrille -- Cyrille Le Clerc [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html On 2/2/06, Jyotishman Pathak [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Dov, I found this article [1] from IBM to be quite useful. At the same time, I am interested in knowing more about your investigation. Thanks, - Jyoti [1] http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/?ca=dgr-devx-WebServicesMVP03 On 2/2/06, Balaji D L [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] wrote: Can you share your analyse with us ?? It will be very useful. Regards Balaji - Original Message From: Dov Rosenberg [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] To: axis-user@ws.apache.org mailto:axis-user@ws.apache.org Sent: 02 February 2006 14:21:37 Subject: Document Literal vs Document Wrapped vs RPC Encoding I have done a bunch of investigating to determine the differences/benefits/limitations of the 3 styles of WSDL generation. In general it seems that the preferred version is Document Literal. Are there any other opinions as to the most popular version? Thanks in advance -- Dov Rosenberg Inquira Inc 370 Centerpointe Circle, ste 1178 Altamonte Springs, FL 32701 (407) 339-1177 x 102 (407) 339-6704 (fax) [EMAIL PROTECTED] mailto:[EMAIL PROTECTED] AOL IM: dovrosenberg -- Jyotishman Pathak WWW: http://www.cs.iastate.edu/~jpathak http://www.cs.iastate.edu/%7Ejpathak
Re: OutOfMemoryError when submitting large SOAP requests to Axis
hi Linus, thanks for the link! after doing some reading, I'm still not sure which category this service falls under. I've attached an edited (identifying info replaced by '' and '') version of the WSDL for this service. For reference, I have -Xmx1024m set in the JVM. Have you had any luck with the attachment streaming? I can't figure out how to enable or configure Axis to use it. This is my first time working with Axis, so needless to say I'm fumbling in the dark a little bit. This codebase is larger than any I've worked in the past for a web service, as well. I'm going to continue to investigate and research - I'll post what I find, and hope you'll keep me posted to your progress. cheers, - Jared On 2/2/06, Linus Kamb [EMAIL PROTECTED] wrote: Hi, Jared. doc/lit wrapped is the web service style. There are various styles: primarily RPC-encoded, document/literal, and wrapped which is a variation on document/literal. Much information available about that. The following is probably not the best introductory information, but I happened to see it this morning: http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/ I guess I was just wondering if your web service was trying to parse the SOAP msg XML into a DOM Element. I haven't tried mulitple simultaneous submits. I suppose my service might run out of memory too. I have my java startup params set to -Xmx768m, and I currently reject messages over 2MB (rather than trying to parse the XML.) I suppose this isn't going to help your situation. I'm going to look into the attachment streaming that Dims mentioned for my app. Linus Jared Klett wrote: hi Linus, I can send a single request at a time of the required size, and it will succeed. However, when I start more simultaneous requests beyond the first one, they invariably fail with OutOfMemoryErrors. The OOM occurs somewhere inside of Axis. The web service works like this: it runs inside Tomcat, and passes through a couple of Tomcat filters before reaching the AxisServlet. I've monitored the logging, and all simultaneous requests make it through the filters with no problem. Once the flow passes into the AxisServlet, and subsequently to SOAPMonitor, the OOM's start to occur. I attached a debug log snippet to the initial message in this thread. Also, what do you mean by doc/lit wrapped? cheers, - Jared On 2/2/06, Linus Kamb [EMAIL PROTECTED] wrote: What style of web service are you using? I have successfully sent attachments of 200MB using doc/lit wrapped, and I'm sure I could send larger ones. The trouble I run into is when I try to parse the attachments (they are XML,) but that is outside of Axis/SOAP. Jared Klett wrote: greetings all, I've taken a contract job to improve the performance of a Java Web Service based on Axis. The service is required to handle multiple simultaneous SOAP requests that can be anywhere from two to 100 MB in size. So far, the service fails with an OutOfMemoryError when I submit any more than one simultaneous request at a time. I participated in a previous thread entitled Status w/r/t memory leaks... started by Jesse Sightler. I've tried the Axis 1.3 final release, as well as a version built from the trunk of the latest (as of yesterday) SVN source tree. The SOAP requests have a number of attachments in the form of base64-encoded data, which look something like this: data sid=data_5 filenamespacer.gif/filename mimedataR0lGODlhAQABAIAAACH5BAEALAABAAEAAAICRAEAOw==/mimedata /data The content inside the mimedata tag can be extremely large - as I mentioned, these requests can be upwards of 100 MB in size. I've tweaked the JVM parameters, setting the max and initial heap sizes, the perm gen heap size, as well as trying several different options to change the behavior of the garbage collector - all to no avail. I've narrowed down the problem down to the point where I'm sure it's happening somewhere inside of Axis - the request is submitted to AxisServlet, then passed to SOAPMonitor via an invoke() call. Here is a snippet of the debug log output before the OOM happens: [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement ['' reporterCcc] [] [2006-01-30 15:45:23,404] ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(endElem00) [] [2006-01-30 15:45:23,404] SerializationContext - End element reporterCcc [] [2006-01-30 15:45:23,404] NSStack - NSPop (32) [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement ['http://.yyy.com' fileTestSubmission] [] [2006-01-30 15:45:23,404] ProjectResourceBundle - org.apache.axis.i18n.resource::handleGetObject(endElem00) [] [2006-01-30 15:45:23,404] SerializationContext - End element q1:fileTestSubmission [] [2006-01-30 15:45:23,404] NSStack - NSPop (32) [] [2006-01-30 15:45:23,404] SAXOutputter - SAXOutputter.endElement
Re: OutOfMemoryError when submitting large SOAP requests to Axis
Hi, Jared. Your service is using rpc/encoded. The identifying parts of the wsdl are: wsdl:binding name=FilingSoapBinding type=impl:FilingServices wsdlsoap:binding style=rpc transport=http://schemas.xmlsoap.org/soap/http/ ^ wsdl:operation name=getDocument wsdlsoap:operation soapAction=/ wsdl:input name=getDocumentRequest wsdlsoap:body encodingStyle=http://schemas.xmlsoap.org/soap/encoding/; namespace=http://webservices..com; use=encoded/ ^^ I'm afraid I do not recall how rpc/encoded handles the attachments, and whether or not there would be any reason to parse them or have them read into memory. I have not yet looked at attachment streaming. For me, the bigger problem is XML processing. Good luck! Linus
Problem building my handler
Title: Problem building my handler Hi Im trying to build a handler to run with Axis 1.3. The goal of this handler would be to update the SOAP message to add WS-Security information using the WSS4J library (I know theres a handler provided with WSS4J, but I simply need to build a simplified version of that). >From what i understand of handlers, the way I should do that is as shown below. Everything works fine: the document d contains the wsse element as expected. The question is: how do I recreate a soap message from the Document object? Thanks for your help Jean-Noel Colin Message requestMessage = arg0.getCurrentMessage(); SOAPEnvelope env = requestMessage.getSOAPEnvelope(); SOAPConstants soapConstants = env.getSOAPConstants(); Crypto crypto = CryptoFactory.getInstance(client-wss.properties); Vector parts = new Vector(); WSEncryptionPart part = new WSEncryptionPart(soapConstants.getBodyQName().getLocalPart(), soapConstants.getEnvelopeURI(), Content); parts.add(part); WSSignEnvelope signer = new WSSignEnvelope(); signer.setUserInfo(client, client-ks); signer.setParts(parts); // this is optional since the body is signed by default Document d=null; try { Document origDoc = env.getAsDocument(); d = signer.build(origDoc, crypto); } catch (WSSecurityException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }
ClassCastException with Vector return type
Hi, all, I am using Axis 1.3 with JDK1.5.0_06, and Tomcat 5.5.12. In my client side code, it cast the return Object into String, Integer, Boolean, etc. However, I run into trouble with Vector return type, and here is a piece of my code: Vector results = (Vector) call.invoke(new Object[]{}); and the client code throws - Exception: java.lang.ClassCastException: java.util.HashMap Can anyone tell me what happened here? What does this have to do with HashMap casting? Thanks. -Julie __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Service startup/initialization
Hello, I have run into a problem. I need to add some initialization code to my web service, since this is a simple daemon service I'm using org.apache.axis.transport.http.SimpleAxisServer, rather than normal servlet container. The approach I attempted to use to solve this issue was adding static { } blocks to my code, however, these don't get invoked until the first service request is made, and my first service request wont be made until I subscribe to the publisher that will be sending me service requests. So what's the best course of action here? Thanks, Scott S. McCoy
Incorrect serialization with Arrays (wraped style) - Axis 1.3
Title: Incorrect serialization with Arrays (wraped style) - Axis 1.3 Hello I am using Axis 1.3 (Java). I created my service endpoint method as public DataHandler test(String effectiveDate, String expiryDate, String[] arrActivities, String[] arrStatus, String typeOfClient) {} I used Java2WSDL to generate WSDL (wrapped style), it generated the WSDL with XSD type as - complexType - sequence element name=effectiveDate type=xsd:string / element name=expiryDate type=xsd:string / element maxOccurs=unbounded name=arrActivities type=xsd:string / element maxOccurs=unbounded name=arrStatus type=xsd:string / element name=typeOfClient type=xsd:string / /sequence /complexType It works fine as long as the client passes all the elements in the input. But if the client misses the element 'arrActivities' then it takes 'arrStatus' elements as 'arrActivities' that means arrActivities[] string array will have the elements of arrStatus and arrStatus[] will have the value of 'typeOfclient' and typeOfclient will be empty. Is this a bug or Am I doing something wrong ? Thanks Kiran This e-mail, and any attachments thereto, is confidential and is intended only for the individual(s) named. If you are not the intended recipient, please let us know by e-mail reply and delete it from your system; do not copy/save this e-mail or disclose its contents to anyone. E-mail transmissions cannot be guaranteed to be secure or error-free as the transmission could be interrupted, corrupted, lost, destroyed, altered, arrive late or contain viruses. ObjectWave does not accept liability for any errors or omissions in the contents of this e-mail which arise as a result of e-mail transmission. The views expressed in this e-mail do not necessarily reflect those of ObjectWave or its affiliates.
NullPointerException thrown accessing services, but WSDL generation works
I've just configured Axis 1.1 on my machine, and happyaxis reports all the required jar files are available. But when I try the EchoHeaders.jws service, I get: ?xml version=1.0 encoding=UTF-8? soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/; xmlns:xsd=http://www.w3.org/2001/XMLSchema; xmlns:xsi=http://www.w3.org/2001/ XMLSchema-instance soapenv:Body soapenv:Fault faultcodesoapenv:Server.userException/faultcode faultstringjava.lang.NullPointerException/faultstring detail/ /soapenv:Fault /soapenv:Body /soapenv:Envelope There's no stack trace, and no log output in catalina.out. I've also tried my own web service (a servlet) which worked on my old computer (since uninstalled and repurposed). I get log output there when calling https:// localhost:8443/whisper-server/ws/UserService?wsdl and I get the expected WSDL back, but when my PHP5 SoapClient tries to access the service, I just get back a SOAP Fault with a NullPointerException, and no log output anywhere. I have no idea how to debug this, and no idea as to what might be failing. It seems obvious that there's a problem with my axis installation, but I can't see what it would be. The environment is: MacOS X 10.4.4 (on a PPC) Tomcat 5.5.9 JVM 1.5.0_05-83 Axis 1.1 Has anyone had this problem before? Thanks, Mark
Re: mimeErrorParsing when MTOM is set as the attachment encapsulation type within the service
On 2/4/06, paul slade [EMAIL PROTECTED] wrote: I am using the latest Axis 1.x from SVN. I am have a service with a method called 'download' that returns a DataHandler. I have the following code within this method: Message rspmsg = AxisEngine.getCurrentMessageContext().getResponseMessage(); rspmsg.getAttachmentsImpl().setSendType(org.apache.axis.attachments.Attachments.SEND_TYPE_MTOM); The client is having issues parsing the Multipart/Related stream returned by this method. I am getting a javax.mail.internet.ParseException thrown from MultiPartRelatedInputStream:114 javax.mail.internet.ContentType ct = new javax.mail.internet.ContentType(contentType); I am able to upload attachements from the client to the server (using MTOM). When I compare the Content-Type headers generated by the client (on an upload) versus the server (on a download) I see the following: Good (generated by client on upload): Content-Type: multipart/related;type=application/xop+xml; start=A14CBC258F65C2E949C8DF2AFE07BF80; start-info=text/xml; charset=utf-8; boundary==_Part_0_18055655.1138966022050 Bad (generated by server on download): Content-Type: multipart/related;type=application/xop+xml; start=066DB20237D367A9B8B855AB14D7B2E7; start-info=text/xml; boundary==_Part_4_19556074.1138967887392;charset=utf-8 Notice the different position of the charset and boundary. Has anyone encountered this? Cheers, paul