You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2013/01/08 20:07:49 UTC

[1/2] git commit: Hook log4j to Spring bootstrapped Javelin server

Hook log4j to Spring bootstrapped Javelin server


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/b96bb8fe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/b96bb8fe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/b96bb8fe

Branch: refs/heads/javelin
Commit: b96bb8feb9ef44dab99238712bf0d8b83b406466
Parents: 559933f
Author: Kelven Yang <ke...@gmail.com>
Authored: Mon Jan 7 18:21:58 2013 -0800
Committer: Kelven Yang <ke...@gmail.com>
Committed: Mon Jan 7 18:21:58 2013 -0800

----------------------------------------------------------------------
 .../entity/api/db/dao/HostDetailsDaoImpl.java      |    2 +-
 server/src/com/cloud/server/ManagementServer.java  |    2 +
 .../com/cloud/server/ManagementServerExtImpl.java  |   45 +++++----
 .../src/com/cloud/server/ManagementServerImpl.java |   61 +++++++++++-
 .../src/com/cloud/servlet/CloudStartupServlet.java |   74 ++++----------
 5 files changed, 104 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b96bb8fe/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostDetailsDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostDetailsDaoImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostDetailsDaoImpl.java
index 87d516b..ee5c809 100644
--- a/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostDetailsDaoImpl.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/datacenter/entity/api/db/dao/HostDetailsDaoImpl.java
@@ -31,7 +31,7 @@ import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.Transaction;
 
