天道酬勤,学无止境

How do I ignore stuck threads in a Weblogic Server

I've got the below code working on Weblogic Application Server 10.3.2. The long running task executed on timerExpired takes longer than the server wide StuckThreadMaxTime of 600 seconds. I do not want to modify this value, but just to ignore the stuck thread timeout for this particular thread of processing.

I can see how this can be accomplished using a commonj WorkManager from this: http://download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1069945

And then by adding the following to the work-manager tag in the weblogic.xml file:

<ignore-stuck-threads>true</ignore-stuck-threads>

But how on earth do I do the same for a Timer/TimerManager?

web.xml

<resource-ref>
 <res-ref-name>tm/TestTimer</res-ref-name>
 <res-type>commonj.timers.TimerManager</res-type>
 <res-auth>Container</res-auth>
 <res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>  

TestTimer.java:

import commonj.timers.Timer;
import commonj.timers.TimerListener;
import commonj.timers.TimerManager;

public class TestTimer implements TimerListener {
    public void init() 
       TimerManager timerManager =    
          (TimerManager)initContext.lookup("java:comp/env/tm/TestTimer");
       timerManager.schedule(this, SCHEDULE_DELAY);                             

    }

    @Override
    public void timerExpired(Timer timer) {
        // perform long-running task    
    }
}

评论

I took the easy way out (time pressures) by doing the processing in work scheduled by a WorkManager when the timer expires.

public MyClass implements TimerListener, Work
    @Override
    public void timerExpired(Timer timer) throws Exception {    
        WorkManager workManager = initContext.lookup("wm/myworkmanager");
        workManager.schedule(this);                 
    }

    @Override
    public void run() {
        doWork();
    }
}

web.xml

<resource-ref>
    <res-ref-name>wm/myworkmanager</res-ref-name>
    <res-type>commonj.work.WorkManager</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>

weblogic.xml

<wls:work-manager>
    <wls:name>wm/myworkmanager</wls:name>        
    <wls:ignore-stuck-threads>true</wls:ignore-stuck-threads>
</wls:work-manager>

I havent tried this, but adding this entry in weblogic.xml should work

<work-manager>
       <name>timer/TestTimer</name>
       <ignore-stuck-threads>true</ignore-stuck-threads>
    </work-manager>

The name matches res-ref-name in web.xml

