You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ma...@stfc.ac.uk on 2011/04/28 16:04:49 UTC

Axis2 Response trunked

Hello,

My axis2 WS is working 99% perfectly. Anyway when I want to return a quite long XML document as CDATA the response document is mysteriously truncated just in the middle of some word. That is, something that should be

<soapsomething>
<myTag>
<!CDATA[myXMLDocument]]>
</myTag>
<soapsomething>

On the client became

<soapsomething>
<myTag>
<!CDATA[myXMLDoc
</myTag>
<soapsomething>

What mostly intrigue me is that such situation happen only for some XML documents!
To be more specific I create both the WSDL and the classes through a MAVEN plugin so I just add the document as String to the Java response object created by axis, that is, I do not manipulate the XML but just the java object. In this way I can see that the document is correctly added to the response (the XML document is all and correctly into the CDATA), then it enters the AXIS internal code and then the client receives such truncated response.

I am using AXIS2 (1.5) running into JBoss

Thanks
Maurizio

-- 
Scanned by iCritical.


AW: Axis2 Response trunked

Posted by Stadelmann Josef <jo...@axa-winterthur.ch>.
Hi Maurizio

 

I would have recommended that before but as it is sometimes not what folk likes to read, I postponed this a bit: It is the best idea to debug axis2! After a while it gets very common to you, and it is by far the best and fastest way to get all those answers others cannot give to you. Best to do so before all kind of trial and error starts: DEBUGGING in Axis2 Code helps when documentation or communities are unable to help.! 

 

download Axis2, build it using maven, best run maven from NetBeans or any other Java IDE to make axis2.war, and then startup your application server in debug mode. that is to say, you need to be able to connect to the virtual machines debugger port at the JVM which runs i.e. Tomcat or Jboss. Then you can single step through axis2 code. And you will get a lot insight into axis2. 

 

I had to do that many times before, because scope="soapsession" did not work as it should, unless I realized by debugging axis2 that they said seconds where they should have said milliseconds, which made my time-out-counter 1000 times to low. So it did not work, debugging showed the true cause, and after reconfiguring axis2 the problem was gone.

 

Josef.

 

 

 

Von: maurizio.nagni@stfc.ac.uk [mailto:maurizio.nagni@stfc.ac.uk] 
Gesendet: Dienstag, 3. Mai 2011 10:19
An: java-user@axis.apache.org
Betreff: RE: Axis2 Response trunked

 

Hi Josef,

 

Sorry for the late reply but yesterday here was holidays.

Some info

Server: JBoss5.1 + Axis (1.5) + Suse (11.x)

Client: I made tests both with Poster (an HTTP plug-in for Firefox) and oXigen (an XML editor) WSDL SOAP analyzer. I even made a Java client generated by the AXIS wsdl2code script (I just added the generateClientSide option in the org.apache.axis2: axis2-wsdl2code-maven-plugin I use to generate the server side code) setting the HTTP1.1 truncated option to false. The real production client is a python-based and it performs like the previous three clients.

 

On the request I do not have any exception (at least at the ERROR level) and, as I wrote, debugging the code, the server correctly generates the response until the skeleton class. To go further into I should download the AXIS2 source and see what happen inside which I will do it if no other solution appear. 

 

I have not used any HTTP monitor but I strongly guess that the data are truncated at the Server side because 

1)      any client I used returns me the same truncated response. 

2)      The transmitted message is not really trunked: just an element inside the message is trunked and because the client receive an XML, that is the client does not marshal/unmarshall nothing, the server should be guilty for such manipulation of the data.

 

I even tried to update Axis2 to the available last version but the problem remained.

 

