.classpath | 3
modules/enterprise/gui/installer/src/main/java/org/rhq/common/jbossas/client/controller/CoreJBossASClient.java | 52 ++++++++--
modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/InstallerGWTServiceImpl.java | 5
modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/ServerInstallUtil.java | 19 +++
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java | 9 -
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java | 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/CoreServer.java | 50 ++++-----
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/LookupUtil.java | 17 +--
9 files changed, 111 insertions(+), 49 deletions(-)
New commits:
commit 1af7165a8f9a6f0cd2e17bdb58579853dc038b3d
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Sep 7 17:45:54 2012 -0400
fix core server MBean to use the new AS7 mbeans
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
index c1fd411..cd64648 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/agentupdate/AgentUpdateServlet.java
@@ -21,7 +21,6 @@ package org.rhq.enterprise.gui.agentupdate;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -30,9 +29,11 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.rhq.core.domain.cloud.Server.OperationMode;
+import org.rhq.core.domain.common.composite.SystemSetting;
+import org.rhq.core.domain.common.composite.SystemSettings;
import org.rhq.core.util.stream.StreamUtil;
-import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.core.AgentManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
@@ -170,9 +171,9 @@ public class AgentUpdateServlet extends HttpServlet {
private int getDownloadLimit() {
// if the server cloud was configured to disallow updates, return 0
- Properties systemConfig = LookupUtil.getSystemManager().getSystemConfiguration(
+ SystemSettings systemConfig = LookupUtil.getSystemManager().getSystemSettings(
LookupUtil.getSubjectManager().getOverlord());
- if (!Boolean.parseBoolean(systemConfig.getProperty(RHQConstants.EnableAgentAutoUpdate))) {
+ if (!Boolean.parseBoolean(systemConfig.get(SystemSetting.AGENT_AUTO_UPDATE_ENABLED.getInternalName()))) {
return 0;
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
index 79c1452..b6edc07 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/client/RemoteClientServlet.java
@@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.rhq.core.domain.cloud.Server.OperationMode;
import org.rhq.core.util.MessageDigestGenerator;
import org.rhq.core.util.stream.StreamUtil;
@@ -173,7 +174,7 @@ public class RemoteClientServlet extends HttpServlet {
private File getDownloadDir() throws Exception {
File serverHomeDir = LookupUtil.getCoreServer().getJBossServerHomeDir();
- File downloadDir = new File(serverHomeDir, "deploy/rhq.ear/rhq-downloads/rhq-client");
+ File downloadDir = new File(serverHomeDir, "deployments/rhq.ear/rhq-downloads/rhq-client");
if (!downloadDir.exists()) {
throw new FileNotFoundException("Missing remote client download directory at [" + downloadDir + "]");
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
index 5a7d750..b7f7e42 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
@@ -567,7 +567,7 @@ public class AgentManagerBean implements AgentManagerLocal {
@ExcludeDefaultInterceptors
public File getAgentDownloadDir() throws Exception {
File serverHomeDir = LookupUtil.getCoreServer().getJBossServerHomeDir();
- File agentDownloadDir = new File(serverHomeDir, "deploy/rhq.ear/rhq-downloads/rhq-agent");
+ File agentDownloadDir = new File(serverHomeDir, "deployments/rhq.ear/rhq-downloads/rhq-agent");
if (!agentDownloadDir.exists()) {
throw new FileNotFoundException("Missing agent downloads directory at [" + agentDownloadDir + "]");
}
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 e6f6c8c..c14a549 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
@@ -21,20 +21,17 @@ package org.rhq.enterprise.server.core;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.management.ManagementFactory;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
import javax.management.MBeanServer;
-import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.mx.util.MBeanServerLocator;
-import org.jboss.system.server.ServerConfig;
-
import org.rhq.core.domain.common.ProductInfo;
import org.rhq.core.util.ObjectNameFactory;
@@ -99,36 +96,25 @@ public class CoreServer implements CoreServerMBean {
}
public File getInstallDir() {
- MBeanServer mbs = getMBeanServer();
- ObjectName name = ObjectNameFactory.create("jboss.system:type=ServerConfig");
- Object mbean = MBeanServerInvocationHandler.newProxyInstance(mbs, name, ServerConfig.class, false);
-
- File homeDir = ((ServerConfig) mbean).getHomeDir();
- return homeDir.getParentFile(); // jboss homedir is "rhq-install-dir/jbossas", so the install dir is .. from jbossas
+ // use logDir explicitly - NOT homeDir because AS could be installed elsewhere (e.g. via rpm)
+ // but our log dir is always under our own installation directory
+ File homeDir = new File(getServerEnvironmentAttribute("logDir"));
+ return homeDir.getParentFile(); // logDir is "rhq-install-dir/logs", so the install dir is .. from there
}
public File getJBossServerHomeDir() {
- MBeanServer mbs = getMBeanServer();
- ObjectName name = ObjectNameFactory.create("jboss.system:type=ServerConfig");
- Object mbean = MBeanServerInvocationHandler.newProxyInstance(mbs, name, ServerConfig.class, false);
- File serverHomeDir = ((ServerConfig) mbean).getServerHomeDir();
- return serverHomeDir;
+ File baseDir = new File(getServerEnvironmentAttribute("baseDir"));
+ return baseDir;
}
public File getJBossServerDataDir() {
- MBeanServer mbs = getMBeanServer();
- ObjectName name = ObjectNameFactory.create("jboss.system:type=ServerConfig");
- Object mbean = MBeanServerInvocationHandler.newProxyInstance(mbs, name, ServerConfig.class, false);
- File serverDataDir = ((ServerConfig) mbean).getServerDataDir();
- return serverDataDir;
+ File dataDir = new File(getServerEnvironmentAttribute("dataDir"));
+ return dataDir;
}
public File getJBossServerTempDir() {
- MBeanServer mbs = getMBeanServer();
- ObjectName name = ObjectNameFactory.create("jboss.system:type=ServerConfig");
- Object mbean = MBeanServerInvocationHandler.newProxyInstance(mbs, name, ServerConfig.class, false);
- File serverTempDir = ((ServerConfig) mbean).getServerTempDir();
- return serverTempDir;
+ File tempDir = new File(getServerEnvironmentAttribute("tempDir"));
+ return tempDir;
}
public ProductInfo getProductInfo() {
@@ -177,7 +163,19 @@ public class CoreServer implements CoreServerMBean {
}
private MBeanServer getMBeanServer() {
- return MBeanServerLocator.locateJBoss();
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ return mbs;
+ }
+
+ private String getServerEnvironmentAttribute(String attributeName) {
+ try {
+ MBeanServer mbs = getMBeanServer();
+ ObjectName name = ObjectNameFactory.create("jboss.as:core-service=server-environment");
+ Object value = mbs.getAttribute(name, attributeName);
+ return (value != null) ? value.toString() : null;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
private Properties loadBuildProperties() {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/LookupUtil.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/LookupUtil.java
index 05b3662..a4ab159 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/LookupUtil.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/LookupUtil.java
@@ -32,7 +32,6 @@ import javax.transaction.TransactionManager;
import org.jetbrains.annotations.NotNull;
import org.jboss.mx.util.MBeanProxyExt;
-import org.jboss.mx.util.MBeanServerLocator;
import org.rhq.enterprise.server.RHQConstants;
import org.rhq.enterprise.server.alert.AlertConditionManagerBean;
@@ -607,12 +606,10 @@ public final class LookupUtil {
}
public static CoreServerMBean getCoreServer() {
- // The default MBean server for AS7 is the platform MBeanServer
- MBeanServer defaultMBeanServer = ManagementFactory.getPlatformMBeanServer();
CoreServerMBean rhqServer;
try {
- rhqServer = (CoreServerMBean) MBeanProxyExt.create(CoreServerMBean.class, CoreServerMBean.OBJECT_NAME,
- defaultMBeanServer);
+ MBeanServer mbs = getJBossMBeanServer();
+ rhqServer = (CoreServerMBean) MBeanProxyExt.create(CoreServerMBean.class, CoreServerMBean.OBJECT_NAME, mbs);
} catch (MalformedObjectNameException e) {
throw new RuntimeException(e);
}
@@ -620,19 +617,25 @@ public final class LookupUtil {
}
public static PluginDeploymentScannerMBean getPluginDeploymentScanner() {
- MBeanServer jBossMBeanServer = MBeanServerLocator.locateJBoss();
+ MBeanServer jBossMBeanServer = getJBossMBeanServer();
PluginDeploymentScannerMBean scanner = (PluginDeploymentScannerMBean) MBeanProxyExt.create(
PluginDeploymentScannerMBean.class, PluginDeploymentScannerMBean.OBJECT_NAME, jBossMBeanServer);
return scanner;
}
public static ServerPluginServiceManagement getServerPluginService() {
- MBeanServer jBossMBeanServer = MBeanServerLocator.locateJBoss();
+ MBeanServer jBossMBeanServer = getJBossMBeanServer();
ServerPluginServiceManagement service = (ServerPluginServiceManagement) MBeanProxyExt.create(
ServerPluginServiceManagement.class, ServerPluginServiceManagement.OBJECT_NAME, jBossMBeanServer);
return service;
}
+ private static MBeanServer getJBossMBeanServer() {
+ // The default MBean server for AS7 is the platform MBeanServer
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ return mbs;
+ }
+
//--------------------------------------------
// The TEST services
//--------------------------------------------
commit a0d63b45b26871d24303b95de47a642904c67c77
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Sep 7 17:33:50 2012 -0400
have installer configure the deployment scanner so it lengthens the deployment timeout
diff --git a/.classpath b/.classpath
index 0ab311c..89d8a42 100644
--- a/.classpath
+++ b/.classpath
@@ -48,7 +48,8 @@
<classpathentry kind="src" path="modules/enterprise/gui/coregui/target/generated-sources/gwt"/>
<classpathentry kind="src" path="modules/enterprise/gui/portal-war/src/main/java"/>
<classpathentry kind="src" path="modules/enterprise/gui/portal-war/src/test/java"/>
- <classpathentry kind="src" path="modules/enterprise/gui/installer-war/src/main/java"/>
+ <classpathentry kind="src" path="modules/enterprise/gui/installer/src/main/java"/>
+ <classpathentry kind="src" path="modules/enterprise/gui/installer/target/generated-sources/gwt"/>
<classpathentry kind="src" path="modules/enterprise/gui/content_http-war/src/main/java"/>
<classpathentry kind="src" path="modules/enterprise/server/client-api/src/main/java"/>
<classpathentry kind="src" path="modules/enterprise/remoting/client-api/src/main/java"/>
diff --git a/modules/enterprise/gui/installer/src/main/java/org/rhq/common/jbossas/client/controller/CoreJBossASClient.java b/modules/enterprise/gui/installer/src/main/java/org/rhq/common/jbossas/client/controller/CoreJBossASClient.java
index 00d2f14..1729f95 100644
--- a/modules/enterprise/gui/installer/src/main/java/org/rhq/common/jbossas/client/controller/CoreJBossASClient.java
+++ b/modules/enterprise/gui/installer/src/main/java/org/rhq/common/jbossas/client/controller/CoreJBossASClient.java
@@ -25,7 +25,7 @@ import org.jboss.dmr.ModelNode;
/**
* Provides information to some core services.
- *
+ *
* @author John Mazzitelli
*/
public class CoreJBossASClient extends JBossASClient {
@@ -116,11 +116,47 @@ public class CoreJBossASClient extends JBossASClient {
relativeTo = syspropValue;
}
- File dir = new File(relativeTo, path);
+ final File dir = new File(relativeTo, path);
return dir.getAbsolutePath();
}
/**
+ * Sets the interval of the default deployment scanner. If the value is
+ * less than 1 millisecond, the scanner will scan only one time at server startup.
+ * @param millis number of milliseconds to periodically scan the deployment directory
+ * @throws Exception
+ */
+ public void setAppServerDefaultDeploymentScanInterval(long millis) throws Exception {
+ final String[] addressArr = { SUBSYSTEM, DEPLOYMENT_SCANNER, SCANNER, "default" };
+ final Address address = Address.root().add(addressArr);
+ final ModelNode req = createWriteAttributeRequest("scan-interval", Long.toString(millis), address);
+ final ModelNode response = execute(req);
+
+ if (!isSuccess(response)) {
+ throw new FailureException(response);
+ }
+ return;
+ }
+
+ /**
+ * Sets the deployment timeout of the default deployment scanner. If a deployment
+ * takes longer than this value, it will fail.
+ * @param secs number of seconds the app server will wait for a deployment to finish
+ * @throws Exception
+ */
+ public void setAppServerDefaultDeploymentTimeout(long secs) throws Exception {
+ final String[] addressArr = { SUBSYSTEM, DEPLOYMENT_SCANNER, SCANNER, "default" };
+ final Address address = Address.root().add(addressArr);
+ final ModelNode req = createWriteAttributeRequest("deployment-timeout", Long.toString(secs), address);
+ final ModelNode response = execute(req);
+
+ if (!isSuccess(response)) {
+ throw new FailureException(response);
+ }
+ return;
+ }
+
+ /**
* Set a runtime system property in the JVM that is managed by JBossAS.
*
* @param name
@@ -128,9 +164,9 @@ public class CoreJBossASClient extends JBossASClient {
* @throws Exception
*/
public void setSystemProperty(String name, String value) throws Exception {
- ModelNode request = createRequest(ADD, Address.root().add(SYSTEM_PROPERTY, name));
+ final ModelNode request = createRequest(ADD, Address.root().add(SYSTEM_PROPERTY, name));
request.get(VALUE).set(value);
- ModelNode response = execute(request);
+ final ModelNode response = execute(request);
if (!isSuccess(response)) {
throw new FailureException(response, "Failed to set system property [" + name + "]");
}
@@ -144,9 +180,9 @@ public class CoreJBossASClient extends JBossASClient {
* @throws Exception
*/
public void reload() throws Exception {
- ModelNode request = createRequest("reload", Address.root());
+ final ModelNode request = createRequest("reload", Address.root());
request.get("admin-only").set(false);
- ModelNode response = execute(request);
+ final ModelNode response = execute(request);
if (!isSuccess(response)) {
throw new FailureException(response);
}
@@ -177,9 +213,9 @@ public class CoreJBossASClient extends JBossASClient {
* @throws Exception
*/
public void shutdown(boolean restart) throws Exception {
- ModelNode request = createRequest("shutdown", Address.root());
+ final ModelNode request = createRequest("shutdown", Address.root());
request.get("restart").set(restart);
- ModelNode response = execute(request);
+ final ModelNode response = execute(request);
if (!isSuccess(response)) {
throw new FailureException(response);
}
diff --git a/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/InstallerGWTServiceImpl.java b/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/InstallerGWTServiceImpl.java
index 47a3306..ecda87c 100644
--- a/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/InstallerGWTServiceImpl.java
+++ b/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/InstallerGWTServiceImpl.java
@@ -316,10 +316,13 @@ public class InstallerGWTServiceImpl extends RemoteServiceServlet implements Ins
// create a keystore whose cert has a CN of this server's public endpoint address
ServerInstallUtil.createKeystore(serverDetails, getAppServerConfigDir());
+ // Make sure our deployment scanner is configured to be ready for deploy our services and application
+ ServerInstallUtil.configureDeploymentScanner(getClient());
+
// now create our deployment services and our main EAR
deployServices(serverProperties);
- // deploy the EAR and undeploy this installer - this will shut us down within seconds, return fast!
+ // deploy the EAR
deployApp();
// some of the changes we made require the app server container to reload
diff --git a/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/ServerInstallUtil.java b/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/ServerInstallUtil.java
index 14046ae..aa0b27c 100644
--- a/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/ServerInstallUtil.java
+++ b/modules/enterprise/gui/installer/src/main/java/org/rhq/enterprise/gui/installer/server/servlet/ServerInstallUtil.java
@@ -46,6 +46,7 @@ import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.dmr.ModelNode;
import org.rhq.common.jbossas.client.controller.Address;
+import org.rhq.common.jbossas.client.controller.CoreJBossASClient;
import org.rhq.common.jbossas.client.controller.DatasourceJBossASClient;
import org.rhq.common.jbossas.client.controller.FailureException;
import org.rhq.common.jbossas.client.controller.JBossASClient;
@@ -99,10 +100,28 @@ public class ServerInstallUtil {
private static final String JDBC_DRIVER_ORACLE = "oracle";
/**
+ * Configure the deployment scanner to get ready to deploy the application.
+ * @param mcc JBossAS management client
+ * @throws Exception
+ */
+ public static void configureDeploymentScanner(ModelControllerClient mcc) throws Exception {
+ CoreJBossASClient client = new CoreJBossASClient(mcc);
+
+ // the EAR could take a long time to deploy, increase the deployment timeout
+ client.setAppServerDefaultDeploymentTimeout(1800); // 30 minutes should be plenty of time
+
+ // We don't need to scan the deployment directory after everything is installed.
+ // TODO: We would like this to be 0, so it only scans at startup, but the installer
+ // will need the scanner to deploy the ear after the .dodeploy is created.
+ //client.setAppServerDefaultDeploymentScanInterval(0);
+ }
+
+ /**
* Prepares the mail service by configuring the SMTP settings.
*
* @param mcc JBossAS management client
* @param serverProperties the server's properties
+ * @throws Exception
*/
public static void setupMailService(ModelControllerClient mcc, HashMap<String, String> serverProperties)
throws Exception {