如果在使用 ServerFailureTriggerMBean.MaxStuckThreadTime 和 ServerFailureTriggerMBean.StuckThreadCount 时出现奇怪的行为,可能是因为在许多情况下,这两个参数反映的是不同的东西而不是相同的东西。在这种情况下,建议仅使用 ServerFailureTriggerMBean.MaxStuckThreadTime 或 ServerFailureTriggerMBean.StuckThreadCount 中的一个。
以下是一些代码示例,展示如何设置 ServerFailureTriggerMBean.MaxStuckThreadTime 和 ServerFailureTriggerMBean.StuckThreadCount:
设置 ServerFailureTriggerMBean.MaxStuckThreadTime:
ObjectName serverRuntimeObjName = new ObjectName("com.bea:Name=ServerRuntime,
Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
RuntimeServiceMBean runtimeService = (RuntimeServiceMBean) MBeanServerInvocationHandler.newProxyInstance(
connection, serverRuntimeObjName, RuntimeServiceMBean.class, false);
ObjectName serverFailureTriggerObjName = new ObjectName("com.bea:Name=ServerRuntime,
Type=weblogic.management.runtime.ServerFailureTriggerMBean");
ServerFailureTriggerMBean serverFailureTrigger = (ServerFailureTriggerMBean) MBeanServerInvocationHandler.newProxyInstance(
connection, serverFailureTriggerObjName, ServerFailureTriggerMBean.class, false);
serverFailureTrigger.setMaxStuckThreadTime(600);
设置 ServerFailureTriggerMBean.StuckThreadCount:
ObjectName serverRuntimeObjName = new ObjectName("com.bea:Name=ServerRuntime,
Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
RuntimeServiceMBean runtimeService = (RuntimeServiceMBean) MBeanServerInvocationHandler.newProxyInstance(
connection, serverRuntimeObjName, RuntimeServiceMBean.class, false);
ObjectName serverFailureTriggerObjName = new ObjectName("com.bea:Name=ServerRuntime,
Type=weblogic.management.runtime.ServerFailureTriggerMBean");
ServerFailureTriggerMBean serverFailureTrigger = (ServerFailureTriggerMBean) MBeanServerInvocationHandler.newProxyInstance(
connection, serverFailureTriggerObjName, ServerFailureTriggerMBean.class, false);
serverFailureTrigger.setStuckThreadCount(10);