org.xml.sax.SAXParseException:birt 2.3.2和firefox 15的文件过早结束

时间:2012-10-05 14:30:16

标签: birt

我们正在使用Birt 2.3.2。 我们试图在Firefox 15.0.1中打开我们的报告,我们得到异常“org.xml.sax.SAXParseException:文件过早结束”而没有堆栈跟踪。

我们尝试调试它,发现firefox发送了错误的内容类型。当我使用Tamper Data插件修改请求标头时,它可以工作。

发送的请求是

POST <<URL>> 
Request Headers:
Host[<<MYHOST>>]
User-Agent[Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1]
Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
Accept-Language[en-us,en;q=0.5]
Accept-Encoding[gzip, deflate]
Connection[keep-alive]
Content-Length[1702]
Content-Type[application/x-www-form-urlencoded]
Referer[<<URL>>]
request-type[SOAP]
SOAPAction[""]
X-Prototype-Version[1.4.0]
X-Requested-With[XMLHttpRequest]
Cookie[JSESSIONID=A5E874082FE87F814F32B103EE864EBF.]
Pragma[no-cache]
Cache-Control[no-cache]
Post Data:
POST_DATA[<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><<SOAPBODY>></soap:Body></soap:Envelope>]
Response Headers:
Server[Apache-Coyote/1.1]
X-Powered-By[Servlet 2.5; JBoss-5.0/JBossWeb-2.1]
Content-Type[text/xml;charset=utf-8]
Transfer-Encoding[chunked]
Date[Fri, 28 Sep 2012 00:05:39 GMT]
Connection[close]

当我们将Content-Type修改为text / xml时; charset = UTF-8,它有效

它也适用于chrome和IE,有时它适用于FF,但在我们重新启动FF之后会出现问题。

有没有办法解决它?

On server we are getting following exception

jvm 1    | java.io.CharConversionException: isHexDigit
jvm 1    |      at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:88)
jvm 1    |      at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:49)
jvm 1    |      at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:429)
jvm 1    |      at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:412)
jvm 1    |      at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:363)
jvm 1    |      at org.apache.catalina.connector.Request.parseParameters(Request.java:2562)
jvm 1    |      at org.apache.catalina.connector.Request.getParameterNames(Request.java:1102)
jvm 1    |      at org.apache.catalina.connector.Request.getParameterMap(Request.java:1082)
jvm 1    |      at org.apache.catalina.connector.RequestFacade.getParameterMap(RequestFacade.java:414)
jvm 1    |      at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:196)
jvm 1    |      at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
jvm 1    |      at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
jvm 1    |      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
jvm 1    |      at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
jvm 1    |      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
jvm 1    |      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

2 个答案:

答案 0 :(得分:0)

如果从servlet使用引擎,请确保在响应中设置内容类型:

response.setContentType( “text / html的”);

答案 1 :(得分:0)

我认为这是一个已知的错误listed on Eclipse bug list

看评论#6:

  

解决方法是注释掉webcontent / birt / ajax / lib / prototype.js的第668和669行

     

在评论这些内容之前,Chrome会将内容类型发送为“application / x-www-form-urlencoded,text / xml; charset = UTF-8”,这会导致异常。

     

在排除这些行之后,Chrome会将Content-type发送为“text / xml; charset = UTF-8”,就像其他行为良好的浏览器一样:)

     

BIRT报告附带的prototype.js看起来相当古老,因为该部分代码已经在版本1.5.0_rc0中修改了4年多以前