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 <[email protected]>
Authored: Mon Jan 7 18:21:58 2013 -0800
Committer: Kelven Yang <[email protected]>
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());
+            }
+        }
+       }
 }

Reply via email to