I highly doubt that what you're experiencing has anything to do with
Xerces. It's just calling read() on an InputStream like any other and this
one just happens to block in the underlying socket I/O layer (as it
presumably waits for more input). What might cause a hang at that layer in
the JDK and how to work around it (e.g. perhaps setting a shorter timeout)
is a good question though better asked in another forum.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [email protected]
E-mail: [email protected]

강경태 <[email protected]> wrote on 04/28/2009 02:59:10 PM:

> Hi,
>
> I’m using xercesImpl-2.8.1.jar in tomcat 5.5.20.
> This xerces caused tomcat hang a few days ago.
>
> The thread locks happened after XMLEntityScanner' load method was
excuted.
> I know there is no the load method of XMLEntityScanner class in version
2.9.
> I want to know thre load method of XMLEntityScanner class is bug.
> Many java.io.Exception situations after XMLEntityScanner' load call
> were searched in Google.
>
> Please help.
>
> Thanks.
>
> Sample thread of java thread dump follow:
>
> "TP-Processor325" daemon prio=1 tid=0x69eaed00 nid=0xcf0 runnable
> [0x68705000..0x687061b0]
>          at java.net.SocketInputStream.socketRead0(Native Method)
>          at java.net.SocketInputStream.read(SocketInputStream.java:129)
>          at
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>          at
java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
>          at
java.io.BufferedInputStream.read(BufferedInputStream.java:313)
>          - locked <0x8eece9e0> (a java.io.BufferedInputStream)
>          at sun.net.www.http.ChunkedInputStream.
> fastRead(ChunkedInputStream.java:221)
>          at sun.net.www.http.ChunkedInputStream.
> read(ChunkedInputStream.java:662)
>          - locked <0x8eecea00> (a sun.net.www.http.ChunkedInputStream)
>          at java.io.FilterInputStream.read(FilterInputStream.java:111)
>          at sun.net.www.protocol.http.
> HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2172)
>          at org.apache.xerces.impl.
> XMLEntityManager$RewindableInputStream.read(Unknown Source)
>          at sun.nio.cs.StreamDecoder$CharsetSD.
> readBytes(StreamDecoder.java:411)
>          at sun.nio.cs.StreamDecoder$CharsetSD.
> implRead(StreamDecoder.java:453)
>          at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
>          - locked <0x8eeceab0> (a java.io.InputStreamReader)
>          at java.io.InputStreamReader.read(InputStreamReader.java:167)
>          at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
>          at org.apache.xerces.impl.XMLEntityScanner.peekChar(Unknown
Source)
>          at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.
> scanCDATASection(Unknown Source)
>          at org.apache.xerces.impl.
> XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.
> dispatch(Unknown Source)
>          at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.
> scanDocument(Unknown Source)
>          at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>          at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
>          at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>          at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
Source)
>          at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.
> parse(Unknown Source)
>          at
org.apache.commons.digester.Digester.parse(Digester.java:1704)
>          at com.naver.local.weather.common.DigesterParser.
> parse(Unknown Source)
>          at com.naver.local.weather.common.bo.WeatherBaseBOImpl.
> getWeeklyWeatherBeginToday(Unknown Source)
>          at com.naver.local.weather.common.bo.WeatherBaseBOImpl.
> getCityWeather(Unknown Source)
>          at com.naver.local.weather.common.interceptor.
> LocalInjectInterceptor.setLeftFrameData(Unknown Source)
>          at com.naver.local.weather.common.interceptor.
> LocalInjectInterceptor.intercept(Unknown Source)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.PermissionInterceptor.
> intercept(PermissionInterceptor.java:71)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.UserInterceptor.
> intercept(UserInterceptor.java:88)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.MDCLoggingInterceptor.
> intercept(MDCLoggingInterceptor.java:36)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.PagerInfoInterceptor.
> intercept(PagerInfoInterceptor.java:67)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.MetaCharsetInterceptor.
> intercept(MetaCharsetInterceptor.java:50)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.naver.local.weather.common.interceptor.
> ContentFilterInterceptor.intercept(Unknown Source)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.nhncorp.lucy.web.interceptor.
> RequestParamsInterceptor.intercept(RequestParamsInterceptor.java:44)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.AroundInterceptor.
> intercept(AroundInterceptor.java:31)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.AroundInterceptor.
> intercept(AroundInterceptor.java:31)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.interceptor.
>
ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186)
>          at com.opensymphony.xwork.DefaultActionInvocation.
> invoke(DefaultActionInvocation.java:190)
>          at com.opensymphony.xwork.DefaultActionProxy.
> execute(DefaultActionProxy.java:116)
>          at com.opensymphony.webwork.dispatcher.DispatcherUtils.
> serviceAction(DispatcherUtils.java:225)
>          at com.opensymphony.webwork.dispatcher.FilterDispatcher.
> doFilter(FilterDispatcher.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.opensymphony.webwork.dispatcher.
> ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.nhncorp.lucy.web.filter.WebworkActionCheckFilter.
> doFilter(WebworkActionCheckFilter.java:75)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at com.nhncorp.lucy.web.filter.ServiceFilter.
> doFilter(ServiceFilter.java:85)
>          at org.apache.catalina.core.ApplicationFilterChain.
> internalDoFilter(ApplicationFilterChain.java:202)
>          at org.apache.catalina.core.ApplicationFilterChain.
> doFilter(ApplicationFilterChain.java:173)
>          at org.apache.catalina.core.StandardWrapperValve.
> invoke(StandardWrapperValve.java:213)
>          at org.apache.catalina.core.StandardContextValve.
> invoke(StandardContextValve.java:178)
>          at org.apache.catalina.core.StandardHostValve.
> invoke(StandardHostValve.java:126)
>          at org.apache.catalina.valves.ErrorReportValve.
> invoke(ErrorReportValve.java:105)
>          at org.apache.catalina.core.StandardEngineValve.
> invoke(StandardEngineValve.java:107)
>          at org.apache.catalina.connector.CoyoteAdapter.
> service(CoyoteAdapter.java:148)
>          at org.apache.jk.server.JkCoyoteHandler.
> invoke(JkCoyoteHandler.java:199)
>          at org.apache.jk.common.HandlerRequest.
> invoke(HandlerRequest.java:282)
>          at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
>          at org.apache.jk.common.ChannelSocket.
> processConnection(ChannelSocket.java:697)
>          at org.apache.jk.common.ChannelSocket$SocketConnection.
> runIt(ChannelSocket.java:889)
>          at org.apache.tomcat.util.threads.
> ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>          at java.lang.Thread.run(Thread.java:595)

Reply via email to