Roy Golan has uploaded a new change for review.

Change subject: core: CDI - EJB cleanup - Backend and Scheduler
......................................................................

core: CDI - EJB cleanup - Backend and Scheduler

Remove all Backend and Scheduler EJB annotations and make them regular
java beans, basically by adding a default no-args constructor and removing
all EJB annotation :)

Next, care for an application init method which will load the backend as
@Startup is no longer there.

Once the CDI container loads the backend it will inject its
dependencies, Dbfacade, Scheduler and so on, which will init them
implicitly.

This means we have a trivial startup routine which is driven by
dependencies - load the bean with the most dependencies(here Backend) and the
container will init them, if necessary.

Change-Id: I126fa3f4240e81814ec9e902cb2e93ce364589ff
Signed-off-by: Roy Golan <[email protected]>
---
M backend/manager/modules/bll/pom.xml
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/KerberosManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersDomainsCacheManagerService.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lock/InMemoryLockManager.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Config.java
M backend/manager/modules/scheduler/pom.xml
M 
backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
A backend/manager/modules/scheduler/src/main/resources/META-INF/beans.xml
M frontend/webadmin/modules/frontend/pom.xml
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
15 files changed, 112 insertions(+), 169 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/19887/1

diff --git a/backend/manager/modules/bll/pom.xml 
b/backend/manager/modules/bll/pom.xml
index 1e7e00b..2b76732 100644
--- a/backend/manager/modules/bll/pom.xml
+++ b/backend/manager/modules/bll/pom.xml
@@ -8,7 +8,7 @@
   </parent>
 
   <artifactId>bll</artifactId>
-  <packaging>ejb</packaging>
+  <packaging>jar</packaging>
 
   <name>Backend Logic @Service bean</name>
 
@@ -67,8 +67,6 @@
       <groupId>${engine.groupId}</groupId>
       <artifactId>scheduler</artifactId>
       <version>${engine.version}</version>
-      <scope>provided</scope>
-      <type>ejb</type>
     </dependency>
 
     <dependency>
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
index 33aac7b5..eb6dba6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/Backend.java
@@ -6,23 +6,16 @@
 import java.util.concurrent.TimeUnit;
 
 import javax.annotation.PostConstruct;
-import javax.ejb.ConcurrencyManagement;
-import javax.ejb.ConcurrencyManagementType;
-import javax.ejb.DependsOn;
-import javax.ejb.Local;
-import javax.ejb.Singleton;
 import javax.ejb.Startup;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import javax.interceptor.ExcludeClassInterceptors;
-import javax.interceptor.Interceptors;
 
 import org.apache.commons.collections.KeyValue;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.ovirt.engine.core.bll.attestationbroker.AttestThread;
 import org.ovirt.engine.core.bll.context.CommandContext;
-import 
org.ovirt.engine.core.bll.interceptors.ThreadLocalSessionCleanerInterceptor;
 import org.ovirt.engine.core.bll.interfaces.BackendCommandObjectsHandler;
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.bll.job.ExecutionContext;
@@ -45,7 +38,6 @@
 import org.ovirt.engine.core.common.config.ConfigCommon;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.interfaces.ErrorTranslator;
 import org.ovirt.engine.core.common.interfaces.ITagsHandler;
 import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
@@ -72,24 +64,11 @@
 import org.ovirt.engine.core.utils.ejb.BeanType;
 import org.ovirt.engine.core.utils.ejb.EjbUtils;
 import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.utils.osinfo.OsInfoPreferencesLoader;
 import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
 
-// Here we use a Singleton Bean
-// The @Startup annotation is to make sure the bean is initialized on startup.
-// @ConcurrencyManagement - we use bean managed concurrency:
-// Singletons that use bean-managed concurrency allow full concurrent access
-// to all the business and timeout methods in the singleton.
-// The developer of the singleton is responsible for ensuring that the state
-// of the singleton is synchronized across all clients.
-@DependsOn("Scheduler")
-@Local({ BackendLocal.class, BackendInternal.class, 
BackendCommandObjectsHandler.class })
-@Interceptors({ ThreadLocalSessionCleanerInterceptor.class })
-@Singleton
+@ApplicationScoped
 @Startup
