modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java
| 17 +++++-
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java
| 28 ++++++----
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java
| 10 +--
3 files changed, 40 insertions(+), 15 deletions(-)
New commits:
commit 841e1f0adfabed848b9f841b1856e4abecf1620a
Author: Ian Springer <ian.springer(a)redhat.com>
Date: Mon Jun 25 12:17:46 2012 -0400
[BZ 835113] fix so EJB2 MDB Resources do not erroneously return an avail of DOWN
(
https://bugzilla.redhat.com/show_bug.cgi?id=835113)
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java
index ebbf9bb..c4ae68f 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/Ejb2BeanComponent.java
@@ -1,6 +1,6 @@
/*
* Jopr Management Platform
- * Copyright (C) 2005-2009 Red Hat, Inc.
+ * Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -27,7 +27,9 @@ import java.util.Set;
import org.jboss.deployers.spi.management.ManagementView;
import org.jboss.managed.api.ComponentType;
import org.jboss.managed.api.ManagedComponent;
+import org.jboss.managed.api.RunState;
+import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.plugins.jbossas5.util.Ejb2BeanUtils;
/**
@@ -39,6 +41,19 @@ public class Ejb2BeanComponent extends AbstractEjbBeanComponent {
private static final ComponentType MDB_COMPONENT_TYPE = new
ComponentType("EJB", "MDB");
@Override
+ protected AvailabilityType getAvailabilityForRunState(RunState runState) {
+ AvailabilityType avail;
+ if (MDB_COMPONENT_TYPE.equals(getComponentType())) {
+ // This is a workaround for if BZ 835113.
+ avail = (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ?
+ AvailabilityType.UP : AvailabilityType.DOWN;
+ } else {
+ avail = super.getAvailabilityForRunState(runState);
+ }
+ return avail;
+ }
+
+ @Override
protected ManagedComponent getManagedComponent() {
if (MDB_COMPONENT_TYPE.equals(getComponentType())) {
try {
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java
index 5d28473..a44cfc8 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ManagedComponentComponent.java
@@ -124,22 +124,32 @@ public class ManagedComponentComponent extends
AbstractManagedComponent implemen
// ResourceComponent Implementation --------------------------------------------
public AvailabilityType getAvailability() {
- long timeSinceComponentRefresh = System.currentTimeMillis() -
lastComponentRefresh;
- if (timeSinceComponentRefresh > availRefreshInterval) {
- if (log.isDebugEnabled()) {
- log.debug("The availability refresh interval for [resourceKey:
"
- + getResourceContext().getResourceKey() + ", type: " +
componentType + ", name: " + componentName
- + "] has been exceeded by " + (timeSinceComponentRefresh -
availRefreshInterval)
- + " ms. Reloading managed component.");
- }
+ if (lastComponentRefresh == 0) {
+ // The managed component has not been refreshed at all yet.
getManagedComponent();
+ } else {
+ long timeSinceComponentRefresh = System.currentTimeMillis() -
lastComponentRefresh;
+ if (timeSinceComponentRefresh > availRefreshInterval) {
+ if (log.isDebugEnabled()) {
+ log.debug("The availability refresh interval for [resourceKey:
"
+ + getResourceContext().getResourceKey() + ", type: " +
componentType + ", name: " + componentName
+ + "] has been exceeded by " +
(timeSinceComponentRefresh - availRefreshInterval)
+ + " ms. Reloading managed component...");
+ }
+ getManagedComponent();
+ }
}
+ return getAvailabilityForRunState(runState);
+ }
+
+ protected AvailabilityType getAvailabilityForRunState(RunState runState) {
if (runState == RunState.RUNNING) {
return AvailabilityType.UP;
} else {
if (log.isDebugEnabled()) {
- log.debug(componentType + " component '" + componentName +
"' was not running, state was : " + runState);
+ log.debug(componentType + " component '" + componentName +
"' was not running - state was [" + runState
+ + "].");
}
return AvailabilityType.DOWN;
}
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java
index ba2a4c9..eae8b13 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/serviceBinding/ManagerComponent.java
@@ -71,13 +71,13 @@ public class ManagerComponent extends ManagedComponentComponent
implements Creat
private static final String RESOURCE_KEY_SEPARATOR = "!)@(#*";
@Override
- public AvailabilityType getAvailability() {
- RunState runState = getManagedComponent().getRunState();
- return (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ?
AvailabilityType.UP
- : AvailabilityType.DOWN;
+ protected AvailabilityType getAvailabilityForRunState(RunState runState) {
+ // This is a workaround for a bug where the binding manager MO will return a run
state of UNKNOWN even when it's
+ // happily running.
+ return (runState == RunState.RUNNING || runState == RunState.UNKNOWN) ?
+ AvailabilityType.UP : AvailabilityType.DOWN;
}
-
// ConfigurationFacet -----------------------------
@Override