I read that for large document should be worth to send it as an "attachment" but this would change the actual architecture which I would like not to touch (the real client is implemented by a third party). If not other solution will appear probably I will refactor the actual server to a full EJB3 web service (this Axis2 service is something which comes from a previous implementation. I already run other EJBs and that's also why Axis2 is deployed into JBoss and not into Tomcat).

 

Thanks for sharing your experience! I hope we will find some solution sooner or later.

Maurizio

 

From: Stadelmann Josef [mailto:josef.stadelmann@axa-winterthur.ch] 
Sent: 02 May 2011 09:48
To: java-user@axis.apache.org
Subject: AW: Axis2 Response trunked

 

Hi,

I was running into very similar issues once. Not with CDATA but just with long soap xml messages. 

 

But first, it would be nice if you can give us a bit more insight into your configuration ,OS, Frameworks used, Axis2 version, and if your client is in example a MS WCF 3.5 web service client or what? Such details are important if one should be able to help you. Isn't it? Then we like to know about exceptions raised. Where? At service or at client? Or no exception but just truncations? And if truncation where does it occur. For that you may want to switch a TCP Monitor between client and server and see if the all CDATA is put onto wire and then gets truncated at the client or if the service is unable to send all CDATA to the wire, hence what you see at the client is caused by the service.

 

In short is it the client or the service which is responsible for truncation?

 

Why do I address MS WCF 3.5 Client? Because once you successfully transmit your XML SOAP between an Axis2 Server and a MS WCF Client (99% fine) you will find that it happens sooner the later what you describe. As soon as your xml stream approaches 65536 bytes, about 20 bytes before that limit is reached, your MS WCF Client comes up with an error message stating that the message is too large. But itself, the MS WCF Client, has absolute no concerns to send to the web service documents very much larger than 65536 bytes. J you get the point. 

 

Then you start reading at why MS WCF 3.5 clients behaves like that, and you will find somewhere at MS WCF Forums the "lapidary" information that WCF has not been developed to transmit such large messages. And then you start thinking about transmitting in Junks, about taking other formats into consideration like MTOM é all for various reasons.

 

I know this is not the solution to your problem, but may be the path to go.

Josef

 

 

 

Von: maurizio.nagni@stfc.ac.uk [mailto:maurizio.nagni@stfc.ac.uk] 
Gesendet: Donnerstag, 28. April 2011 16:05
An: java-user@axis.apache.org
Betreff: Axis2 Response trunked

 

Hello,

 

My axis2 WS is working 99% perfectly. Anyway when I want to return a quite long XML document as CDATA the response document is mysteriously truncated just in the middle of some word. That is, something that should be 

 

<soapsomething>

<myTag>

<!CDATA[myXMLDocument]]>

</myTag>

<soapsomething>

 

On the client became

 

<soapsomething>

<myTag>

<!CDATA[myXMLDoc

</myTag>

<soapsomething>

 

What mostly intrigue me is that such situation happen only for some XML documents!

To be more specific I create both the WSDL and the classes through a MAVEN plugin so I just add the document as String to the Java response object created by axis, that is, I do not manipulate the XML but just the java object. In this way I can see that the document is correctly added to the response (the XML document is all and correctly into the CDATA), then it enters the AXIS internal code and then the client receives such truncated response.

 

I am using AXIS2 (1.5) running into JBoss

 

Thanks

Maurizio

 

-- 
Scanned by iCritical. 

 

 

-- 
Scanned by iCritical. 

 


RE: Axis2 Response trunked

Posted by ma...@stfc.ac.uk.
Hi Josef,

Sorry for the late reply but yesterday here was holidays.
Some info
Server: JBoss5.1 + Axis (1.5) + Suse (11.x)
Client: I made tests both with Poster (an HTTP plug-in for Firefox) and oXigen (an XML editor) WSDL SOAP analyzer. I even made a Java client generated by the AXIS wsdl2code script (I just added the generateClientSide option in the org.apache.axis2: axis2-wsdl2code-maven-plugin I use to generate the server side code) setting the HTTP1.1 truncated option to false. The real production client is a python-based and it performs like the previous three clients.

On the request I do not have any exception (at least at the ERROR level) and, as I wrote, debugging the code, the server correctly generates the response until the skeleton class. To go further into I should download the AXIS2 source and see what happen inside which I will do it if no other solution appear.

I have not used any HTTP monitor but I strongly guess that the data are truncated at the Server side because

1)      any client I used returns me the same truncated response.

2)      The transmitted message is not really trunked: just an element inside the message is trunked and because the client receive an XML, that is the client does not marshal/unmarshall nothing, the server should be guilty for such manipulation of the data.

I even tried to update Axis2 to the available last version but the problem remained.

I read that for large document should be worth to send it as an "attachment" but this would change the actual architecture which I would like not to touch (the real client is implemented by a third party). If not other solution will appear probably I will refactor the actual server to a full EJB3 web service (this Axis2 service is something which comes from a previous implementation. I already run other EJBs and that's also why Axis2 is deployed into JBoss and not into Tomcat).

Thanks for sharing your experience! I hope we will find some solution sooner or later.
Maurizio

From: Stadelmann Josef [mailto:josef.stadelmann@axa-winterthur.ch]
Sent: 02 May 2011 09:48
To: java-user@axis.apache.org
Subject: AW: Axis2 Response trunked

Hi,
I was running into very similar issues once. Not with CDATA but just with long soap xml messages.

But first, it would be nice if you can give us a bit more insight into your configuration ,OS, Frameworks used, Axis2 version, and if your client is in example a MS WCF 3.5 web service client or what? Such details are important if one should be able to help you. Isn't it? Then we like to know about exceptions raised. Where? At service or at client? Or no exception but just truncations? And if truncation where does it occur. For that you may want to switch a TCP Monitor between client and server and see if the all CDATA is put onto wire and then gets truncated at the client or if the service is unable to send all CDATA to the wire, hence what you see at the client is caused by the service.

In short is it the client or the service which is responsible for truncation?

Why do I address MS WCF 3.5 Client? Because once you successfully transmit your XML SOAP between an Axis2 Server and a MS WCF Client (99% fine) you will find that it happens sooner the later what you describe. As soon as your xml stream approaches 65536 bytes, about 20 bytes before that limit is reached, your MS WCF Client comes up with an error message stating that the message is too large. But itself, the MS WCF Client, has absolute no concerns to send to the web service documents very much larger than 65536 bytes. :) you get the point.

