2009-10-06 6 views
0

J'ai déployé un service Web à l'aide de servletexec configuré avec IIS et je peux accéder à un service Web en utilisant un compte anonyme. Mais lorsque j'active l'authentification intégrée de Windows, je reçois une erreur de suivi.Axis: faultString: org.xml.sax.SAXParseException: fin prématurée du fichier

- ntlm authentication scheme selected 
- Discarding unexpected response: HTTP/1.1 100 Continue 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: org.xml.sax.SAXParseException: Premature end of file. 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}hostname:akvm 

org.xml.sax.SAXParseException: Premature end of file. 
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) 
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) 
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) 
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) 
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 

Répondre

0

La « fin prématurée du fichier » erreurs de type de la mise en œuvre de xerces SAX indique généralement que l'analyseur SAX données attendues, mais ne se (pas null, mais un vide initialisé InputSource). À partir de la trace de la pile, il semble que le gestionnaire SOAP de l'axe attend un message SOAP XML, mais le message est vide. Ma connaissance d'ISS et de son infrastructure est proche de zéro, pouvez-vous obtenir des messages de log du serveur?

1

Il semble que le client Axis n'aime pas le défi d'authentification NTLM. Voir message d'erreur en haut:

Discarding unexpected response: HTTP/1.1 100 Continue 

Après quoi il n'y a pas XML pour Axis à analyser, ce qui est la raison pour laquelle vous obtenez la fin prématurée du fichier.

Pour utiliser NTLM avec l'axe (1.4), vous devrez utiliser le CommonsHTTPSender au lieu du transport standard:

<transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender"> 
</transport> 

dans votre client-config.wsdd puis configurez le nom d'utilisateur et mot de passe NTLM par la Stub objet.