2009-10-06 90 views
0

我已经使用配置了IIS的servletexec部署了webservice,并且我可以使用匿名帐户成功访问webservice。但是,当我启用Windows集成身份验证时,我收到以下错误。Axis:faultString:org.xml.sax.SAXParseException:文件过早结束

- 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) 

回答

0

“文件过早结束”执行从Xerces SAX实现类型的错误通常表明SAX解析器预期的数据,但有没有(不null,而是一个初始化空InputSource)。从堆栈跟踪看来,轴SOAP处理程序期望SOAP xml消息到达,但消息是空的。我对ISS及其基础设施的了解接近零,你能从服务器获取任何日志消息吗?

1

看起来Axis客户端不喜欢NTLM身份验证质询。看到错误消息在顶部:

Discarding unexpected response: HTTP/1.1 100 Continue 

之后没有XML的轴来解析,这就是为什么你得到文件过早结束。

为了使用NTLM轴(1.4),你将不得不使用CommonsHTTPSender而不是标准的运输:

<transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender"> 
</transport> 
client-config.wsdd,然后设置过的NTLM用户名和密码

Stub对象。