Then you start reading at why MS WCF 3.5 clients behaves like that, and you will find somewhere at MS WCF Forums the "lapidary" information that WCF has not been developed to transmit such large messages. And then you start thinking about transmitting in Junks, about taking other formats into consideration like MTOM é all for various reasons.

I know this is not the solution to your problem, but may be the path to go.
Josef



Von: maurizio.nagni@stfc.ac.uk [mailto:maurizio.nagni@stfc.ac.uk]
Gesendet: Donnerstag, 28. April 2011 16:05
An: java-user@axis.apache.org
Betreff: Axis2 Response trunked

Hello,

My axis2 WS is working 99% perfectly. Anyway when I want to return a quite long XML document as CDATA the response document is mysteriously truncated just in the middle of some word. That is, something that should be

<soapsomething>
<myTag>
<!CDATA[myXMLDocument]]>
</myTag>
<soapsomething>

On the client became

<soapsomething>
<myTag>
<!CDATA[myXMLDoc
</myTag>
<soapsomething>

What mostly intrigue me is that such situation happen only for some XML documents!
To be more specific I create both the WSDL and the classes through a MAVEN plugin so I just add the document as String to the Java response object created by axis, that is, I do not manipulate the XML but just the java object. In this way I can see that the document is correctly added to the response (the XML document is all and correctly into the CDATA), then it enters the AXIS internal code and then the client receives such truncated response.

I am using AXIS2 (1.5) running into JBoss

Thanks
Maurizio


--
Scanned by iCritical.


-- 
Scanned by iCritical.


AW: Axis2 Response trunked

Posted by Stadelmann Josef <jo...@axa-winterthur.ch>.
Hi,

I was running into very similar issues once. Not with CDATA but just with long soap xml messages. 

 

But first, it would be nice if you can give us a bit more insight into your configuration ,OS, Frameworks used, Axis2 version, and if your client is in example a MS WCF 3.5 web service client or what? Such details are important if one should be able to help you. Isn't it? Then we like to know about exceptions raised. Where? At service or at client? Or no exception but just truncations? And if truncation where does it occur. For that you may want to switch a TCP Monitor between client and server and see if the all CDATA is put onto wire and then gets truncated at the client or if the service is unable to send all CDATA to the wire, hence what you see at the client is caused by the service.

 

In short is it the client or the service which is responsible for truncation?

 

Why do I address MS WCF 3.5 Client? Because once you successfully transmit your XML SOAP between an Axis2 Server and a MS WCF Client (99% fine) you will find that it happens sooner the later what you describe. As soon as your xml stream approaches 65536 bytes, about 20 bytes before that limit is reached, your MS WCF Client comes up with an error message stating that the message is too large. But itself, the MS WCF Client, has absolute no concerns to send to the web service documents very much larger than 65536 bytes. J you get the point. 

 

Then you start reading at why MS WCF 3.5 clients behaves like that, and you will find somewhere at MS WCF Forums the "lapidary" information that WCF has not been developed to transmit such large messages. And then you start thinking about transmitting in Junks, about taking other formats into consideration like MTOM é all for various reasons.

 

I know this is not the solution to your problem, but may be the path to go.

Josef

 

 

 

Von: maurizio.nagni@stfc.ac.uk [mailto:maurizio.nagni@stfc.ac.uk] 
Gesendet: Donnerstag, 28. April 2011 16:05
An: java-user@axis.apache.org
Betreff: Axis2 Response trunked

 

Hello,

 

My axis2 WS is working 99% perfectly. Anyway when I want to return a quite long XML document as CDATA the response document is mysteriously truncated just in the middle of some word. That is, something that should be 

 

<soapsomething>

<myTag>

<!CDATA[myXMLDocument]]>

</myTag>

<soapsomething>

 

On the client became

 

<soapsomething>

<myTag>

<!CDATA[myXMLDoc

</myTag>

<soapsomething>

 

What mostly intrigue me is that such situation happen only for some XML documents!

To be more specific I create both the WSDL and the classes through a MAVEN plugin so I just add the document as String to the Java response object created by axis, that is, I do not manipulate the XML but just the java object. In this way I can see that the document is correctly added to the response (the XML document is all and correctly into the CDATA), then it enters the AXIS internal code and then the client receives such truncated response.

 

I am using AXIS2 (1.5) running into JBoss

 

Thanks

Maurizio

 

-- 
Scanned by iCritical.