Erreur "Premature end of file" / ServletFilter
Bonjour,
J'ai créé un filter sur ma servlet d'Axis pour l'entrée des requêtes Soap de manière à récupérer la requête Soap pour la traiter ailleurs.
Donc j'ai une ServletFilter qui est mappé à ma servlet axis "/services/*" et donc pour chaque appel à un web service elle va rentrer dans le filtre.
Voici le code du DoFilter :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try
{
InputStream in=request.getInputStream();
StringBuffer xmlStr=new StringBuffer();
int d;
while((d=in.read()) != -1){
xmlStr.append((char)d);
}
System.out.println("Requête SOAP : "+xmlStr.toString());
chain.doFilter(request,response);
} catch (IOException io) {
System.out.println ("IOException raised in SimpleFilter");
} catch (ServletException se) {
System.out.println ("ServletException raised in SimpleFilter");
}
} |
Donc je cherche uniquement à afficher ma requête entrante sauf que le problème c'est lorsque je fais appel à mon Web Service via SOAPUI, j'ai ça en réponse :
Code:
1 2 3 4 5 6 7 8 9 10 11
| <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>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXParseException: Premature end of file.</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">EQ-300523178</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope> |
J'ai regardé pas mal sur google et malheureusement, je n'ai rien trouvé de convaincant.
Et je précise que si je commente ma boucle qui écrit dans mon buffer, j'ai pas de problème, comme ci il avait pas le temps de tout écrire ou je ne sais quoi.
Merci d'avance