My server started up with the Timer okay, I havent tested your client to see if the stuck thread messages are ignored

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • weblogic10.3.6补丁信息Patch 10.3.6.0.200714以及安装步骤
    Oracle® WLS Patch Set Update 10.3.6.0.200714 README This README provides information about how to apply WLS Patch Set Update 10.3.6.0.200714. It also provides information about reverting to the original version. Oracle recommends that you see following key notes - My Oracle Support NOTE: 1306505.1 Announcing Oracle WebLogic Server PSUs (Patch Set Updates) https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx?id=1306505.1 - My Oracle Support NOTE: 1470197.1 Master Note on WebLogic Server Patch Set Updates (PSUs) https://support.oracle.com/oip/faces/secure/km/DocumentDisplay.jspx
  • 卡在UIComponent.popComponentFromEL上的线程(Stuck thread at UIComponent.popComponentFromEL)
    问题 我的应用程序将JSF 2.1与PrimeFaces结合使用。 最近,由于线程卡住而导致CPU使用率很高。 所有卡住线程的卡住线程转储指向javax.faces.component.UIComponent.popComponentFromEL如下所示: javax.faces.component.UIComponent.popComponentFromEL(UIComponent.java:1934) javax.faces.component.UIComponent.visitTree(UIComponent.java:1633) javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) org.primefaces.component.api.UIData.visitRows(UIData.java:741) org.primefaces.component.api.UIData.visitTree(UIData.java:656) javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) org.primefaces.component.accordionpanel.AccordionPanel.visitTree
  • Weblogic10.3.6升级2020年7月补丁p31178492_1036_Generic.zip实践
    操作系统:Windows JDK版本:jdk1.6Weblogic版本:10.3.6.0 补丁:p31178492_1036_Generic.zip (文章结尾标有修复的内容)说明:Windows升级操作与Linux基本相通,此次实践操作亲测有效,本文仅供参考。 不多说直接开整 一、解压补丁 将补丁p31178492_1036_Generic.zip 解压到 D:\Oracle\Middleware\utils\bsu\cache_dir目录中 二、修改参数 修改D:\Oracle\Middleware\utils\bsu\bsu.cmd中的参数 set MEM_ARGS=-Xms1024m -Xmx4096m 三、查看升级前版本信息 cd D:\Oracle\Middleware\utils\bsu> bsu.cmd -view -status=applied -prod_dir=D:\Oracle\Middleware\wlserver_10.3 -verbose 四、开始执行补丁升级 cd D:\Oracle\Middleware\utils\bsu> bsu.cmd -install -verbose -patch_download_dir=D:\Oracle\Middleware\utils\bsu\cache_dir -patchlist=I37G -prod_dir
  • Stuck thread at UIComponent.popComponentFromEL
    My application uses JSF 2.1 with PrimeFaces. Recently, very high CPU Utilization was observed because of some stuck threads. The stuck thread dump for all stuck threads pointed to javax.faces.component.UIComponent.popComponentFromEL like below: javax.faces.component.UIComponent.popComponentFromEL(UIComponent.java:1934) javax.faces.component.UIComponent.visitTree(UIComponent.java:1633) javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) org.primefaces.component.api.UIData.visitRows(UIData.java:741) org.primefaces.component.api.UIData.visitTree(UIData.java:656) javax.faces
  • Weblogic 还是 JBoss? [关闭](Weblogic or JBoss? [closed])
    问题 就目前而言,这个问题不适合我们的问答形式。 我们希望答案得到事实、参考或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。 如果您认为此问题可以改进并可能重新打开,请访问帮助中心以获取指导。 8 年前关闭。 我是 JBoss(和 Tomcat)的长期 Java 开发人员。 去年我不得不通过 WebLogic 进行开发,我不得不说 - 我真的很想念 JBoss。 由于我对 WebLogic 的经验非常浅薄,所以我问了那里更有经验的人:是否有理由在 WebLogic 上花钱? JBoss 不是为您提供所需的一切吗? 回答1 我怀疑 Weblogic 被选中的原因是一个愉快的销售人员来拜访一位有钱的经理,给他推销,嘿嘿,公司正在使用 Weblogic。 我不知道 JBoss 支持合同是否有销售队伍,但如果有,并且在这方面的竞争环境已经趋于平衡,我会感到惊讶。 根据我的经验,除了您使用 Weblogic 获得的漂亮控制台(不值得支付许可费)之外,两者之间没有太多。我怀疑这些天 JBoss 拥有市场份额(只是猜测),这在我看来当您遇到某些问题时,这本书可以转化为更多在线帮助。 还值得考虑的是 Weblogic 许可证(我上次看到它们时)通常使用服务器端条款 - 每处理器、每盒等。这将限制您在可扩展性方面,因为使用 JBoss,您可以继续添加硬件而不会发生额外费用,而使用
  • 线程转储分析工具/方法(Thread Dump Analysis Tool / Method [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 当Java应用程序挂起时,您甚至都不知道导致这种情况的用例,并且想要调查一下,我知道线程转储会很有用。 但是,我们如何轻松地从线程转储中导出有用的数据以查找问题出在哪里呢? 我一直在使用的服务器应用程序会产生很长的线程转储,因为它是EJB架构,并且线程转储包含许多我不确定应该查看的容器线程(即未运行我的应用程序代码的线程) ,但JBoss的代码)。 昨天,我尝试了“线程转储分析器”工具。 该工具绝对比在文本编辑器中查看原始线程转储更好,因为您可以过滤掉不感兴趣的线程,查看线程列表,单击线程以查看其详细信息,比较线程转储以查找长时间运行的线程等 但是仍然有太多数据需要分析-近300个线程。 我不知道有什么标准可以用来过滤我不感兴趣的所有JBoss线程。 我不确定是否只应查看当前处于“可运行”状态的线程,还是“等待条件”和“ in Object.wait”是否也很重要。 您通常会采用哪种方法以及通常使用的工具? 回答1 仅靠一组线程转储并不能帮助您找到根本原因。 诀窍是每间隔5秒进行4或5组线程转储。 因此,最后您将拥有一个日志文件
  • Linux上安装Weblogic
    安装WeblogicWebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器,由美国Oracle公司出品,是一个基于JAVAEE架构的中间件,它将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。基本概念容器:Web容器:运行jsp/servlet等表示层逻辑组件。EJB容器:运行javabean,enterprise javabean等业务层逻辑组件。Weblogic:BEA WebLogic Server:用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应 用的Java应用服务器。Domain:域是个逻辑概念,用来组织管理一系列的应用服务器实例。WebLogic应用服务器启动的时候就是以某个域来启动的,它有一个中心配置文件叫config.xml。Cluster:群集,也是一个逻辑概念,用来分组用途相同的服务器实例,一个域中可以有多个服务。Cluster实现均衡负载和容错。Administration Server:管理服务器是用来管理配置域的中心点,一般来说,管理服务器上是不部署应用程序的,而是用来统一管理、配置、监控被管理服务器以及部署应用程序到被管理服务器上。一个域中有一台管理服务器。Managed Server
  • Weblogic Server 11g 上的自定义线程(Custom Thread on Weblogic Server 11g)
    问题 我的 weblogic 服务器上需要一个自定义线程; 我不能使用 TimerEJB 或 Delayed MDB,因为我必须使用 3d 库。 我知道不鼓励应用服务器上的自定义线程; 这里有一篇相关的帖子(4 岁):为什么不鼓励在 Java EE 容器中生成线程? 是不是还气馁? 我可以使用ExecutorService或 Quartz 吗? 或者我只需要考虑 commonj 和工人经理? 回答1 在 Weblogic 11g (EJB3.0) 上,不鼓励创建“自己的线程执行器”(另请参阅 Java EE 规范和多线程),您应该使用: 定时器服务 例子: MyEjb { @Stateless public class TimerBean implements TimerRemote { @Resource TimerService service; @Override public void startTimer() { Timer timer = service.createTimer(1000, 1000, null); System.out.println("Timers set"); } @Timeout public void handleTimeout(Timer timer) { System.out.println("Handle timeout event
  • JAX-WS Validate Schema in WebLogic with @SchemaValidation
    I wasn't able to find the solution and I found more people stuck in the same problem so I will post it here. By default a JAX-WS server (at least for WebLogic) will not validate the message received with its associated schema. This can lead to a lot of problems since any invalid value (wrong xsd:dateTime format, letters on a number field, etc) will result in a null value in the Java object, including mandatory fields. What I need to do is a simple validation that should be provided by the server. import com.sun.xml.internal.ws.developer.SchemaValidation; @Stateless @WebService(portName=
  • 如何在Eclipse中使用Weblogic? [关闭](How to work with Weblogic in Eclipse? [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 2年前关闭。 改善这个问题 eclipse与weblogic配合使用的推荐插件是什么? 具体来说,我需要使用旧版本的weblogic 8.1,但是我可以使用任何版本的Ecplise。 我想调试应用程序并设置断点等。 我的更大任务是将项目移至Jboss,我是否可以在Eclipse中的两个应用程序服务器上部署相同的应用程序,大概需要两套配置文件,等等,有什么建议吗? 2个独立的项目? 回答1 如果将Eclipse与WTP一起使用,则可以通过其他服务器适配器使用Weblogic Integration。 要获取它,请右键单击“服务器”视图,然后选择“新建”>“服务器” ,然后单击“下载其他服务器适配器” 。 从列表中选择Oracle扩展,然后继续安装。 安装后,您将能够从8.1版到11g添加用于WebLogic的新服务器(对于BEA WebLogic Server v8.1,请在BEA System,Inc.下查看)。 替代文字http://blogs.oracle.com/gstachni/WindowsLiveWriter/DevelopingApplicationsforWeblogicServer1_C379/image_thumb.png
  • 使用@SchemaValidation的WebLogic中的JAX-WS验证架构(JAX-WS Validate Schema in WebLogic with @SchemaValidation)
    问题 我找不到解决方案,发现更多人陷入同一问题,因此我将其发布在这里。 默认情况下,JAX-WS服务器(至少用于WebLogic)将不验证通过其关联模式接收到的消息。 由于任何无效值(错误的xsd:dateTime格式,数字字段中的字母等)都将导致Java对象(包括必填字段)中的空值,从而导致很多问题。 我需要做的是由服务器提供的简单验证。 import com.sun.xml.internal.ws.developer.SchemaValidation; @Stateless @WebService(portName="ValidatedService") @SchemaValidation public class ValidatedService { public void operation(@WebParam(name="request") ValidatedRequest request) { /* do stuff */ } } 由于某些原因,当我尝试使用提供的模式验证时,出现以下异常: Caused By: javax.xml.ws.WebServiceException: Annotation @com.sun.xml.internal.ws.developer.SchemaValidation(handler=class com.sun.xml.internal
  • Weblogic 10.3.5覆盖Spring版本(Weblogic 10.3.5 Overriding Spring Version)
    问题 我正在使用Oracle的OEPE发行版(包括Weblogic服务器10.3.5)开发Web应用程序。 WLS包含自己的Spring版本,该版本似乎是2.5.6.SEC01。 但是,我们正在尝试使用3.1发行版的Spring和Spring Security功能。 Maven POM将Spring Version定义为属性3.1.1.RELEASE(该属性已插入各节中,即: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> 我在weblogic.xml中尝试了两种单独的方式来排除内置的Spring(一种在下面注释掉,但是请放心,我已经尝试了两种方式): <wls:container-descriptor> <wls:prefer-application-packages> <wls:package-name>com.oracle.ojdbc16.*</wls:package-name> <wls:package-name>antlr.*</wls:package-name> <wls:package-name>javax.persistence.*<
  • weblogic及oracle调优(重要!!!!)
    weblogic部署系统,应用运行一段时间经常自动宕机,解决方式:增加weblogic线程、增加oracle数据库线程、weblogic添加数据库时,如果weblogic版本为10.3.6,驱动选择要选第三个,以下是具体操作: 一、增大线程数 Weblogic服务器可以通过配置config.xml文件来达到效果的。 2.1 查看Weblogic并发 首先登录domain的console,然后点击环境>服务器>AdminServer>监控>线程,如下图所示: 2.2 修改Weblogic并发 打开config.xml文件,这里示例位置为C:\weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\config\config.xml(需要自己的工程查找)。 在对应位置加入红色标注的两行内容: <server> <name>AdminServer</name> <self-tuning-thread-pool-size-min>400</self-tuning-thread-pool-size-min> <self-tuning-thread-pool-size-max>401</self-tuning-thread-pool-size-max> ... </server> 注:修改后需重启服务器生效 2.3
  • java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space?
    I am working with a java application deployed on an HP server via WebLogic 10.3. Version info: WebLogic Version 10.3 OS Version B.11.23 $ java -version java version "1.6.0.03" Java(TM) SE Runtime Environment (build 1.6.0.03-jinteg_05_feb_2009_11_19-b00) Java HotSpot(TM) Server VM (build 11.0-b16-jre1.6.0.03-rc2, mixed mode) I am getting this java.lang.OutOfMemoryError and the weblogic managed server is shutting down. It's always on the compiler thread. The error message says to check swap and MAXDSIZ. I looked at both and they seemed ok (see below.) I've gone through the forums and looked at
  • 如何在URL中没有应用程序上下文的情况下使用Weblogic(12 C)?(How can I use Weblogic (12 C) without the application context in the URL?)
    问题 我正在一个需要Weblogic服务器的Web项目上工作,并且在部署之后(在Macbook Pro上)查看网站的唯一方法是将应用程序名称指定为整个网站的前缀。 例如 http://localhost:7001/myapp-weblogic/ 这会破坏大量使用根URL访问资源的样式和JavaScript代码(例如/images/example.png) 虽然我可以通过编程方式在.jsp的内容中添加“ / my-app”,但在我的.css文件中却无法做到这一点。 我尝试在Weblogic>控制台>环境>服务器> myserver >协议> HTTP中设置“默认WebApp上下文根:”-但这不起作用。 这似乎应该是一件如此简单的事情。 在IIS中,我只需在本地主机文件中添加一行,然后将主机名添加到IIS容器中,这总共花费了大约42秒的时间。 127.0.0.1 myapp.local -> Let's me view my site at http://myapp.local 预先感谢您的任何见解! 更新!! 我终于把事情做好了。 其中一些非常适合我的设置,但希望对其他人还是有帮助的。 为了使其正常工作,我需要做3件事,以及其他相关的事情: 在Weblogic中设置服务器的默认应用程序在本地服务器上,转到控制台并登录转到:Weblogic>控制台>环境>服务器> myserver
  • Weblogic在VM(VirtualBox和VMware)下启动缓慢(11分钟)(Weblogic is slow to start (11mins) under VM (VirtualBox and VMware))
    问题 (已解决!通过伪造系统随机生成器,见下文) 我正在为我的开发/构建团队设置 VM 映像。 在那个 VM 中,一个 Weblogic 域应该正在运行。 我使用 Ububtu 服务器发行版,WLS 9.2MP3 + ALSB。 一切正常,速度非常快,但在开始时 WLS 会在可测量的时间内停止两次。 两站总共约10分钟的延误。 对于部署需要重新启动服务器的任务,这非常烦人。 :-( 休眠时间不是固定的,有时服务器启动很快,有时一般,有时 10 分钟或更长时间。 有趣的是,如果我在查看停止的服务器时按 Enter,它会更快地唤醒,有时会在几秒钟后。 在 VM 中执行时,WLST(Weblogic Jython shell)也挂了很长时间。 但是它对 Enter 没有反应。 这里一定有一些开发人员使用 VM 运行 WLS。 我想知道其他人是否有同样的问题? 有人能解决吗? 这是服务器输出(仅用于案例): Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04) Java HotSpot(TM) Client VM (build 1.5.0_12-b04, mixed mode) Starting WLS with line: /shared2/beahome/jdk150_12/bin/java
  • Custom Thread on Weblogic Server 11g
    I need a custom threda on my weblogic server; I cannot use TimerEJB or Delayed MDB since I have to use a 3d library. I know that custom threads on application server are discouraged; here a related post (4 years old): Why is spawning threads in Java EE container discouraged? Is it still discouraged? Can I use ExecutorService or Quartz? Or I have to consider only commonj and worker manager?
  • java.lang.ClassNotFoundException: ch.qos.logback.classic.spi.ThrowableProxy?
    while starting my weblogic(having my app war file containing logback-classic-1.0.1.jar),i am getting below exception.Any suggestion ? <Sep 9, 2015 9:27:13 AM UTC> <Warning> <Common> <BEA-000632> <Resource Pool "JDBC Data Source-0" shutting down, ignoring 3 resources still in use by applications..> Exception in thread "Thread-12" java.lang.NoClassDefFoundError: ch/qos/logback/classic/spi/ThrowableProxy at ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:125) at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:468) at ch.qos.logback.classic.Logger.filterAndLog
  • Web Service Client (JAX-WS) in Weblogic(10.3) with 2 way SSL cannot complete the handshake
    We have been looking for a soution to our problem for one week and after looking in a lot of similar posts and after reading all the available documentation we haven't got a solution. I'm going to explain my current situation and I hope someone could help us to solve the problem. We have developed a Web Service Client in JAX-WS, which comunicates with a server-side Web Service in another platform. The comunication is 2 way SSL and we have the CA of the server side, to trust him, and our private certificates to identify in the server side. Our Web Service Client is deployed in a Weblogic 10.3
  • ERROR: Cannot load this JVM TI agent twice starting Oracle WebLogic Server 12.1.3.0
    I am starting Oracle WebLogic Server 12.1.3.0 where I have hosted some WEb applications, but I can not start it because I have an error echo starting weblogic with Java version: %JAVA_HOME%\bin\java %JAVA_VM% -version if "%WLS_REDIRECT_LOG%"=="" ( echo Starting WLS with line: echo %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS% %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WLS_POLICY_FILE% %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS