Har en Tomcatserver (version 3.x) som har en servlet som ska spotta ur sig lite XML som svar på en post (jojomensan, en web service!). Servleten är väl i allmänhetens namn rätt primitiv, men den funkar fint.
Däremot har jag upptäckt någonting konstigt som har med Tomcat att göra. Jag lyckades isolera felet, och har insett att det uppstår vid POST till godtycklig jsp/servlet. För att demonstrera felet har jag gjort en enkel jsp-sida (test.jsp) som ser ut på följande vis:
<%
out.println("<form action='' method='POST'>");
out.println("<input type='submit' name='ok'>");
out.println("</form>");
%>
Det vill säga, ett minimalt formulär som postar mot sig självt. Går man in på sidan med en vanlig webbläsare (t.ex. Firefox) och trycker på submit (vilket alltså gör en POST mot samma sida) ser det ut precis som man väntar sig. Däremot, gör man en POST via telnet från kommandoraden, kan en session se ut så här (kursivt = min input, vanlig text = svaret från servern, fetstilt = det intressanta):
[i]$ telnet [url]www.theserver.com[/url] 80
POST /directory/test.jsp HTTP/1.1
Host: [url]www.theserver.com[/url]
Content-length: 7
foo=bar[/i]
HTTP/1.1 200
Date: Thu, 17 Feb 2005 12:07:05 GMT
Server: Apache/1.3.33 (Unix) mod_jk mod_ssl/2.8.22 OpenSSL/0.9.7e
Set-Cookie2: JSESSIONID=blah blah blah
Set-Cookie: JSESSIONID=blah blah blah
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
[b]49[/b]
<form action='' method='POST'>
<input type='submit' name='ok'>
</form>
[b]0[/b]
Det fetmarkerade "49" varierar, och är en hexadecimal siffra som anger hur många bytes http-bodyn är på. Nollan som kommer sist är alltid en nolla. Kan någon förklara för mig var dessa siffror kommer ifrån? :q
Debugnivån i web.xml är satt till noll.
Det jobbiga är att detta gör att vår utdata som skickas från servleten inte blir korrekt xml, vilket i allra högsta grad ställer till det...