-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi everybody,

i have written a small application which connects to tomcat, sends some
data and recieves some data.

the problem i have is that tomcat suddenly sets the tcp window size to
zero so that the application stopps sending data and tomcat starts
sending its response before the request is finished. this only happens
when sending large data (ca 90+ kb)

can somebody tell me why this is happening and how to prevent tomcat
from doing that!?







Application Code ...
- -------------------------


Socket ClientSocket = null; OutputStreamWriter Sender = null; InputStreamReader Reciever = null;

~ StringBuffer XMLBuffer = new StringBuffer();



try {

                        ClientSocket = new Socket(IPAddress, Port);
                        Sender = new 
OutputStreamWriter(ClientSocket.getOutputStream());
                        Reciever = new 
InputStreamReader(ClientSocket.getInputStream());


} catch (UnknownHostException e) { System.err.println("Unknown host: " + IPAddress); } catch(IOException e){ System.err.println("IOException: " + IPAddress + " -> " + e.getMessage()); }


~ try{ ~ /*

~            POST /RPC2 HTTP/1.0
~            User-Agent: Frontier/5.1.2 (WinNT)
~            Host: betty.userland.com
~            Content-Type: text/xml
~            Content-length: 181

~            <?xml version="1.0"?>
~            <methodCall>
~                <methodName>examples.getStateName</methodName>
~                 <params>
~                    <param>
~                        <value><i4>41</i4></value>
~                    </param>
~                </params>
~            </methodCall>
~            */
~            /* POST */
~            // + SourcePath + "/data/Text?id=1&edt="+id+"
~            String Message = new String(Method + " " + File +"
HTTP/1.1\r\n");
~            Sender.write(Message,0,Message.length());

~            /* HOST */
~            Message = new String("Host: "+ IPAddress +":" + Port + "\r\n");
~            Sender.write(Message,0,Message.length());

~            Message = new String("Content-Type: text/xml\r\n");
~            Sender.write(Message,0,Message.length());

~            Message = new String("Transfer-Encoding: chunked\r\n");
~            Sender.write(Message,0,Message.length());

~            Message = new String("Content-Length: "+Data.length()+"\r\n");
~            Sender.write(Message,0,Message.length());

~            Message = new String("Connection: close\r\n\r\n");
~            Sender.write(Message,0,Message.length());

~            System.out.println("chunked:" + 0x2000 + "\nData.length():"
+ Data.length());

~            if (Data.length() < 0x2000) {
~                Sender.write(Data.length()+"\r\n");
~                Sender.write(Data,0,Data.length());
~                Sender.write("\r\n",0,2);
~                Sender.flush();
~                }
~            else {
~                int a;
~                for (a = 0; a < (Data.length() - 0x2000); a = a + 0x2000) {
~                    Sender.write("2000\r\n");
~                    Sender.write(Data.substring(a,a+0x2000),0,0x2000);
~                    Sender.write("\r\n",0,2);
~                    Sender.flush();
~                    }
~                int b = (Data.length() - a);
~                System.out.println("a:" + a + "\nb:" + b +
"\nData.length():" + Data.length());
~                if (b < 0x2000) {
~                    Sender.write(b + "\r\n");
~                    Sender.write(Data.substring(Data.length() -
b,Data.length()),0,b);
~                    Sender.write("\r\n",0,2);
~                    Sender.flush();
~                    }
~                }

~            Sender.write("0",0,1);
~            Sender.write("\r\n",0,2);
~            Sender.flush();

                } catch (UnknownHostException e) {
                         System.err.println("getServer() : Unknown host: " + 
IPAddress);
                } catch(IOException e){
                         System.err.println("getServer() : IOException: " + IPAddress + " 
->
" + e.getMessage());
                }



~ try {

~            int c;
~            while (Reciever.ready()) {
~                c = Reciever.read();
~                XMLBuffer.append((char)c);
~                }
~            /*String test[];
~            // header / body
~            test = XMLBuffer.toString().split("\r\n\r\n");
*/
~        }catch (EOFException e){
~        }catch (Exception e) {
~            System.out.println("getServer() : Exception Cought: " +
e.getMessage());
~            return null;
~            }

~ return XMLBuffer.toString();









Tomcat Servlet Code ...
- -------------------------

~ ImageData Data = new ImageData();

~            if (request.getMethod().equals("POST")) {
~                try {
~                    StringBuffer Body = new StringBuffer();
~                    InputStreamReader BodyReader = new
InputStreamReader(request.getInputStream());

~                    int c;
~                    while (BodyReader.ready()) {
~                        c = BodyReader.read();
~                        Body.append((char)c);
~                        }

~ Data.getDataXML(Body.toString());

~                }catch (Exception e) {
~                    getLogger().writeToLog("Exception caught while
reading and Parsing Body: " + e.getMessage());
~                    }

~ try{

Data.updateDataSQL(JDBCDriver,JDBCPath,JDBCUser,JDBCPasswd,Edit);
~                }catch(Exception e){
~                    getLogger().writeToLog("Database Write Statement
Error: " + e.toString() + " -> " + Edit);
~                    }
~            }

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)

iD8DBQFADom76KDWbLpq3loRAj3CAJ9WZEym064cGSKEnxidDg02Y9bL3wCgg58V
h8/rpdJqwAI03dhGO8oCkpM=
=CMkd
-----END PGP SIGNATURE-----


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to