-//@Component(value="EngineHostDetailsDao")
+@Component(value="EngineHostDetailsDao")
 @Local(value=HostDetailsDao.class)
 public class HostDetailsDaoImpl extends GenericDaoBase<DetailVO, Long> implements HostDetailsDao {
     protected final SearchBuilder<DetailVO> HostSearch;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b96bb8fe/server/src/com/cloud/server/ManagementServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java
index 941d30c..0b77acd 100755
--- a/server/src/com/cloud/server/ManagementServer.java
+++ b/server/src/com/cloud/server/ManagementServer.java
@@ -38,6 +38,8 @@ public interface ManagementServer extends ManagementService {
      */
     long getId();
     
+    void startup();
+    
     /**
      * Fetches the version of cloud stack
     */

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b96bb8fe/server/src/com/cloud/server/ManagementServerExtImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerExtImpl.java b/server/src/com/cloud/server/ManagementServerExtImpl.java
index 992d006..8c4b388 100644
--- a/server/src/com/cloud/server/ManagementServerExtImpl.java
+++ b/server/src/com/cloud/server/ManagementServerExtImpl.java
@@ -23,6 +23,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
 
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+
 import com.cloud.api.commands.GenerateUsageRecordsCmd;
 import com.cloud.api.commands.GetUsageRecordsCmd;
 import com.cloud.domain.dao.DomainDao;
@@ -39,33 +45,32 @@ import com.cloud.user.Account;
 import com.cloud.user.AccountVO;
 import com.cloud.user.UserContext;
 import com.cloud.user.dao.AccountDao;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.Filter;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.Transaction;
 
+@Component
+@Primary
 public class ManagementServerExtImpl extends ManagementServerImpl implements ManagementServerExt {
-    private final AccountDao _accountDao;
-    private final DomainDao _domainDao;
-    private final UsageDao _usageDao;
-    private final UsageJobDao _usageJobDao;
-    private final TimeZone _usageTimezone;
-
-    protected ManagementServerExtImpl() {
-        super();
-
-        ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name);
-        _accountDao = locator.getDao(AccountDao.class);
-        _domainDao = locator.getDao(DomainDao.class);
-        _usageDao = locator.getDao(UsageDao.class);
-        _usageJobDao = locator.getDao(UsageJobDao.class);
+    @Inject private AccountDao _accountDao;
+    @Inject private DomainDao _domainDao;
+    @Inject private UsageDao _usageDao;
+    @Inject private UsageJobDao _usageJobDao;
+    private TimeZone _usageTimezone;
 
+    public ManagementServerExtImpl() {
+    }
+    
+    @PostConstruct
+    void init() {
+    	super.init();
+    	
         Map<String, String> configs = getConfigs();
-        String timeZoneStr = configs.get("usage.aggregation.timezone");
-        if (timeZoneStr == null) {
-            timeZoneStr = "GMT";
-        }
-        _usageTimezone = TimeZone.getTimeZone(timeZoneStr);
+       String timeZoneStr = configs.get("usage.aggregation.timezone");
+       if (timeZoneStr == null) {
+           timeZoneStr = "GMT";
+       }
+       _usageTimezone = TimeZone.getTimeZone(timeZoneStr);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b96bb8fe/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 0780bdd..d98825b 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -221,10 +221,12 @@ import com.cloud.utils.Ternary;
 import com.cloud.utils.component.Adapters;
 import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.component.ComponentLocator;
+import com.cloud.utils.component.SystemIntegrityChecker;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.crypt.DBEncryptionUtil;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;
+import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GlobalLock;
 import com.cloud.utils.db.JoinBuilder;
 import com.cloud.utils.db.JoinBuilder.JoinType;
@@ -314,11 +316,11 @@ public class ManagementServerImpl implements ManagementServer {
     @Inject private ConfigurationManager _configMgr;
     @Inject private ResourceTagDao _resourceTagDao;
     
-    @Inject private ProjectManager _projectMgr;
-    @Inject private ResourceManager _resourceMgr;
-    @Inject private SnapshotManager _snapshotMgr;
-    @Inject private HighAvailabilityManager _haMgr;
-    @Inject private HostTagsDao _hostTagsDao;
+    @Inject ProjectManager _projectMgr;
+    @Inject ResourceManager _resourceMgr;
+    @Inject SnapshotManager _snapshotMgr;
+    @Inject HighAvailabilityManager _haMgr;
+    @Inject HostTagsDao _hostTagsDao;
 
     @Inject ComponentContext _placeholder;
     
@@ -357,7 +359,54 @@ public class ManagementServerImpl implements ManagementServer {
             _availableIdsMap.put(id, true);
         }
     }
-
+    
+    public void startup() {
+    	s_logger.info("Startup CloudStack management server...");
+    	initCloudStackComponents();
+    }
+    
+	private void initCloudStackComponents() {
+        runCheckers();
+        startDaos();    // daos should not be using managers and adapters.
+     
+/*        
+        configureManagers();
+        configureAdapters();
+        startManagers();
+        startAdapters();
+*/	
+	}
+	
+    private void runCheckers() {
+		Map<String, SystemIntegrityChecker> checkers = ComponentContext.getApplicationContext().getBeansOfType(
+			SystemIntegrityChecker.class);
+		
+		for(SystemIntegrityChecker checker : checkers.values()) {
+			try {
+				checker.check();
+			} catch (Exception e) {
+                s_logger.error("Problems with running checker:" + checker.getClass().getName(), e);
+                System.exit(1);
+			}
+		}
+    }
+	
+    private void startDaos() {
+		@SuppressWarnings("rawtypes")
+		Map<String, GenericDaoBase> daos = ComponentContext.getApplicationContext().getBeansOfType(
+				GenericDaoBase.class);
+			
+		for(GenericDaoBase dao : daos.values()) {
+			try {
+				
+				// dao.configure(dao.getClass().getSimpleName(), params);
+			} catch (Exception e) {
+                s_logger.error("Problems with running checker:" + dao.getClass().getName(), e);
+                System.exit(1);
+			}
+		}
+    }
+  
     protected Map<String, String> getConfigs() {
         return _configs;
     }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/b96bb8fe/server/src/com/cloud/servlet/CloudStartupServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/servlet/CloudStartupServlet.java b/server/src/com/cloud/servlet/CloudStartupServlet.java
index c3ce52f..dfd4c60 100755
--- a/server/src/com/cloud/servlet/CloudStartupServlet.java
+++ b/server/src/com/cloud/servlet/CloudStartupServlet.java
@@ -16,7 +16,7 @@
 // under the License.
 package com.cloud.servlet;
 
-import java.util.Map;
+import java.io.File;
 
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
@@ -24,32 +24,32 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 
 import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+import org.apache.log4j.xml.DOMConfigurator;
 
 import com.cloud.api.ApiServer;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.server.ConfigurationServer;
 import com.cloud.server.ManagementServer;
+import com.cloud.utils.PropertiesUtil;
 import com.cloud.utils.SerialVersionUID;
 import com.cloud.utils.component.ComponentContext;
-import com.cloud.utils.component.ComponentLocator;
-import com.cloud.utils.component.SystemIntegrityChecker;
-import com.cloud.utils.db.GenericDaoBase;
 
 public class CloudStartupServlet extends HttpServlet implements ServletContextListener {
 	public static final Logger s_logger = Logger.getLogger(CloudStartupServlet.class.getName());
 	
     static final long serialVersionUID = SerialVersionUID.CloudStartupServlet;
    
-    protected static ComponentLocator s_locator;
-    
 	@Override
     public void init() throws ServletException {
-		
-	    // Save Configuration Values
+    	initLog4j();
+
+    	// Save Configuration Values
  	    ConfigurationServer c = (ConfigurationServer)ComponentContext.getCompanent(ConfigurationServer.class);
 	    try {
 	    	c.persistDefaultValues();
 		    ManagementServer ms = (ManagementServer)ComponentContext.getCompanent(ManagementServer.class);
+		    ms.startup();
 		    ApiServer.initApiServer(ms.getApiConfig());
 	    } catch (InvalidParameterValueException ipve) {
 	    	s_logger.error("Exception starting management server ", ipve);
@@ -73,50 +73,18 @@ public class CloudStartupServlet extends HttpServlet implements ServletContextLi
 	@Override
 	public void contextDestroyed(ServletContextEvent sce) {
 	}
-
-	//
-	// following should be moved to CloudStackServer component later to encapsulate business logic in one place
-	//
-	private void initCloudStackComponents() {
-        runCheckers();
-        startDaos();    // daos should not be using managers and adapters.
-     
-/*        
-        configureManagers();
-        configureAdapters();
-        startManagers();
-        startAdapters();
-*/	
-	}
-	
-    private void runCheckers() {
-		Map<String, SystemIntegrityChecker> checkers = ComponentContext.getApplicationContext().getBeansOfType(
-			SystemIntegrityChecker.class);
-		
-		for(SystemIntegrityChecker checker : checkers.values()) {
-			try {
-				checker.check();
-			} catch (Exception e) {
-                s_logger.error("Problems with running checker:" + checker.getClass().getName(), e);
-                System.exit(1);
-			}
-		}
-    }
-	
-    private void startDaos() {
-		@SuppressWarnings("rawtypes")
-		Map<String, GenericDaoBase> daos = ComponentContext.getApplicationContext().getBeansOfType(
-				GenericDaoBase.class);
-			
-		for(GenericDaoBase dao : daos.values()) {
-			try {
-				
-				// dao.configure(dao.getClass().getSimpleName(), params);
-			} catch (Exception e) {
-                s_logger.error("Problems with running checker:" + dao.getClass().getName(), e);
-                System.exit(1);
-			}
-		}
-    }
 	
+	private void initLog4j() {
+        File file = PropertiesUtil.findConfigFile("log4j-cloud.xml");
+        if (file != null) {
+            s_logger.info("log4j configuration found at " + file.getAbsolutePath());
+            DOMConfigurator.configureAndWatch(file.getAbsolutePath());
+        } else {
+            file = PropertiesUtil.findConfigFile("log4j-cloud.properties");
+            if (file != null) {
+                s_logger.info("log4j configuration found at " + file.getAbsolutePath());
+                PropertyConfigurator.configureAndWatch(file.getAbsolutePath());
+            }
+        }
+	}
 }