Ok, after hours of wondering why my packet sniffing tool didn't catch up the tcp stream from eclipse I figured out what exactly the Web Service Explorer in eclipse sends to the server.
Changing some parameters in my ajax call changed the http code from the previous 500 to 501 which was good somehow. With that information I know that some headers must be missing. The monitored tcp stream looked like:
POST /axis2/services/SimpleService/ HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 325
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: IBM Web Services Explorer
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://ttdev.com/ss/NewOperation"
Connection: close
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ttdev.com/ss" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<q0:concatRequest>
<s1>asdf</s1>
<s2>1234</s2>
</q0:concatRequest>
</soapenv:Body>
</soapenv:Envelope>
HTTP/1.1 200 OK
Date: Wed, 12 Jan 2011 15:06:51 GMT
Server: Simple-Server/1.1
Transfer-Encoding: chunked
Content-Type: text/xml; charset=utf-8
Connection: close
d1
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:concatResponse xmlns:ns1="http://ttdev.com/ss">asdf1234</ns1:concatResponse>
22
</soapenv:Body></soapenv:Envelope>
0
Aha, the SOAPAction was missing and the contentType wasn't set to application/soap+xml (but application/xml should also work as soap is xml). I don't know what d1 and the latter 0 means, maybe there's something wrong with the encoding (in my packet sniffer). The corresponding symbols with these hex codes don't make any sense. But as the server is responding back correctly those symbols seem to have no impact.
I'll post the ajax call very soon for those who are interested in that.