【问题标题】:Oracle Form hangs frequentlyOracle Form 经常挂起
【发布时间】:2019-02-11 09:55:17
【问题描述】:

无法理解为什么表单经常挂起并尝试分析线程转储。没有发现死锁。请帮我解决这个问题?

我正在使用我们的自动化工具(使用 jemmy 进行自动化)测试 Oracle EBS 表单上的一些事务。执行操作时,表单变得无响应。我用的是最新的java版本(1.8.0.201),IE11浏览器。

有时,表单一打开,一个操作后,表单就会挂起。 疑似出现了僵局。所以进行了线程转储,它没有显示死锁。但是许多线程处于等待状态和可运行状态。

例如,我在这篇文章中发布了两个线程堆栈跟踪。 请建议如何找到问题并解释我是否有任何学习。

1)

AWT-EventQueue-1 - priority:6 - threadId:0x083b0000 - nativeId:0xd08 - 
nativeId (decimal):3336 - state:WAITING
stackTrace:
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x159e3750> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.awt.EventQueue.getNextEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.SequencedEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
    Locked ownable synchronizers:
   - None

2)

AWT-EventQueue-1 - priority:6 - threadId:0x083b0000 - nativeId:0xd08 - nativeId (decimal):3336 - state:WAITING
stackTrace:
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x159e3750> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.awt.EventQueue.getNextEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.SequencedEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Locked ownable synchronizers:
- None

【问题讨论】:

  • 如果可能,在 Forms Builder 中以调试模式运行表单。将断点设置为 WHEN-NEW-FORM-INSTANCE 触发器。在那里设置参数的值。逐步浏览表单。希望你能找到罪魁祸首。但是,如果您必须使用“jemmy”(不管它是什么),那就没有更多的想法了,抱歉。
  • 您的产品版本是多少? (如 12.x.x..)
  • 版本为 12.2.4

标签: java multithreading oracle threadpool deadlock


【解决方案1】:

这是一种内存不足错误

您似乎需要应用补丁:21187539 通过 Oracle 支持并使用 Opatch Utility 版本 12.1.0.2.0 > 和以后

【讨论】:

  • 如果是内存问题,我如何确认?是客户端还是服务器端?在客户端,我在windows任务管理器中尝试过,性能选项卡在那里,剩余内存在哪里可见,清晰到有内存空间。
  • @HimaaS 我想服务器端存在配置错误,可能与负载平衡有关,或者生产环境的未测试参数值。顺便问一下,贵公司是否还有其他人抱怨此类问题?
  • 到目前为止,我只在一台机器上遇到过这个问题。在其他机器上,它不会被复制。
  • @HimaaS 然后,您可以检查本地 weblogic 服务器的配置,或者应用补丁。
  • 这是什么 21187539?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2021-06-28
  • 2011-07-29
相关资源
最近更新 更多