-@TransactionAttribute(TransactionAttributeType.SUPPORTS)
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
 public class Backend implements BackendInternal, BackendCommandObjectsHandler {
 
     private ITagsHandler mTagsHandler;
@@ -99,6 +78,12 @@
     private static boolean firstInitialization = true;
     private String poolMonitoringJobId;
     private String autoStartVmsRunnerJobId;
+
+    @Inject
+    private Log log;
+    @Inject
+    private SchedulerUtilQuartzImpl quartz;
+
 
     public static BackendInternal getInstance() {
         return EjbUtils.findBean(BeanType.BACKEND, BeanProxyType.LOCAL);
@@ -130,7 +115,7 @@
         Initialize();
     }
 
-    private static void checkDBConnectivity() {
+    private void checkDBConnectivity() {
         boolean dbUp = false;
         long expectedTimeout =
                 System.currentTimeMillis()
@@ -163,10 +148,6 @@
         return _startedAt;
     }
 
-    /**
-     * Initializes internal data
-     * <exception>VdcBLL.VdcBLLException
-     */
     @Override
     public void Initialize() {
         log.info("Start initializing " + getClass().getSimpleName());
@@ -221,7 +202,7 @@
         Integer sessionTimeOutInvalidationInterval = Config.<Integer> 
GetValue(ConfigValues.UserSessionTimeOutInvalidationInterval);
         // negative value means session should never expire, therefore no need 
to clean sessions.
         if (sessionTimeoutInterval > 0) {
-            
SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(SessionDataContainer.getInstance(),
+            quartz.scheduleAFixedDelayJob(SessionDataContainer.getInstance(),
                     "cleanExpiredUsersSessions", new Class[] {}, new Object[] 
{},
                     sessionTimeoutInterval,
                     sessionTimeOutInvalidationInterval, TimeUnit.MINUTES);
@@ -232,8 +213,8 @@
 
         int vmPoolMonitorIntervalInMinutes = Config.<Integer> 
GetValue(ConfigValues.VmPoolMonitorIntervalInMinutes);
         poolMonitoringJobId =
-                
SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(new 
VmPoolMonitor(),
-                        "managePrestartedVmsInAllVmPools", new Class[] {}, new 
Object[] {},
+                quartz.scheduleAFixedDelayJob(new VmPoolMonitor(),
+                        "managePrestartedVmsInAllVmPools", new Class[]{}, new 
Object[]{},
                         vmPoolMonitorIntervalInMinutes,
                         vmPoolMonitorIntervalInMinutes, TimeUnit.MINUTES);
 
@@ -245,8 +226,8 @@
                         autoStartVmsRunnerIntervalInSeconds, TimeUnit.SECONDS);
 
         int quotaCacheIntervalInMinutes = Config.<Integer> 
GetValue(ConfigValues.QuotaCacheIntervalInMinutes);
-        
SchedulerUtilQuartzImpl.getInstance().scheduleAFixedDelayJob(QuotaManager.getInstance(),
-                "updateQuotaCache",  new Class[] {}, new Object[] {},
+        quartz.scheduleAFixedDelayJob(QuotaManager.getInstance(),
+                "updateQuotaCache", new Class[]{}, new Object[]{},
                 1, quotaCacheIntervalInMinutes, TimeUnit.MINUTES);
         //initializes attestation
         initAttestation();
@@ -312,7 +293,7 @@
     /**
      * Handles compensation in case of uncompleted compensation-aware commands 
resulted from server failure.
      */
-    private static void compensate() {
+    private void compensate() {
         // get all command snapshot entries
         List<KeyValue> commandSnapshots =
                 
DbFacade.getInstance().getBusinessEntitySnapshotDao().getAllCommands();
@@ -666,7 +647,7 @@
     @Override
     @ExcludeClassInterceptors
     public void triggerPoolMonitoringJob() {
-        SchedulerUtilQuartzImpl.getInstance().triggerJob(poolMonitoringJobId);
+        quartz.triggerJob(poolMonitoringJobId);
     }
 
     private void initOsRepository() {
@@ -687,5 +668,4 @@
         return runAction(action, true, 
ExecutionHandler.createDefaultContexForTasks(executionContext));
     }
 
-    private static final Log log = LogFactory.getLog(Backend.class);
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index 3886002..6a55376 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -7,6 +7,7 @@
 import javax.ejb.DependsOn;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
+import javax.inject.Inject;
 
 import org.ovirt.engine.core.bll.gluster.GlusterJobsManager;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
@@ -30,17 +31,14 @@
  * The following bean is created in order to initialize and start all related 
vdsms schedulers
  * in the system after all beans finished initialization
  */
-@Singleton
-@Startup
-@DependsOn({ "Backend"})
 public class InitBackendServicesOnStartupBean implements 
InitBackendServicesOnStartup{
 
-    private static Log log = 
LogFactory.getLog(InitBackendServicesOnStartupBean.class);
+    @Inject
+    private Log log;
 
-    /**
-     * This method is called upon the bean creation as part
-     * of the management Service bean life cycle.
-     */
+    @Inject
+    Backend backend;
+
     @Override
     @PostConstruct
     public void create() {
@@ -55,7 +53,7 @@
             public void migrateVM(List<Guid> initialHosts, Guid vmToMigrate) {
                 MigrateVmParameters parameters = new 
MigrateVmParameters(false, vmToMigrate);
                 parameters.setInitialHosts(new ArrayList<Guid>(initialHosts));
-                
Backend.getInstance().runInternalAction(VdcActionType.MigrateVm,
+                backend.runInternalAction(VdcActionType.MigrateVm,
                         parameters,
                         ExecutionHandler.createInternalJobContext());
             }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
index 34bc364..3a96c1d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsEventListener.java
@@ -4,11 +4,7 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.ejb.DependsOn;
-import javax.ejb.Local;
-import javax.ejb.Stateless;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
+import javax.inject.Inject;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.job.ExecutionContext;
@@ -52,15 +48,16 @@
 import org.ovirt.engine.core.utils.linq.Function;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
 import org.ovirt.engine.core.vdsbroker.MonitoringStrategyFactory;
 
-@Stateless(name = "VdsEventListener")
-@TransactionAttribute(TransactionAttributeType.SUPPORTS)
-@Local(IVdsEventListener.class)
-@DependsOn("Backend")
 public class VdsEventListener implements IVdsEventListener {
+
+    @Inject
+    Backend backend;
+
+    @Inject
+    private Log log;
 
     @Override
     public void vdsMovedToMaintenance(VDS vds) {
@@ -77,7 +74,7 @@
                 new StorageDomainPoolParametersBase(storageDomainId, 
storagePoolId);
         parameters.setIsInternal(true);
         parameters.setInactive(true);
-        boolean isSucceeded = 
Backend.getInstance().runInternalAction(VdcActionType.DeactivateStorageDomain,
+        boolean isSucceeded = 
backend.runInternalAction(VdcActionType.DeactivateStorageDomain,
                 parameters,
                 ExecutionHandler.createInternalJobContext()).getSucceeded();
         return new EventResult(isSucceeded, EventType.DOMAINNOTOPERATIONAL);
@@ -86,7 +83,7 @@
     @Override
     public EventResult masterDomainNotOperational(Guid storageDomainId, Guid 
storagePoolId, boolean isReconstructToInactiveDomains) {
         VdcActionParametersBase parameters = new 
ReconstructMasterParameters(storagePoolId, storageDomainId, true, 
isReconstructToInactiveDomains);
-        boolean isSucceeded = 
Backend.getInstance().runInternalAction(VdcActionType.ReconstructMasterDomain,
+        boolean isSucceeded = 
backend.runInternalAction(VdcActionType.ReconstructMasterDomain,
                 parameters,
                 ExecutionHandler.createInternalJobContext()).getSucceeded();
         return new EventResult(isSucceeded, EventType.RECONSTRUCT);
@@ -113,7 +110,7 @@
         tempVar.setSaveToDb(saveToDb);
         tempVar.setStorageDomainId(domainId);
         tempVar.setShouldBeLogged(logCommand);
-        
Backend.getInstance().runInternalAction(VdcActionType.SetNonOperationalVds, 
tempVar, ExecutionHandler.createInternalJobContext());
+        backend.runInternalAction(VdcActionType.SetNonOperationalVds, tempVar, 
ExecutionHandler.createInternalJobContext());
     }
 
     @Override
@@ -130,7 +127,7 @@
 
                 if (executeSshSoftFencing) {
                     VdcReturnValueBase retVal =
-                            
Backend.getInstance().runInternalAction(VdcActionType.SshSoftFencing,
+                            
backend.runInternalAction(VdcActionType.SshSoftFencing,
                                     new VdsActionParameters(vds.getId()),
                                     
ExecutionHandler.createInternalJobContext());
                     // if SSH Soft Fencing command execution was successful, 
do not execute
@@ -140,7 +137,7 @@
 
                 if 
(MonitoringStrategyFactory.getMonitoringStrategyForVds(vds).isPowerManagementSupported()
                         && shouldExecRealFencing) {
-                    
Backend.getInstance().runInternalAction(VdcActionType.VdsNotRespondingTreatment,
+                    
backend.runInternalAction(VdcActionType.VdsNotRespondingTreatment,
                             new FenceVdsActionParameters(vds.getId(), 
FenceActionType.Restart),
                             ExecutionHandler.createInternalJobContext());
                 }
@@ -151,7 +148,7 @@
     @Override
     public boolean vdsUpEvent(final VDS vds) {
         HostStoragePoolParametersBase params = new 
HostStoragePoolParametersBase(vds);
-        boolean isSucceeded = 
Backend.getInstance().runInternalAction(VdcActionType.InitVdsOnUp, 
params).getSucceeded();
+        boolean isSucceeded = 
backend.runInternalAction(VdcActionType.InitVdsOnUp, params).getSucceeded();
         if (isSucceeded) {
             ThreadPoolUtil.execute(new Runnable() {
                 @Override
@@ -177,7 +174,7 @@
                                             }));
                             ExecutionContext executionContext = new 
ExecutionContext();
                             executionContext.setMonitored(true);
-                            
Backend.getInstance().runInternalMultipleActions(VdcActionType.MigrateVmToServer,
+                            
backend.runInternalMultipleActions(VdcActionType.MigrateVmToServer,
                                     vmToServerParametersList,
                                     executionContext);
                         }
@@ -203,32 +200,32 @@
 
     @Override
     public void processOnCpuFlagsChange(Guid vdsId) {
-        
Backend.getInstance().runInternalAction(VdcActionType.HandleVdsCpuFlagsOrClusterChanged,
+        
backend.runInternalAction(VdcActionType.HandleVdsCpuFlagsOrClusterChanged,
                 new VdsActionParameters(vdsId));
     }
 
     @Override
     public void handleVdsVersion(Guid vdsId) {
-        
Backend.getInstance().runInternalAction(VdcActionType.HandleVdsVersion, new 
VdsActionParameters(vdsId));
+        backend.runInternalAction(VdcActionType.HandleVdsVersion, new 
VdsActionParameters(vdsId));
     }
 
     @Override
     public void processOnVmPoweringUp(Guid vds_id, Guid vmid, String 
display_ip, int display_port) {
-        IVdsAsyncCommand command = 
Backend.getInstance().getResourceManager().GetAsyncCommandForVm(vmid);
+        IVdsAsyncCommand command = 
backend.getResourceManager().GetAsyncCommandForVm(vmid);
 
         if (command != null) {
             command.onPowerringUp();
             if (command.getAutoStart() && command.getAutoStartVdsId() != null) 
{
                 try {
                     String otp64 = Ticketing.GenerateOTP();
-                    Backend.getInstance()
+                    backend
                             .getResourceManager()
                             .RunVdsCommand(VDSCommandType.SetVmTicket,
                                     new 
SetVmTicketVDSCommandParameters(vds_id, vmid, otp64, 60, "", Guid.Empty));
                     log.infoFormat(
                             "VdsEventListener.ProcessOnVmPoweringUp - Auto 
start logic, starting spice to vm - {0} ",
                             vmid);
-                    Backend.getInstance()
+                    backend
                             .getResourceManager()
                             .RunVdsCommand(
                                     VDSCommandType.StartSpice,
@@ -269,7 +266,7 @@
         if (transactionScopeOption != null) {
             tempVar.setTransactionScopeOption(transactionScopeOption);
         }
-        
Backend.getInstance().runInternalAction(VdcActionType.SetStoragePoolStatus, 
tempVar);
+        backend.runInternalAction(VdcActionType.SetStoragePoolStatus, tempVar);
     }
 
     @Override
@@ -289,7 +286,7 @@
                 event.getVmName(), vmId);
 
         // Try to start it again:
-        final VdcReturnValueBase result = 
Backend.getInstance().runInternalAction(VdcActionType.RunVm,
+        final VdcReturnValueBase result = 
backend.runInternalAction(VdcActionType.RunVm,
                 new RunVmParams(vmId),
                 ExecutionHandler.createInternalJobContext());
 
@@ -322,7 +319,7 @@
 
     @Override
     public void rerun(Guid vmId) {
-        final IVdsAsyncCommand command = 
Backend.getInstance().getResourceManager().GetAsyncCommandForVm(vmId);
+        final IVdsAsyncCommand command = 
backend.getResourceManager().GetAsyncCommandForVm(vmId);
         if (command != null) {
             // The command will be invoked in a different VDS in its rerun 
method, so we're calling
             // its rerun method from a new thread so that it won't be executed 
within our current VDSM lock
@@ -337,7 +334,7 @@
 
     @Override
     public void runningSucceded(Guid vmId) {
-        IVdsAsyncCommand command = 
Backend.getInstance().getResourceManager().GetAsyncCommandForVm(vmId);
+        IVdsAsyncCommand command = 
backend.getResourceManager().GetAsyncCommandForVm(vmId);
         if (command != null) {
             command.runningSucceded();
         }
@@ -345,11 +342,10 @@
 
     @Override
     public void removeAsyncRunningCommand(Guid vmId) {
-        IVdsAsyncCommand command = 
Backend.getInstance().getResourceManager().RemoveAsyncRunningCommand(vmId);
+        IVdsAsyncCommand command = 
backend.getResourceManager().RemoveAsyncRunningCommand(vmId);
         if (command != null) {
             command.reportCompleted();
         }
     }
 
-    private static Log log = LogFactory.getLog(VdsEventListener.class);
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/KerberosManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/KerberosManager.java
index a11fee7..27cf850 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/KerberosManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/KerberosManager.java
@@ -2,6 +2,7 @@
 
 import java.io.File;
 
+import org.ovirt.engine.core.common.config.AppConfig;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
@@ -15,31 +16,27 @@
 import javax.ejb.Startup;
 import javax.ejb.ConcurrencyManagement;
 import javax.ejb.ConcurrencyManagementType;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 
 /**
  * Manage the container's Kerberos initialization.
  *
  */
-// Here we use a Singleton bean
-// The @Startup annotation is to make sure the bean is initialized on startup.
-// @ConcurrencyManagement - we use bean managed concurrency:
-// Singletons that use bean-managed concurrency allow full concurrent access 
to all the
-// business and timeout methods in the singleton.
-// The developer of the singleton is responsible for ensuring that the state 
of the singleton is synchronized across all clients.
-// The @DependsOn annotation is in order to make sure it is started after the 
Backend bean is initialized
+@ApplicationScoped
 @SuppressWarnings("restriction")
-@Singleton
-@Startup
-@DependsOn("Backend")
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
 public class KerberosManager implements KerberosManagerSericeManagmentMBean {
 
-    private static Log log = LogFactory.getLog(KerberosManager.class);
+    @Inject
+    private Log log;
+
+    @Inject
+    AppConfig config;
 
     private boolean isKerberosAuth() {
         boolean isKerberosAuth = false;
-        String authMethod = 
org.ovirt.engine.core.common.config.Config.<String> 
GetValue(ConfigValues.AuthenticationMethod);
-        String domainName = 
org.ovirt.engine.core.common.config.Config.<String> 
GetValue(ConfigValues.DomainName);
+        String authMethod = config.<String> 
getValue(ConfigValues.AuthenticationMethod);
+        String domainName = config.<String> getValue(ConfigValues.DomainName);
         String ldapSecurityAuthentication = 
org.ovirt.engine.core.common.config.Config.<String> 
GetValue(ConfigValues.LDAPSecurityAuthentication);
 
         if (authMethod.equalsIgnoreCase("LDAP")) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersDomainsCacheManagerService.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersDomainsCacheManagerService.java
index 7be4df5..13bc902 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersDomainsCacheManagerService.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/adbroker/UsersDomainsCacheManagerService.java
@@ -9,23 +9,15 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.annotation.PostConstruct;
-import javax.ejb.Local;
-import javax.ejb.Singleton;
-import javax.ejb.DependsOn;
-import javax.ejb.Startup;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
-import javax.ejb.ConcurrencyManagement;
-import javax.ejb.ConcurrencyManagementType;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.DbUserCacheManager;
 import org.ovirt.engine.core.common.businessentities.LdapGroup;
-import org.ovirt.engine.core.common.config.Config;
+import org.ovirt.engine.core.common.config.AppConfig;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.utils.EnumUtils;
-import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.dal.dbbroker.generic.DomainsPasswordMap;
 import org.ovirt.engine.core.ldap.LdapProviderType;
 import org.ovirt.engine.core.ldap.LdapSRVLocator;
@@ -35,24 +27,16 @@
 import org.ovirt.engine.core.utils.ejb.EjbUtils;
 import org.ovirt.engine.core.utils.kerberos.AuthenticationResult;
 import org.ovirt.engine.core.utils.kerberos.KerberosUtils;
+import org.ovirt.engine.core.utils.log.Log;
 
 
-// Here we use a Singleton bean
-// The @Startup annotation is to make sure the bean is initialized on startup.
-// @ConcurrencyManagement - we use bean managed concurrency:
-// Singletons that use bean-managed concurrency allow full concurrent access 
to all the
-// business and timeout methods in the singleton.
-// The developer of the singleton is responsible for ensuring that the state 
of the singleton is synchronized across all clients.
-// The @DependsOn annotation is in order to make sure it is started after the 
stated beans are initialized
-@Singleton
-@Startup
-@DependsOn({"Backend","Scheduler","KerberosManager"})
-@Local(UsersDomainsCacheManager.class)
-@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
+@ApplicationScoped
 public class UsersDomainsCacheManagerService implements 
UsersDomainsCacheManager {
 
-    private static Log log = 
LogFactory.getLog(UsersDomainsCacheManagerService.class);
+    @Inject
+    private Log log;
+    @Inject
+    AppConfig config;
     private Map<String, Domain> domainsByName = new HashMap<String, Domain>();
     private Map<String, ConcurrentHashMap<String, UserDomainInfo>> 
domainsUsersInfoByUserNameAndDomainName =
             new HashMap<String, ConcurrentHashMap<String, UserDomainInfo>>();
@@ -71,10 +55,10 @@
     }
 
     private void fillLdapServersMap() {
-        String ldapServerPerDomainEntry = Config.<String> 
GetValue(ConfigValues.LdapServers);
+        String ldapServerPerDomainEntry = config.<String> 
getValue(ConfigValues.LdapServers);
         if (!ldapServerPerDomainEntry.isEmpty()) {
             String[] domainServerPairs = ldapServerPerDomainEntry.split(",");
-            int ldapPort = Config.<Integer> 
GetValue(ConfigValues.LDAPServerPort);
+            int ldapPort = config.<Integer> 
getValue(ConfigValues.LDAPServerPort);
 
             for (String domainServerPair : domainServerPairs) {
                 String[] parts = domainServerPair.split(":");
@@ -103,7 +87,7 @@
     // use
     // Note that every change in one will probably require the same change in 
the other
     private void fillUsersMap() {
-        String userPerDomainEntry = Config.<String> 
GetValue(ConfigValues.AdUserName);
+        String userPerDomainEntry = config.<String> 
getValue(ConfigValues.AdUserName);
         if (!userPerDomainEntry.isEmpty()) {
             String[] domainUserPairs = userPerDomainEntry.split(",");
 
@@ -118,12 +102,12 @@
     }
 
     private void fillPasswordsMap() {
-        passwordPerDomain = Config.<DomainsPasswordMap> 
GetValue(ConfigValues.AdUserPassword);
+        passwordPerDomain = config.<DomainsPasswordMap> 
getValue(ConfigValues.AdUserPassword);
     }
 
     private void fillLdapSecurityAuthenticationMap() {
 
-        String ldapSecurityAuthEntry = Config.<String> 
GetValue(ConfigValues.LDAPSecurityAuthentication);
+        String ldapSecurityAuthEntry = config.<String> 
getValue(ConfigValues.LDAPSecurityAuthentication);
         if (!ldapSecurityAuthEntry.isEmpty()) {
             String[] ldapSecurityPairs = ldapSecurityAuthEntry.split(",");
 
@@ -151,7 +135,7 @@
     public void create() {
 
         log.info("Start initializing " + getClass().getSimpleName());
-        String authMethod = Config.<String> 
GetValue(ConfigValues.AuthenticationMethod);
+        String authMethod = config.<String> 
getValue(ConfigValues.AuthenticationMethod);
         if (!authMethod.equalsIgnoreCase("LDAP")) {
             return;
         }
@@ -192,7 +176,7 @@
      */
     protected Map<String, LdapProviderType> parseLDAPProviders() {
         Map<String, LdapProviderType> domainProviderTypes = new 
HashMap<String, LdapProviderType>();
-        for (String pair : StringUtils.split(Config.<String> 
GetValue(ConfigValues.LDAPProviderTypes), ",")) {
+        for (String pair : StringUtils.split(config.<String> 
getValue(ConfigValues.LDAPProviderTypes), ",")) {
             if (pair != null) {
                 String[] split = StringUtils.split(pair, ":");
                 if (split != null && split[0] != null && split[1] != null) {
@@ -261,7 +245,7 @@
     }
 
     private void constructLDAPUrlOnDNSFailure(Domain domain) {
-        int ldapPort = Config.<Integer> GetValue(ConfigValues.LDAPServerPort);
+        int ldapPort = config.<Integer> getValue(ConfigValues.LDAPServerPort);
         StringBuilder ldapURL = new StringBuilder();
         
ldapURL.append("ldap://";).append(domain.getName()).append(":").append(ldapPort);
         try {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java
index 51db089..3b374dc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/eventqueue/EventQueueMonitor.java
@@ -10,12 +10,8 @@
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.locks.ReentrantLock;
 
-import javax.ejb.ConcurrencyManagement;
-import javax.ejb.ConcurrencyManagementType;
-import javax.ejb.Local;
-import javax.ejb.Singleton;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 
 import org.ovirt.engine.core.common.eventqueue.Event;
 import org.ovirt.engine.core.common.eventqueue.EventQueue;
@@ -24,16 +20,13 @@
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.utils.log.Log;
-import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
 
-@Singleton(name = "EventQueue")
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
-@TransactionAttribute(TransactionAttributeType.SUPPORTS)
-@Local(EventQueue.class)
+@ApplicationScoped
 public class EventQueueMonitor implements EventQueue {
 
-    private static Log log = LogFactory.getLog(EventQueueMonitor.class);
+    @Inject
+    Log log;
 
     private static final ConcurrentMap<Guid, ReentrantLock> poolsLockMap = new 
ConcurrentHashMap<Guid, ReentrantLock>();
     private static final Map<Guid, LinkedList<Pair<Event, 
FutureTask<EventResult>>>> poolsEventsMap =
@@ -151,7 +144,7 @@
         return poolsLockMap.get(poolId);
     }
 
-    private static class InternalEventQueueThread implements Runnable {
+    private class InternalEventQueueThread implements Runnable {
 
         private Guid storagePoolId;
         private ReentrantLock lock;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lock/InMemoryLockManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lock/InMemoryLockManager.java
index dbc3c26..deb7827 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lock/InMemoryLockManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lock/InMemoryLockManager.java
@@ -22,6 +22,8 @@
 import javax.ejb.Startup;
 import javax.ejb.TransactionAttribute;
 import javax.ejb.TransactionAttributeType;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
@@ -34,11 +36,7 @@
 /**
  * The following class an implementation of internal locking mechanism
  */
-@Startup
-@Singleton(name = "LockManager")
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
-@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
-@Local(LockManager.class)
+@ApplicationScoped
 public class InMemoryLockManager implements LockManager, 
LockManagerMonitorMXBean {
 
     private static final Pair<Boolean, Set<String>> LOCK_INSERT_SUCCESS_RESULT 
= new Pair<Boolean, Set<String>>(Boolean.TRUE, Collections.<String>emptySet());
@@ -51,7 +49,8 @@
 
     private MBeanServer platformMBeanServer;
     private ObjectName objectName = null;
-    private static Log log = LogFactory.getLog(InMemoryLockManager.class);
+    @Inject
+    private Log log;
 
     @PostConstruct
     public void registerInJMX() {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Config.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Config.java
index 8391659..7b12181 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Config.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Config.java
@@ -5,6 +5,7 @@
  * Config Class
  */
 public final class Config implements AppConfig {
+
     private static IConfigUtilsInterface _configUtils;
 
     private static Config instance = new Config();
diff --git a/backend/manager/modules/scheduler/pom.xml 
b/backend/manager/modules/scheduler/pom.xml
index 6c6a466..5b8706b 100644
--- a/backend/manager/modules/scheduler/pom.xml
+++ b/backend/manager/modules/scheduler/pom.xml
@@ -8,7 +8,7 @@
   </parent>
 
   <artifactId>scheduler</artifactId>
-  <packaging>ejb</packaging>
+  <packaging>jar</packaging>
 
   <name>engine scheduler bean</name>
 
@@ -29,6 +29,11 @@
       <groupId>org.quartz-scheduler</groupId>
       <artifactId>quartz</artifactId>
     </dependency>
+
+    <dependency>
+      <groupId>javax.enterprise</groupId>
+      <artifactId>cdi-api</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
 
b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
index 82e5280..9b09534 100644
--- 
a/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
+++ 
b/backend/manager/modules/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
@@ -14,16 +14,9 @@
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
-import javax.ejb.ConcurrencyManagement;
-import javax.ejb.ConcurrencyManagementType;
-import javax.ejb.DependsOn;
-import javax.ejb.Singleton;
-import javax.ejb.Startup;
-import javax.ejb.TransactionAttribute;
-import javax.ejb.TransactionAttributeType;
+import javax.inject.Inject;
 
 import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.utils.ejb.BeanProxyType;
@@ -38,17 +31,6 @@
 import org.quartz.TriggerKey;
 import org.quartz.impl.StdSchedulerFactory;
 
-// Here we use a Singleton bean, names Scheduler.
-// The @Startup annotation is to make sure the bean is initialized on startup.
-// @ConcurrencyManagement - we use bean managed concurrency:
-// Singletons that use bean-managed concurrency allow full concurrent access 
to all the
-// business and timeout methods in the singleton.
-// The developer of the singleton is responsible for ensuring that the state 
of the singleton is synchronized across all clients.
-@Singleton(name = "Scheduler")
-@DependsOn("LockManager")
-@Startup
-@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
-@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
 public class SchedulerUtilQuartzImpl implements SchedulerUtil {
 
     // consts
@@ -61,8 +43,8 @@
     public static final String CONFIGURABLE_DELAY_KEY_NAME = 
"configDelayKeyName";
     private static final String TRIGGER_PREFIX = "trigger";
 
-    // members
-    private final Log log = LogFactory.getLog(SchedulerUtilQuartzImpl.class);
+    @Inject
+    private Log log;
     private Scheduler sched;
 
     private final AtomicLong sequenceNumber = new AtomicLong(Long.MIN_VALUE);
diff --git 
a/backend/manager/modules/scheduler/src/main/resources/META-INF/beans.xml 
b/backend/manager/modules/scheduler/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/backend/manager/modules/scheduler/src/main/resources/META-INF/beans.xml
diff --git a/frontend/webadmin/modules/frontend/pom.xml 
b/frontend/webadmin/modules/frontend/pom.xml
index 3e5ed74..5c0806e 100644
--- a/frontend/webadmin/modules/frontend/pom.xml
+++ b/frontend/webadmin/modules/frontend/pom.xml
@@ -55,6 +55,11 @@
       <version>${engine.version}</version>
       <scope>provided</scope>
     </dependency>
+      <dependency>
+          <groupId>javax.inject</groupId>
+          <artifactId>javax.inject</artifactId>
+          <version>1</version>
+      </dependency>
   </dependencies>
   <build>
     <resources>
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java
index 780947a..0baabb7 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GenericApiGWTServiceImpl.java
@@ -4,6 +4,7 @@
 import java.util.Random;
 
 import javax.ejb.EJB;
+import javax.inject.Inject;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
@@ -33,10 +34,13 @@
 
     private static final Logger log = 
Logger.getLogger(GenericApiGWTServiceImpl.class);
 
+    @Inject
     private BackendLocal backend;
 
-    @EJB(beanInterface = BackendLocal.class,
-            mappedName = 
"java:global/engine/bll/Backend!org.ovirt.engine.core.common.interfaces.BackendLocal")
+    public GenericApiGWTServiceImpl() {
+    }
+
+    @Inject
     public void setBackend(BackendLocal backend) {
         this.backend = backend;
     }
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
index c392d3f..b782320 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/server/gwt/GwtDynamicHostPageServlet.java
@@ -6,6 +6,7 @@
 import java.util.Locale;
 
 import javax.ejb.EJB;
+import javax.inject.Inject;
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
@@ -73,13 +74,13 @@
     private static final String HOST_JSP = "/GwtHostPage.jsp"; //$NON-NLS-1$
     private static final String UTF_CONTENT_TYPE = "text/html; charset=UTF-8"; 
//$NON-NLS-1$
 
+    @Inject
     private BackendLocal backend;
 
     private ObjectMapper mapper;
     private BrandingManager brandingManager;
 
-    @EJB(beanInterface = BackendLocal.class,
-            mappedName = 
"java:global/engine/bll/Backend!org.ovirt.engine.core.common.interfaces.BackendLocal")
+    @Inject
     public void setBackend(BackendLocal backend) {
         this.backend = backend;
     }


-- 
To view, visit http://gerrit.ovirt.org/19887
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I126fa3f4240e81814ec9e902cb2e93ce364589ff
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Roy Golan <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to