[rhq] modules/enterprise
by mike thompson
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/table/GroupMeasurementTableView.java | 28 +++-------
1 file changed, 11 insertions(+), 17 deletions(-)
New commits:
commit e48fbace880aad2100115ea616e7b712651da388
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Fri Nov 1 13:42:36 2013 -0700
[BZ 1025886] - Group Tabular Metrics table not refreshing via Date/Time selector. Also removed the Refresh button from the Members Report top section as it is redundant with date/time selector component that refreshes.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/table/GroupMeasurementTableView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/table/GroupMeasurementTableView.java
index e06a9c8..f226eca 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/table/GroupMeasurementTableView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/table/GroupMeasurementTableView.java
@@ -60,16 +60,25 @@ public class GroupMeasurementTableView extends Table<GroupMetricsTableDataSource
this.isAutogroup = groupComposite.getResourceGroup().getAutoGroupParentResource() != null;
setDataSource(new GroupMetricsTableDataSource(groupComposite, groupId));
//disable fields used when is full screen
- setShowFooterRefresh(true);
+ setShowFooterRefresh(false);
setTitle(MSG.common_title_numeric_metrics());
measurementUserPrefs = new MeasurementUserPreferences(UserSessionManager.getUserPreferences());
buttonBarDateTimeRangeEditor = new ButtonBarDateTimeRangeEditor(measurementUserPrefs,this);
+ startRefreshCycle();
}
@Override
public void refreshData() {
-
+ if (isVisible() && !isRefreshing()) {
+ Date now = new Date();
+ AbstractMeasurementRangeEditor.MetricRangePreferences metricRangePreferences = measurementUserPrefs.getMetricRangePreferences();
+ long timeRange = metricRangePreferences.end - metricRangePreferences.begin;
+ Date newStartDate = new Date(now.getTime() - timeRange);
+ buttonBarDateTimeRangeEditor.showUserFriendlyTimeRange(newStartDate.getTime(), now.getTime());
+ buttonBarDateTimeRangeEditor.saveDateRange(newStartDate.getTime(), now.getTime());
+ refresh();
+ }
}
@Override
@@ -89,21 +98,6 @@ public class GroupMeasurementTableView extends Table<GroupMetricsTableDataSource
return false;
}
- //Custom refresh operation as we are not directly extending Table
- @Override
- public void refresh() {
- if (isVisible() && !isRefreshing()) {
- Date now = new Date();
- AbstractMeasurementRangeEditor.MetricRangePreferences metricRangePreferences = measurementUserPrefs.getMetricRangePreferences();
- long timeRange = metricRangePreferences.end - metricRangePreferences.begin;
- Date newStartDate = new Date(now.getTime() - timeRange);
- buttonBarDateTimeRangeEditor.showUserFriendlyTimeRange(newStartDate.getTime(), now.getTime());
- buttonBarDateTimeRangeEditor.saveDateRange(newStartDate.getTime(), now.getTime());
-
- refreshData();
- }
- }
-
@Override
protected void configureTable() {
addTopWidget(buttonBarDateTimeRangeEditor);
10 years, 6 months
[rhq] Branch 'release/jon3.2.x' - modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java | 11 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java | 1
2 files changed, 7 insertions(+), 5 deletions(-)
New commits:
commit b43b869329cf61b7fe48766f71b2226b24043254
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Nov 1 13:25:15 2013 -0400
[Bug 1011592] Search bar placed over the main menu on navigating to Connection Settings tab of a compatible group
Fix an issue with the destroy() impl of EnhancedSearchBar. But the main fix
is to SubTabLayout.destroyViews(). When destroying the subtab views for
a tab, make sure to set the currently displayed subtab to null. Previously is
looked like we were still diasplaying a canvas, and subsequent calls, such as
to hide(), would force the canvas to be created, only to be able to hide it.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
index 2228ae8..5398916 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
@@ -95,8 +95,8 @@ public class SubTabLayout extends EnhancedVLayout {
}
/**
- * Make subTab visible.
- *
+ * Make subTab visible.
+ *
* @param subTab not null
*/
public void showSubTab(SubTab subTab) {
@@ -137,7 +137,7 @@ public class SubTabLayout extends EnhancedVLayout {
/**
* Make subTab not visible. Keeps any associated Canvas.
- *
+ *
* @param subTab not null
*/
public void hideSubTab(SubTab subTab) {
@@ -207,7 +207,7 @@ public class SubTabLayout extends EnhancedVLayout {
}
}
- /**
+ /**
* @return true if not visible or disabled
*/
public boolean isSubTabDisabled(SubTab subTab) {
@@ -289,7 +289,7 @@ public class SubTabLayout extends EnhancedVLayout {
}
public SubTab getDefaultSubTab() {
- // the default subTab is the first one in the set that is visible and not disabled
+ // the default subTab is the first one in the set that is visible and not disabled
for (SubTab subTab : this.subTabs.values()) {
if (!isSubTabDisabled(subTab)) {
return subTab;
@@ -418,6 +418,7 @@ public class SubTabLayout extends EnhancedVLayout {
for (SubTab subTab : subTabs.values()) {
subTab.destroyCanvas();
}
+ this.currentlyDisplayed = null;
}
private void setCurrentlySelected(boolean showCanvas) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
index 0b87cff..1074999 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
@@ -448,5 +448,6 @@ public class EnhancedSearchBar extends EnhancedToolStrip {
if (null != pickListGrid) {
pickListGrid.destroy();
}
+ super.destroy();
}
}
10 years, 6 months
[rhq] 2 commits - modules/enterprise
by Jay Shaughnessy
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java | 11 +-
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java | 1
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java | 53 ++++++++--
3 files changed, 50 insertions(+), 15 deletions(-)
New commits:
commit 29d66b177657a37fc126304408da49210c22a063
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Nov 1 13:46:35 2013 -0400
[1025756] Server log warnings from CriteriaQueryRunner, Could not initialize
Handle the case where we have a required, lazy-loaded entity that may be set
to 0. We shouldn't do that, but we do.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java
index 740de49..4c6da37 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryRunner.java
@@ -29,6 +29,7 @@ import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
import javax.persistence.Query;
import org.apache.commons.logging.Log;
@@ -79,13 +80,15 @@ public class CriteriaQueryRunner<T> {
queryGenerator.getCountQuery(entityManager), pageControl, DATA_FETCH_SETTINGS);
} catch (PhantomReadMaxAttemptsExceededException e) {
LOG.warn(
- "Could not get consistent results of the paged data and a total count for " +
- CriteriaUtil.toString(criteria) + ". After " + e.getNumberOfAttempts() + " attempts, the collection size" +
- " is " + e.getList().size() + ", while the count query reports " + e.getList().getTotalSize() + " for " +
- pageControl + ". The discrepancy has not cleared up in " + e.getMillisecondsSpentTrying() + "ms so we're giving up, " +
- "returning inconsistent results. Note that is most possibly NOT an error. It is likely " +
- "caused by concurrent database activity that changes the contents of the database that the " +
- "criteria query is querying.", new Exception());
+ "Could not get consistent results of the paged data and a total count for "
+ + CriteriaUtil.toString(criteria) + ". After " + e.getNumberOfAttempts()
+ + " attempts, the collection size" + " is " + e.getList().size()
+ + ", while the count query reports " + e.getList().getTotalSize() + " for " + pageControl
+ + ". The discrepancy has not cleared up in " + e.getMillisecondsSpentTrying()
+ + "ms so we're giving up, "
+ + "returning inconsistent results. Note that is most possibly NOT an error. It is likely "
+ + "caused by concurrent database activity that changes the contents of the database that the "
+ + "criteria query is querying.", new Exception());
results = (PageList<T>) e.getList();
}
@@ -171,7 +174,14 @@ public class CriteriaQueryRunner<T> {
}
}
- private void initialize(Object entity, Field field) {
+ /**
+ * @param entity
+ * @param field
+ * @return true if the field was successfully initialize, false if there was any problem
+ */
+ private boolean initialize(Object entity, Field field) {
+ boolean initialized = true;
+
try {
field.setAccessible(true);
@@ -181,15 +191,38 @@ public class CriteriaQueryRunner<T> {
if (instance instanceof Iterable) {
Iterator<?> it = ((Iterable<?>) instance).iterator();
- while (it.hasNext()) it.next();
+ while (it.hasNext())
+ it.next();
+ }
+ } catch (EntityNotFoundException e) {
+ // TODO: See BZ 1025756, we should try and get rid of required join fields that allow 0.
+ if (LOG.isDebugEnabled()) {
+ String msg = "Could not initialize [" + field
+ + "]. This may happen if this entity field is required, lazy-loaded/proxied, but allows ID of 0:";
+ LOG.debug(msg, e);
}
+ initialized = false;
+
} catch (Exception e) {
if (LOG.isDebugEnabled()) {
LOG.debug("Could not initialize " + field + " Following exception has caused the problem: ", e);
} else {
LOG.warn("Could not initialize " + field);
}
+ initialized = false;
}
- }
+ // instead of likely leaving an unloaded Hibernate proxy, set null
+ if (!initialized) {
+ try {
+ field.set(entity, null);
+ } catch (Throwable t) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Could not nullify non-initialized field [" + field + "].", t);
+ }
+ }
+ }
+
+ return initialized;
+ }
}
commit c140ad7fd114ddeb5cd7a2b7df748fd30009bf1b
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Nov 1 13:25:15 2013 -0400
[Bug 1011592] Search bar placed over the main menu on navigating to Connection Settings tab of a compatible group
Fix an issue with the destroy() impl of EnhancedSearchBar. But the main fix
is to SubTabLayout.destroyViews(). When destroying the subtab views for
a tab, make sure to set the currently displayed subtab to null. Previously is
looked like we were still diasplaying a canvas, and subsequent calls, such as
to hide(), would force the canvas to be created, only to be able to hide it.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
index 2228ae8..5398916 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/components/tab/SubTabLayout.java
@@ -95,8 +95,8 @@ public class SubTabLayout extends EnhancedVLayout {
}
/**
- * Make subTab visible.
- *
+ * Make subTab visible.
+ *
* @param subTab not null
*/
public void showSubTab(SubTab subTab) {
@@ -137,7 +137,7 @@ public class SubTabLayout extends EnhancedVLayout {
/**
* Make subTab not visible. Keeps any associated Canvas.
- *
+ *
* @param subTab not null
*/
public void hideSubTab(SubTab subTab) {
@@ -207,7 +207,7 @@ public class SubTabLayout extends EnhancedVLayout {
}
}
- /**
+ /**
* @return true if not visible or disabled
*/
public boolean isSubTabDisabled(SubTab subTab) {
@@ -289,7 +289,7 @@ public class SubTabLayout extends EnhancedVLayout {
}
public SubTab getDefaultSubTab() {
- // the default subTab is the first one in the set that is visible and not disabled
+ // the default subTab is the first one in the set that is visible and not disabled
for (SubTab subTab : this.subTabs.values()) {
if (!isSubTabDisabled(subTab)) {
return subTab;
@@ -418,6 +418,7 @@ public class SubTabLayout extends EnhancedVLayout {
for (SubTab subTab : subTabs.values()) {
subTab.destroyCanvas();
}
+ this.currentlyDisplayed = null;
}
private void setCurrentlySelected(boolean showCanvas) {
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
index 0b87cff..1074999 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/searchbar/EnhancedSearchBar.java
@@ -448,5 +448,6 @@ public class EnhancedSearchBar extends EnhancedToolStrip {
if (null != pickListGrid) {
pickListGrid.destroy();
}
+ super.destroy();
}
}
10 years, 6 months
[rhq] Branch 'release/jon3.2.x' - modules/enterprise
by Heiko W. Rupp
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java | 9 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java | 56 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java | 56 ----------
3 files changed, 61 insertions(+), 60 deletions(-)
New commits:
commit 6bb68f530d9d3097cb033ee3dc10ee86c95787af
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Nov 1 16:17:48 2013 +0100
BZ 1025388 - wrap the result so it gets serialized to the correct media type.
(cherry picked from commit 6428648)
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index 5f9a91a..3480f3b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -104,7 +104,7 @@ import org.rhq.enterprise.server.resource.ResourceFactoryManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.rest.domain.AvailabilityRest;
import org.rhq.enterprise.server.rest.domain.AvailabilitySummary;
-import org.rhq.enterprise.server.rest.domain.CreateCBRresourceRequest;
+import org.rhq.enterprise.server.rest.domain.CreateCBResourceRequest;
import org.rhq.enterprise.server.rest.domain.Link;
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
import org.rhq.enterprise.server.rest.domain.ResourceWithChildren;
@@ -728,7 +728,7 @@ public class ResourceHandlerBean extends AbstractRestBean {
notes= "If a handle is given, a content based resource is created; the content identified by the handle is not removed from the content store." +
"If no handle is given, a resource is created from the data of the passed 'resource' object.")
public Response createResource(
- @ApiParam("The info about the resource. You need to supply resource name, resource type name, plugin name, id of the parent") CreateCBRresourceRequest resource,
+ @ApiParam("The info about the resource. You need to supply resource name, resource type name, plugin name, id of the parent") CreateCBResourceRequest resource,
@ApiParam("A handle that identifies content that has been uploaded to the server before.") @QueryParam("handle") String handle,
@Context HttpHeaders headers,
@Context UriInfo uriInfo) throws IOException
@@ -793,7 +793,7 @@ public class ResourceHandlerBean extends AbstractRestBean {
}
}
- private Response createContentBackedResource(CreateCBRresourceRequest request, String handle, HttpHeaders headers, UriInfo uriInfo) throws IOException
+ private Response createContentBackedResource(CreateCBResourceRequest request, String handle, HttpHeaders headers, UriInfo uriInfo) throws IOException
{
int parentId = request.getParentId();
String typeName = request.getTypeName();
@@ -927,7 +927,8 @@ public class ResourceHandlerBean extends AbstractRestBean {
}
else {
builder = Response.serverError();
- builder.entity(status + ": " + history.getErrorMessage());
+ StringValue errorMessage = new StringValue(status + ": " + history.getErrorMessage());
+ builder.entity(errorMessage);
}
MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java
new file mode 100644
index 0000000..6357d4c
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java
@@ -0,0 +1,56 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+package org.rhq.enterprise.server.rest.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.wordnik.swagger.annotations.ApiClass;
+import com.wordnik.swagger.annotations.ApiProperty;
+
+/**
+ * Request to create a content based resource
+ * @author Heiko W. Rupp
+ */
+@ApiClass("A request to create a content-based resource. For this to work, it is required that the content to be deployed is already uploaded to the server.")
+public class CreateCBResourceRequest extends ResourceWithType {
+
+ Map<String,Object> pluginConfig = new HashMap<String, Object>();
+ Map<String,Object> resourceConfig = new HashMap<String, Object>();
+
+ @ApiProperty("The configuration of the connection properties")
+ public Map<String, Object> getPluginConfig() {
+ return pluginConfig;
+ }
+
+ public void setPluginConfig(Map<String, Object> pluginConfig) {
+ this.pluginConfig = pluginConfig;
+ }
+
+ @ApiProperty("The configuration of the resource to be created")
+ public Map<String, Object> getResourceConfig() {
+ return resourceConfig;
+ }
+
+ public void setResourceConfig(Map<String, Object> resourceConfig) {
+ this.resourceConfig = resourceConfig;
+ }
+
+}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java
deleted file mode 100644
index aa1679a..0000000
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2013 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-package org.rhq.enterprise.server.rest.domain;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.wordnik.swagger.annotations.ApiClass;
-import com.wordnik.swagger.annotations.ApiProperty;
-
-/**
- * Request to create a content based resource
- * @author Heiko W. Rupp
- */
-@ApiClass("A request to create a content-based resource. For this to work, it is required that the content to be deployed is already uploaded to the server.")
-public class CreateCBRresourceRequest extends ResourceWithType {
-
- Map<String,Object> pluginConfig = new HashMap<String, Object>();
- Map<String,Object> resourceConfig = new HashMap<String, Object>();
-
- @ApiProperty("The configuration of the connection properties")
- public Map<String, Object> getPluginConfig() {
- return pluginConfig;
- }
-
- public void setPluginConfig(Map<String, Object> pluginConfig) {
- this.pluginConfig = pluginConfig;
- }
-
- @ApiProperty("The configuration of the resource to be created")
- public Map<String, Object> getResourceConfig() {
- return resourceConfig;
- }
-
- public void setResourceConfig(Map<String, Object> resourceConfig) {
- this.resourceConfig = resourceConfig;
- }
-
-}
10 years, 6 months
[rhq] modules/enterprise
by Heiko W. Rupp
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java | 9 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java | 56 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java | 56 ----------
3 files changed, 61 insertions(+), 60 deletions(-)
New commits:
commit 64286484fc7768e4bb4a956fb9aac09a448c715d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Nov 1 16:17:48 2013 +0100
BZ 1025388 - wrap the result so it gets serialized to the correct media type.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
index 5f9a91a..3480f3b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/ResourceHandlerBean.java
@@ -104,7 +104,7 @@ import org.rhq.enterprise.server.resource.ResourceFactoryManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.rest.domain.AvailabilityRest;
import org.rhq.enterprise.server.rest.domain.AvailabilitySummary;
-import org.rhq.enterprise.server.rest.domain.CreateCBRresourceRequest;
+import org.rhq.enterprise.server.rest.domain.CreateCBResourceRequest;
import org.rhq.enterprise.server.rest.domain.Link;
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
import org.rhq.enterprise.server.rest.domain.ResourceWithChildren;
@@ -728,7 +728,7 @@ public class ResourceHandlerBean extends AbstractRestBean {
notes= "If a handle is given, a content based resource is created; the content identified by the handle is not removed from the content store." +
"If no handle is given, a resource is created from the data of the passed 'resource' object.")
public Response createResource(
- @ApiParam("The info about the resource. You need to supply resource name, resource type name, plugin name, id of the parent") CreateCBRresourceRequest resource,
+ @ApiParam("The info about the resource. You need to supply resource name, resource type name, plugin name, id of the parent") CreateCBResourceRequest resource,
@ApiParam("A handle that identifies content that has been uploaded to the server before.") @QueryParam("handle") String handle,
@Context HttpHeaders headers,
@Context UriInfo uriInfo) throws IOException
@@ -793,7 +793,7 @@ public class ResourceHandlerBean extends AbstractRestBean {
}
}
- private Response createContentBackedResource(CreateCBRresourceRequest request, String handle, HttpHeaders headers, UriInfo uriInfo) throws IOException
+ private Response createContentBackedResource(CreateCBResourceRequest request, String handle, HttpHeaders headers, UriInfo uriInfo) throws IOException
{
int parentId = request.getParentId();
String typeName = request.getTypeName();
@@ -927,7 +927,8 @@ public class ResourceHandlerBean extends AbstractRestBean {
}
else {
builder = Response.serverError();
- builder.entity(status + ": " + history.getErrorMessage());
+ StringValue errorMessage = new StringValue(status + ": " + history.getErrorMessage());
+ builder.entity(errorMessage);
}
MediaType mediaType = headers.getAcceptableMediaTypes().get(0);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java
new file mode 100644
index 0000000..6357d4c
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBResourceRequest.java
@@ -0,0 +1,56 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+package org.rhq.enterprise.server.rest.domain;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.wordnik.swagger.annotations.ApiClass;
+import com.wordnik.swagger.annotations.ApiProperty;
+
+/**
+ * Request to create a content based resource
+ * @author Heiko W. Rupp
+ */
+@ApiClass("A request to create a content-based resource. For this to work, it is required that the content to be deployed is already uploaded to the server.")
+public class CreateCBResourceRequest extends ResourceWithType {
+
+ Map<String,Object> pluginConfig = new HashMap<String, Object>();
+ Map<String,Object> resourceConfig = new HashMap<String, Object>();
+
+ @ApiProperty("The configuration of the connection properties")
+ public Map<String, Object> getPluginConfig() {
+ return pluginConfig;
+ }
+
+ public void setPluginConfig(Map<String, Object> pluginConfig) {
+ this.pluginConfig = pluginConfig;
+ }
+
+ @ApiProperty("The configuration of the resource to be created")
+ public Map<String, Object> getResourceConfig() {
+ return resourceConfig;
+ }
+
+ public void setResourceConfig(Map<String, Object> resourceConfig) {
+ this.resourceConfig = resourceConfig;
+ }
+
+}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java
deleted file mode 100644
index aa1679a..0000000
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/CreateCBRresourceRequest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2013 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-package org.rhq.enterprise.server.rest.domain;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.wordnik.swagger.annotations.ApiClass;
-import com.wordnik.swagger.annotations.ApiProperty;
-
-/**
- * Request to create a content based resource
- * @author Heiko W. Rupp
- */
-@ApiClass("A request to create a content-based resource. For this to work, it is required that the content to be deployed is already uploaded to the server.")
-public class CreateCBRresourceRequest extends ResourceWithType {
-
- Map<String,Object> pluginConfig = new HashMap<String, Object>();
- Map<String,Object> resourceConfig = new HashMap<String, Object>();
-
- @ApiProperty("The configuration of the connection properties")
- public Map<String, Object> getPluginConfig() {
- return pluginConfig;
- }
-
- public void setPluginConfig(Map<String, Object> pluginConfig) {
- this.pluginConfig = pluginConfig;
- }
-
- @ApiProperty("The configuration of the resource to be created")
- public Map<String, Object> getResourceConfig() {
- return resourceConfig;
- }
-
- public void setResourceConfig(Map<String, Object> resourceConfig) {
- this.resourceConfig = resourceConfig;
- }
-
-}
10 years, 6 months
[rhq] Branch 'release/jon3.2.x' - modules/common modules/enterprise
by lkrejci
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java | 7
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java | 16 +
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java | 1
modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java | 81 ++++------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java | 14 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java | 32 +--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java | 8
modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java | 10 -
9 files changed, 91 insertions(+), 80 deletions(-)
New commits:
commit 6123befdd990458fb1564204c0ba0721c7d3b1ad
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Oct 31 18:32:17 2013 +0100
[BZ 1018233] - Fix leaks of model controller client instances
This should prevent a deadlock in the java finalizer thread that
seems to be caused by an attempt to close the leaked clients
in a constrained environment where the server is (close to) unable
create new threads.
(cherry picked from commit 3e5d0121a5b383762315b6acd9557c3fd70e0106)
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
index cab198c..b2b7f05 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
@@ -61,6 +61,13 @@ public class JBossASClient {
private ModelControllerClient client;
+ /**
+ * Constructs a new JBoss AS Client that talks to the model through the provided client.
+ * <p/>
+ * Note that the caller is responsible to correctly close the client instance!!!
+ *
+ * @param client the client to use
+ */
public JBossASClient(ModelControllerClient client) {
this.client = client;
}
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
index e5fbb27..b527d07 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
@@ -32,11 +32,11 @@ public class MCCHelper {
private static final int RHQ_JBOSS_MANAGEMENT_PORT_PROPERTY_DEFAULT_VALUE = 6999;
- public static ModelControllerClient getModelControllerClient() {
- return getModelControllerClient("localhost", getPort());
+ public static ModelControllerClient createModelControllerClient() {
+ return createModelControllerClient("localhost", getPort());
}
- public static ModelControllerClient getModelControllerClient(String host, int port) {
+ public static ModelControllerClient createModelControllerClient(String host, int port) {
ModelControllerClient client;
try {
if (host==null || host.isEmpty())
@@ -52,6 +52,16 @@ public class MCCHelper {
return client;
}
+ public static void safeClose(ModelControllerClient mcc) {
+ if (mcc != null) {
+ try {
+ mcc.close();
+ } catch (Exception e) {
+ //ignore
+ }
+ }
+ }
+
private static int getPort() {
// The property may return "" so also use "" as the default to ensure we set it to something useful
String result = System.getProperty(RHQ_JBOSS_MANAGEMENT_PORT_PROPERTY, "");
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
index 99e2f4d..630f0ee 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
@@ -270,6 +270,7 @@ public class SecurityDomainJBossASClient extends JBossASClient {
* @throws Exception if failed to create security domain
*/
public void createNewSecurityDomain(String securityDomainName, LoginModuleRequest... loginModules) throws Exception {
+ //do not close the controller client here, we're using our own..
CoreJBossASClient coreClient = new CoreJBossASClient(getModelControllerClient());
String serverVersion = coreClient.getAppServerVersion();
if (serverVersion.startsWith("7.2")) {
diff --git a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
index 8758246..7c1177a 100644
--- a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
+++ b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
@@ -49,6 +49,7 @@ import org.rhq.cassandra.schema.exception.SchemaNotInstalledException;
import org.rhq.common.jbossas.client.controller.CoreJBossASClient;
import org.rhq.common.jbossas.client.controller.DatasourceJBossASClient;
import org.rhq.common.jbossas.client.controller.DeploymentJBossASClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.common.jbossas.client.controller.WebJBossASClient;
import org.rhq.core.db.DatabaseTypeFactory;
import org.rhq.core.domain.cloud.StorageNode;
@@ -316,7 +317,7 @@ public class InstallerServiceImpl implements InstallerService {
// perform stuff that has to get done via the JBossAS management client
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
// ensure the server info is up to date and stored in the DB
ServerInstallUtil.setSocketBindings(mcc, serverProperties);
@@ -340,7 +341,7 @@ public class InstallerServiceImpl implements InstallerService {
// make sure all necessary web connectors are configured
ServerInstallUtil.setupWebConnectors(mcc, appServerConfigDir, serverProperties);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
// now create our deployment services
@@ -723,12 +724,12 @@ public class InstallerServiceImpl implements InstallerService {
public String getAppServerVersion() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String version = client.getAppServerVersion();
return version;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
@@ -736,72 +737,72 @@ public class InstallerServiceImpl implements InstallerService {
public String getOperatingSystem() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String osName = client.getOperatingSystem();
return osName;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerHomeDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerHomeDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerDataDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerDataDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerConfigDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerConfigDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private boolean isEarDeployed() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
boolean isDeployed = client.isDeployment(EAR_NAME);
return isDeployed;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private boolean isExtensionDeployed() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isExtension(RHQ_EXTENSION_NAME);
return isDeployed;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
@@ -983,12 +984,18 @@ public class InstallerServiceImpl implements InstallerService {
// Not only do we want to make sure we can connect, but we also want to wait for the subsystems to initialize.
// Let's wait for one of the subsystems to exist; once we know this is up, the rest are probably ready too.
- if (!(new WebJBossASClient(getModelControllerClient()).isWebSubsystem())) {
- throw new IllegalStateException(
- "The server does not appear to be fully started yet (the web subsystem did not start)");
- }
+ ModelControllerClient mcc = null;
+ try {
+ mcc = createModelControllerClient();
+ if (!(new WebJBossASClient(mcc).isWebSubsystem())) {
+ throw new IllegalStateException(
+ "The server does not appear to be fully started yet (the web subsystem did not start)");
+ }
- return retVal;
+ return retVal;
+ } finally {
+ MCCHelper.safeClose(mcc);
+ }
} catch (Exception e) {
error = e;
try {
@@ -1089,14 +1096,15 @@ public class InstallerServiceImpl implements InstallerService {
// make the cause the very first exception in case it was something other than bad host/port as the problem
throw new Exception("Cannot obtain client connection to the RHQ app server!!", e);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
+ mcc = null;
}
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
- private ModelControllerClient getModelControllerClient() {
+ private ModelControllerClient createModelControllerClient() {
ModelControllerClient client;
try {
String host = this.installerConfiguration.getManagementHost();
@@ -1112,7 +1120,7 @@ public class InstallerServiceImpl implements InstallerService {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
// create the security domain needed by the datasources
ServerInstallUtil.createDatasourceSecurityDomain(mcc, serverProperties);
@@ -1145,14 +1153,14 @@ public class InstallerServiceImpl implements InstallerService {
log("deployServices failed", e);
throw new Exception("Failed to deploy services: " + ThrowableUtil.getAllMessages(e));
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private void deployAppExtension() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isExtension(RHQ_EXTENSION_NAME);
if (!isDeployed) {
@@ -1162,14 +1170,14 @@ public class InstallerServiceImpl implements InstallerService {
log("RHQ EAR startup subsystem extension is already deployed");
}
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private void deployAppSubsystem() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isSubsystem(RHQ_SUBSYSTEM_NAME);
if (!isDeployed) {
@@ -1179,16 +1187,7 @@ public class InstallerServiceImpl implements InstallerService {
log("RHQ EAR subsystem is already deployed");
}
} finally {
- safeClose(mcc);
- }
- }
-
- private static void safeClose(final ModelControllerClient mcc) {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- }
+ MCCHelper.safeClose(mcc);
}
}
@@ -1196,14 +1195,14 @@ public class InstallerServiceImpl implements InstallerService {
log("Will now ask the app server to reload its configuration");
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
client.reload();
log("App server has been successfully asked to reload its configuration");
} catch (Exception e) {
log("reloadConfiguration failed - restart the server to complete the installation", e);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
index edeb264..2718103 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
@@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.as.controller.client.ModelControllerClient;
import org.rhq.common.jbossas.client.controller.DeploymentJBossASClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.core.domain.common.ProductInfo;
import org.rhq.core.util.ObjectNameFactory;
import org.rhq.enterprise.server.RHQConstants;
@@ -89,14 +90,14 @@ public class CoreServer implements CoreServerMBean {
}
- private static ModelControllerClient getModelControllerClient() {
+ private static ModelControllerClient createModelControllerClient() {
if (System.getSecurityManager() == null) {
- return ManagementService.getClient();
+ return ManagementService.createClient();
} else {
return AccessController.doPrivileged(new PrivilegedAction<ModelControllerClient>() {
@Override
public ModelControllerClient run() {
- return ManagementService.getClient();
+ return ManagementService.createClient();
}
});
}
@@ -179,7 +180,7 @@ public class CoreServer implements CoreServerMBean {
public File getEarDeploymentDir() {
//Getting model controller client requires privs our callers might not have, but we want to provide this
//function even to them.
- ModelControllerClient mcc = SecurityActions.getModelControllerClient();
+ ModelControllerClient mcc = SecurityActions.createModelControllerClient();
try {
DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
@@ -188,10 +189,7 @@ public class CoreServer implements CoreServerMBean {
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
- try {
- mcc.close();
- } catch (IOException ignore) {
- }
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
index 5025044..bcf053b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
@@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.as.controller.client.ModelControllerClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.common.jbossas.client.controller.SecurityDomainJBossASClient;
import org.rhq.common.jbossas.client.controller.SecurityDomainJBossASClient.LoginModuleRequest;
import org.rhq.core.domain.common.composite.SystemSetting;
@@ -97,16 +98,20 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
if (isLdapAuthenticationEnabled) {
ModelControllerClient mcc = null;
- mcc = ManagementService.getClient();
- final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
+ try {
+ mcc = ManagementService.createClient();
+ final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
- boolean ldapModulesPresent = client.securityDomainHasLoginModule(RHQ_USER_SECURITY_DOMAIN,
- "org.rhq.enterprise.server.core.jaas.LdapLoginModule");
+ boolean ldapModulesPresent = client.securityDomainHasLoginModule(RHQ_USER_SECURITY_DOMAIN,
+ "org.rhq.enterprise.server.core.jaas.LdapLoginModule");
- if (!ldapModulesPresent) {
- LOG.info("Updating RHQ Server's JAAS login modules with LDAP support");
- updateJaasModules(systemConfig);
+ if (!ldapModulesPresent) {
+ LOG.info("Updating RHQ Server's JAAS login modules with LDAP support");
+ updateJaasModules(systemConfig);
+ }
+ } finally {
+ MCCHelper.safeClose(mcc);
}
}
} catch (Exception e) {
@@ -137,7 +142,7 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
ModelControllerClient mcc = null;
try {
- mcc = ManagementService.getClient();
+ mcc = ManagementService.createClient();
final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
if (client.isSecurityDomain(RHQ_USER_SECURITY_DOMAIN)) {
@@ -196,16 +201,7 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
} catch (Exception e) {
throw new Exception("Error registering RHQ JAAS modules", e);
} finally {
- safeClose(mcc);
- }
- }
-
- private static void safeClose(final ModelControllerClient mcc) {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- }
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
index f22cff0..6f59bcd 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
@@ -55,7 +55,7 @@ public class ManagementService implements ServiceActivator {
*
* @return the ModelControllerClient
*/
- public static ModelControllerClient getClient() {
+ public static ModelControllerClient createClient() {
return controller.createClient(executor);
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
index 328647e..70a428f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
@@ -9,6 +9,8 @@ import javax.ejb.Stateless;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.as.controller.client.ModelControllerClient;
+
import org.rhq.common.jbossas.client.controller.CoreJBossASClient;
import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.core.domain.alert.Alert;
@@ -61,14 +63,18 @@ public class SystemInfoManagerBean implements SystemInfoManagerLocal{
result.put("FullName", productInfo.getFullName());
result.put("Name", productInfo.getName());
+ ModelControllerClient mcc = null;
try {
- CoreJBossASClient coreClient = new CoreJBossASClient(MCCHelper.getModelControllerClient());
+ mcc = MCCHelper.createModelControllerClient();
+ CoreJBossASClient coreClient = new CoreJBossASClient(mcc);
result.put("AS version",coreClient.getAppServerVersion());
result.put("AS product version", coreClient.getServerProductVersion());
result.put("AS product name", coreClient.getServerProductName());
result.put("AS config dir", coreClient.getAppServerConfigDir());
} catch (Exception e) {
result.put("AS*", "Not able to get AS props due to " + e.getMessage());
+ } finally {
+ MCCHelper.safeClose(mcc);
}
SystemSettings systemSettings=systemManager.getSystemSettings(caller);
diff --git a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
index 6561c22..7d74c96 100644
--- a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
+++ b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
@@ -209,7 +209,7 @@ public abstract class AbstractInstall extends ControlCommand {
String host = (String) props.get("jboss.bind.address.management");
int port = Integer.valueOf((String) props.get("jboss.management.native.port")).intValue();
- mcc = MCCHelper.getModelControllerClient(host, port);
+ mcc = MCCHelper.createModelControllerClient(host, port);
DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
boolean isDeployed = client.isDeployment("rhq.ear");
return isDeployed;
@@ -230,13 +230,7 @@ public abstract class AbstractInstall extends ControlCommand {
return false;
} finally {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- // best effort
- }
- }
+ MCCHelper.safeClose(mcc);
if (null != reader) {
try {
reader.close();
10 years, 6 months
[rhq] modules/common modules/enterprise
by lkrejci
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java | 7
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java | 16 +
modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java | 1
modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java | 81 ++++------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java | 14 -
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java | 32 +--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java | 8
modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java | 10 -
9 files changed, 91 insertions(+), 80 deletions(-)
New commits:
commit 3e5d0121a5b383762315b6acd9557c3fd70e0106
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Oct 31 18:32:17 2013 +0100
[BZ 1018233] - Fix leaks of model controller client instances
This should prevent a deadlock in the java finalizer thread that
seems to be caused by an attempt to close the leaked clients
in a constrained environment where the server is (close to) unable
create new threads.
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
index cab198c..b2b7f05 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/JBossASClient.java
@@ -61,6 +61,13 @@ public class JBossASClient {
private ModelControllerClient client;
+ /**
+ * Constructs a new JBoss AS Client that talks to the model through the provided client.
+ * <p/>
+ * Note that the caller is responsible to correctly close the client instance!!!
+ *
+ * @param client the client to use
+ */
public JBossASClient(ModelControllerClient client) {
this.client = client;
}
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
index e5fbb27..b527d07 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/MCCHelper.java
@@ -32,11 +32,11 @@ public class MCCHelper {
private static final int RHQ_JBOSS_MANAGEMENT_PORT_PROPERTY_DEFAULT_VALUE = 6999;
- public static ModelControllerClient getModelControllerClient() {
- return getModelControllerClient("localhost", getPort());
+ public static ModelControllerClient createModelControllerClient() {
+ return createModelControllerClient("localhost", getPort());
}
- public static ModelControllerClient getModelControllerClient(String host, int port) {
+ public static ModelControllerClient createModelControllerClient(String host, int port) {
ModelControllerClient client;
try {
if (host==null || host.isEmpty())
@@ -52,6 +52,16 @@ public class MCCHelper {
return client;
}
+ public static void safeClose(ModelControllerClient mcc) {
+ if (mcc != null) {
+ try {
+ mcc.close();
+ } catch (Exception e) {
+ //ignore
+ }
+ }
+ }
+
private static int getPort() {
// The property may return "" so also use "" as the default to ensure we set it to something useful
String result = System.getProperty(RHQ_JBOSS_MANAGEMENT_PORT_PROPERTY, "");
diff --git a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
index 99e2f4d..630f0ee 100644
--- a/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
+++ b/modules/common/jboss-as-dmr-client/src/main/java/org/rhq/common/jbossas/client/controller/SecurityDomainJBossASClient.java
@@ -270,6 +270,7 @@ public class SecurityDomainJBossASClient extends JBossASClient {
* @throws Exception if failed to create security domain
*/
public void createNewSecurityDomain(String securityDomainName, LoginModuleRequest... loginModules) throws Exception {
+ //do not close the controller client here, we're using our own..
CoreJBossASClient coreClient = new CoreJBossASClient(getModelControllerClient());
String serverVersion = coreClient.getAppServerVersion();
if (serverVersion.startsWith("7.2")) {
diff --git a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
index 51da755..ca0c497 100644
--- a/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
+++ b/modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java
@@ -49,6 +49,7 @@ import org.rhq.cassandra.schema.exception.SchemaNotInstalledException;
import org.rhq.common.jbossas.client.controller.CoreJBossASClient;
import org.rhq.common.jbossas.client.controller.DatasourceJBossASClient;
import org.rhq.common.jbossas.client.controller.DeploymentJBossASClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.common.jbossas.client.controller.WebJBossASClient;
import org.rhq.core.db.DatabaseTypeFactory;
import org.rhq.core.domain.cloud.StorageNode;
@@ -316,7 +317,7 @@ public class InstallerServiceImpl implements InstallerService {
// perform stuff that has to get done via the JBossAS management client
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
// ensure the server info is up to date and stored in the DB
ServerInstallUtil.setSocketBindings(mcc, serverProperties);
@@ -340,7 +341,7 @@ public class InstallerServiceImpl implements InstallerService {
// make sure all necessary web connectors are configured
ServerInstallUtil.setupWebConnectors(mcc, appServerConfigDir, serverProperties);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
// now create our deployment services
@@ -720,12 +721,12 @@ public class InstallerServiceImpl implements InstallerService {
public String getAppServerVersion() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String version = client.getAppServerVersion();
return version;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
@@ -733,72 +734,72 @@ public class InstallerServiceImpl implements InstallerService {
public String getOperatingSystem() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String osName = client.getOperatingSystem();
return osName;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerHomeDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerHomeDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerDataDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerDataDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private String getAppServerConfigDir() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
final String dir = client.getAppServerConfigDir();
return dir;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private boolean isEarDeployed() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
boolean isDeployed = client.isDeployment(EAR_NAME);
return isDeployed;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private boolean isExtensionDeployed() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isExtension(RHQ_EXTENSION_NAME);
return isDeployed;
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
@@ -980,12 +981,18 @@ public class InstallerServiceImpl implements InstallerService {
// Not only do we want to make sure we can connect, but we also want to wait for the subsystems to initialize.
// Let's wait for one of the subsystems to exist; once we know this is up, the rest are probably ready too.
- if (!(new WebJBossASClient(getModelControllerClient()).isWebSubsystem())) {
- throw new IllegalStateException(
- "The server does not appear to be fully started yet (the web subsystem did not start)");
- }
+ ModelControllerClient mcc = null;
+ try {
+ mcc = createModelControllerClient();
+ if (!(new WebJBossASClient(mcc).isWebSubsystem())) {
+ throw new IllegalStateException(
+ "The server does not appear to be fully started yet (the web subsystem did not start)");
+ }
- return retVal;
+ return retVal;
+ } finally {
+ MCCHelper.safeClose(mcc);
+ }
} catch (Exception e) {
error = e;
try {
@@ -1086,14 +1093,15 @@ public class InstallerServiceImpl implements InstallerService {
// make the cause the very first exception in case it was something other than bad host/port as the problem
throw new Exception("Cannot obtain client connection to the RHQ app server!!", e);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
+ mcc = null;
}
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
- private ModelControllerClient getModelControllerClient() {
+ private ModelControllerClient createModelControllerClient() {
ModelControllerClient client;
try {
String host = this.installerConfiguration.getManagementHost();
@@ -1109,7 +1117,7 @@ public class InstallerServiceImpl implements InstallerService {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
// create the security domain needed by the datasources
ServerInstallUtil.createDatasourceSecurityDomain(mcc, serverProperties);
@@ -1142,14 +1150,14 @@ public class InstallerServiceImpl implements InstallerService {
log("deployServices failed", e);
throw new Exception("Failed to deploy services: " + ThrowableUtil.getAllMessages(e));
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private void deployAppExtension() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isExtension(RHQ_EXTENSION_NAME);
if (!isDeployed) {
@@ -1159,14 +1167,14 @@ public class InstallerServiceImpl implements InstallerService {
log("RHQ EAR startup subsystem extension is already deployed");
}
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
private void deployAppSubsystem() throws Exception {
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
CoreJBossASClient client = new CoreJBossASClient(mcc);
boolean isDeployed = client.isSubsystem(RHQ_SUBSYSTEM_NAME);
if (!isDeployed) {
@@ -1176,16 +1184,7 @@ public class InstallerServiceImpl implements InstallerService {
log("RHQ EAR subsystem is already deployed");
}
} finally {
- safeClose(mcc);
- }
- }
-
- private static void safeClose(final ModelControllerClient mcc) {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- }
+ MCCHelper.safeClose(mcc);
}
}
@@ -1193,14 +1192,14 @@ public class InstallerServiceImpl implements InstallerService {
log("Will now ask the app server to reload its configuration");
ModelControllerClient mcc = null;
try {
- mcc = getModelControllerClient();
+ mcc = createModelControllerClient();
final CoreJBossASClient client = new CoreJBossASClient(mcc);
client.reload();
log("App server has been successfully asked to reload its configuration");
} catch (Exception e) {
log("reloadConfiguration failed - restart the server to complete the installation", e);
} finally {
- safeClose(mcc);
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
index edeb264..2718103 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java
@@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.as.controller.client.ModelControllerClient;
import org.rhq.common.jbossas.client.controller.DeploymentJBossASClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.core.domain.common.ProductInfo;
import org.rhq.core.util.ObjectNameFactory;
import org.rhq.enterprise.server.RHQConstants;
@@ -89,14 +90,14 @@ public class CoreServer implements CoreServerMBean {
}
- private static ModelControllerClient getModelControllerClient() {
+ private static ModelControllerClient createModelControllerClient() {
if (System.getSecurityManager() == null) {
- return ManagementService.getClient();
+ return ManagementService.createClient();
} else {
return AccessController.doPrivileged(new PrivilegedAction<ModelControllerClient>() {
@Override
public ModelControllerClient run() {
- return ManagementService.getClient();
+ return ManagementService.createClient();
}
});
}
@@ -179,7 +180,7 @@ public class CoreServer implements CoreServerMBean {
public File getEarDeploymentDir() {
//Getting model controller client requires privs our callers might not have, but we want to provide this
//function even to them.
- ModelControllerClient mcc = SecurityActions.getModelControllerClient();
+ ModelControllerClient mcc = SecurityActions.createModelControllerClient();
try {
DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
@@ -188,10 +189,7 @@ public class CoreServer implements CoreServerMBean {
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
- try {
- mcc.close();
- } catch (IOException ignore) {
- }
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
index 5025044..bcf053b 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CustomJaasDeploymentService.java
@@ -44,6 +44,7 @@ import org.apache.commons.logging.LogFactory;
import org.jboss.as.controller.client.ModelControllerClient;
+import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.common.jbossas.client.controller.SecurityDomainJBossASClient;
import org.rhq.common.jbossas.client.controller.SecurityDomainJBossASClient.LoginModuleRequest;
import org.rhq.core.domain.common.composite.SystemSetting;
@@ -97,16 +98,20 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
if (isLdapAuthenticationEnabled) {
ModelControllerClient mcc = null;
- mcc = ManagementService.getClient();
- final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
+ try {
+ mcc = ManagementService.createClient();
+ final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
- boolean ldapModulesPresent = client.securityDomainHasLoginModule(RHQ_USER_SECURITY_DOMAIN,
- "org.rhq.enterprise.server.core.jaas.LdapLoginModule");
+ boolean ldapModulesPresent = client.securityDomainHasLoginModule(RHQ_USER_SECURITY_DOMAIN,
+ "org.rhq.enterprise.server.core.jaas.LdapLoginModule");
- if (!ldapModulesPresent) {
- LOG.info("Updating RHQ Server's JAAS login modules with LDAP support");
- updateJaasModules(systemConfig);
+ if (!ldapModulesPresent) {
+ LOG.info("Updating RHQ Server's JAAS login modules with LDAP support");
+ updateJaasModules(systemConfig);
+ }
+ } finally {
+ MCCHelper.safeClose(mcc);
}
}
} catch (Exception e) {
@@ -137,7 +142,7 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
ModelControllerClient mcc = null;
try {
- mcc = ManagementService.getClient();
+ mcc = ManagementService.createClient();
final SecurityDomainJBossASClient client = new SecurityDomainJBossASClient(mcc);
if (client.isSecurityDomain(RHQ_USER_SECURITY_DOMAIN)) {
@@ -196,16 +201,7 @@ public class CustomJaasDeploymentService implements CustomJaasDeploymentServiceM
} catch (Exception e) {
throw new Exception("Error registering RHQ JAAS modules", e);
} finally {
- safeClose(mcc);
- }
- }
-
- private static void safeClose(final ModelControllerClient mcc) {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- }
+ MCCHelper.safeClose(mcc);
}
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
index f22cff0..6f59bcd 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/service/ManagementService.java
@@ -55,7 +55,7 @@ public class ManagementService implements ServiceActivator {
*
* @return the ModelControllerClient
*/
- public static ModelControllerClient getClient() {
+ public static ModelControllerClient createClient() {
return controller.createClient(executor);
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
index 328647e..70a428f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/system/SystemInfoManagerBean.java
@@ -9,6 +9,8 @@ import javax.ejb.Stateless;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.as.controller.client.ModelControllerClient;
+
import org.rhq.common.jbossas.client.controller.CoreJBossASClient;
import org.rhq.common.jbossas.client.controller.MCCHelper;
import org.rhq.core.domain.alert.Alert;
@@ -61,14 +63,18 @@ public class SystemInfoManagerBean implements SystemInfoManagerLocal{
result.put("FullName", productInfo.getFullName());
result.put("Name", productInfo.getName());
+ ModelControllerClient mcc = null;
try {
- CoreJBossASClient coreClient = new CoreJBossASClient(MCCHelper.getModelControllerClient());
+ mcc = MCCHelper.createModelControllerClient();
+ CoreJBossASClient coreClient = new CoreJBossASClient(mcc);
result.put("AS version",coreClient.getAppServerVersion());
result.put("AS product version", coreClient.getServerProductVersion());
result.put("AS product name", coreClient.getServerProductName());
result.put("AS config dir", coreClient.getAppServerConfigDir());
} catch (Exception e) {
result.put("AS*", "Not able to get AS props due to " + e.getMessage());
+ } finally {
+ MCCHelper.safeClose(mcc);
}
SystemSettings systemSettings=systemManager.getSystemSettings(caller);
diff --git a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
index 6561c22..7d74c96 100644
--- a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
+++ b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/command/AbstractInstall.java
@@ -209,7 +209,7 @@ public abstract class AbstractInstall extends ControlCommand {
String host = (String) props.get("jboss.bind.address.management");
int port = Integer.valueOf((String) props.get("jboss.management.native.port")).intValue();
- mcc = MCCHelper.getModelControllerClient(host, port);
+ mcc = MCCHelper.createModelControllerClient(host, port);
DeploymentJBossASClient client = new DeploymentJBossASClient(mcc);
boolean isDeployed = client.isDeployment("rhq.ear");
return isDeployed;
@@ -230,13 +230,7 @@ public abstract class AbstractInstall extends ControlCommand {
return false;
} finally {
- if (null != mcc) {
- try {
- mcc.close();
- } catch (Exception e) {
- // best effort
- }
- }
+ MCCHelper.safeClose(mcc);
if (null != reader) {
try {
reader.close();
10 years, 6 months