技术文章 - CS169825

使用 org.apache.log4j.ConsoleAppender 会导致 MethodServer 死锁或在 Windchill PDMLink 中无响应

已修改: 22-Dec-2022   


注意:本文已使用机器翻译软件翻译,以方便非英语客户阅读。但翻译内容可能包含语法错误或不准确之处。请注意, PTC对本文所含信息的翻译准确性及使用后果不承担任何责任。请在 此处 查看本文的英文原始版本以便参考。有关机器翻译的更多详情,请单击 此处
感谢您告诉我们。我们将尽快审阅此译文。

适用于

  • Windchill PDMLink 9.1 to 10.2

说明

  • 在 MethodServer 或 ServerManager 中使用org.apache.log4j.ConsoleAppender会导致 Windchill死锁或无响应
  • 示例堆栈跟踪如下
“ajp-bio-8010-exec-7”:
在 org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
- 等待锁定 <0x0000000710ebe788>(一个org.apache.log4j.ConsoleAppender
在 org.apache.log4j.helpers.AppenderAttachableImpl5.appendLoopOnAppenders(AppenderAttachableImpl5.java:79)
在 org.apache.log4j.Category.callAppenders(Category.java:206)
在 wt.log4j.jmx.LogPrintStream$LogOutputStream.write(LogPrintStream.java:92)
在 java.io.OutputStream.write(OutputStream.java:99)
在 java.io.PrintStream.write(PrintStream.java:430)
- 锁定 <0x00000007001c6828>(一个 wt.log4j.jmx.LogPrintStream)
在 sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
在 sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
在 sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:85)
- 锁定 <0x00000007001c68a8>(java.io.OutputStreamWriter)
在 java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:168)
在 java.io.PrintStream.newLine(PrintStream.java:496)
- 锁定 <0x00000007001c6828>(一个 wt.log4j.jmx.LogPrintStream)
在 java.io.PrintStream.println(PrintStream.java:757)
- 锁定 <0x00000007001c6828>(一个 wt.log4j.jmx.LogPrintStream)
在 org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:264)
在 org.apache.log4j.helpers.LogLog.error (LogLog.java:129)
在 org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:254)
- 锁定 <0x000000070011f890>(一个 wt.log4j.jmx.DailyRollingFileAppender)
在 org.apache.log4j.helpers.AppenderAttachableImpl5.appendLoopOnAppenders(AppenderAttachableImpl5.java:79)
在 org.apache.log4j.Category.callAppenders(Category.java:206)
在 org.apache.log4j.Category.forcedLog(Category.java:390)
在 org.apache.log4j.Category.log(Category.java:825)
在 wt.servlet.ServletRequestMonitor.endRequest(ServletRequestMonitor.java:2848)
在 wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1617)
在 wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
- 锁定 <0x000000070edf5168>(一个 org.apache.tomcat.util.net.SocketWrapper)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
在 java.lang.Thread.run(Thread.java:662)
在 org.apache.tomcat.util.threads.TaskThread.run(TaskThread.java:77)


“ajp-bio-8010-exec-2”:
在 java.io.PrintStream.write(PrintStream.java:428)
- 等待锁定 <0x00000007001c6828>(一个 wt.log4j.jmx.LogPrintStream)
在 org.apache.tomcat.util.log.SystemLogHandler.write(SystemLogHandler.java:174)
在 sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
在 sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
在 sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
在 sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
- 锁定 <0x0000000710ebef48>(java.io.OutputStreamWriter)
在 java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
在 org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:59)
在 org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:325)
在 org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
在 org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:257)
- 锁定 <0x0000000710ebe788>(一个 org.apache.log4j.ConsoleAppender)
在 org.apache.log4j.helpers.AppenderAttachableImpl5.appendLoopOnAppenders(AppenderAttachableImpl5.java:79)
在 org.apache.log4j.Category.callAppenders(Category.java:206)
在 org.apache.log4j.Category.forcedLog(Category.java:390)
在 org.apache.log4j.Category.error(Category.java:321)
在 wt.method.MethodContext.unregisterDeadContexts(MethodContext.java:1286)
- 锁定 <0x0000000711364d90>(一个 wt.method.MethodContext)
在 wt.httpgw.WTContextBean$ServerContextHelper.activateServerContext(WTContextBean.java:629)
在 wt.httpgw.WTContextBean.activateServerContext(WTContextBean.java:537)
在 wt.httpgw.WTContextBean.activate(WTContextBean.java:457)
在 wt.httpgw.WTContextBean.setRequest(WTContextBean.java:311)
在 wt.httpgw.WTContextBeanHandler.setRequest(WTContextBeanHandler.java:199)
在 wt.httpgw.WTContextBeanHandler.<init>(WTContextBeanHandler.java:151)
在 wt.httpgw.filter.WTContextBeanFilter.doWithWtContextBeanHandler(WTContextBeanFilter.java:92)
在 wt.httpgw.filter.WTContextBeanFilter.doFilter(WTContextBeanFilter.java:58)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 wt.servlet.CompressionFilter.doFilter(CompressionFilter.java:237)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 wt.servlet.RequestInterrupter.doFilter(RequestInterrupter.java:327)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 wt.servlet.ServletRequestMonitor.doFilter(ServletRequestMonitor.java:1594)
在 wt.servlet.ServletRequestMonitorFilter.doFilter(ServletRequestMonitorFilter.java:56)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
- 锁定 <0x000000070ee44fb8>(一个 org.apache.tomcat.util.net.SocketWrapper)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
在 java.lang.Thread.run(Thread.java:662)
在 org.apache.tomcat.util.threads.TaskThread.run(TaskThread.java:77)
这是文章 169825 的 PDF 版本,可能已过期。最新版本 CS169825