I am trying to run the DnsNotifier example in my CloudStack Environment, I am having trouble with the Spring wiring. I modified the DnsNotifier.java file to add @Component annotation and modified the two files componentContext.xml.in and nonossComponentContext.xml.in to add reference to the DnsNotifier. I get everything to build but the Spring Class Loader can not find DnsNotifier Class to load, what more needs to be done to get this to run? -Soheil
ovider,databaseUpgradeChecker,configurationDaoImpl,GlobalLoadBalancingRulesServiceImpl,DnsNotifier,niciraNvpDaoImpl,niciraNvpNicMappingDaoImpl,niciraNvpRouterMappingDaoImpl,NiciraNvpGuestNetworkGuru,NiciraNvp,MidoNetGuestNetworkGuru,MidoNetElement,userAuthenticators,userPasswordEncoders,securityCheckers,resourceDiscoverers,haInvestigators,haFenceBuilders,deploymentPlanners,podAllocators,hostAllocators,storagePoolAllocators,ipDeployers,dhcpProviders,networkGurus,networkElements,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy ERROR [web.context.ContextLoader] (main:) Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'actionEventUtils': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.cloud.event.dao.EventDao com.cloud.event.ActionEventUtils.eventDao; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.cloudstack.network.element.DnsNotifier] for bean with name 'DnsNotifier' defined in class path resource [componentContext.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.cloudstack.network.element.DnsNotifier Administrators-MacBook-Pro-7:cloudstack seizadi$ find . -name DnsNotifier.class ./plugins/network-elements/dns-notifier/target/classes/org/apache/cloudstack/network/element/DnsNotifier.class diff --git a/plugins/network-elements/dns-notifier/src/org/apache/cloudstack/network/element/DnsNotifier.java b/plugins/network-elements/dns-notifier/src/org/apache/cloudstack/network/element/DnsNotifier.java index c421344..8f8986d 100644 --- a/plugins/network-elements/dns-notifier/src/org/apache/cloudstack/network/element/DnsNotifier.java +++ b/plugins/network-elements/dns-notifier/src/org/apache/cloudstack/network/element/DnsNotifier.java @@ -22,7 +22,9 @@ import java.util.Map; import java.util.Set; import javax.ejb.Local; -import javax.naming.ConfigurationException; + +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; @@ -45,13 +47,17 @@ import com.cloud.vm.VirtualMachineProfile; * @author ahuang * */ + +@Component @Local(NetworkElement.class) public class DnsNotifier extends AdapterBase implements NetworkElement { diff --git a/client/tomcatconf/componentContext.xml.in b/client/tomcatconf/componentContext.xml.in index bea2f78..202a998 100644 --- a/client/tomcatconf/componentContext.xml.in +++ b/client/tomcatconf/componentContext.xml.in @@ -46,6 +46,14 @@ <bean id="configurationDaoImpl" class="com.cloud.configuration.dao.ConfigurationDaoImpl" /> <bean id="GlobalLoadBalancingRulesServiceImpl" class ="org.apache.cloudstack.region.gslb.GlobalLoadBalancingRulesServiceImpl" /> + + <bean id="DnsNotifier" class="org.apache.cloudstack.network.element.DnsNotifier"> + <property name="name" value="DnsNotifier"/> + </bean> + <!-- Nicira support components @@ -240,6 +248,8 @@ <ref bean="VpcVirtualRouter"/> <ref bean="NiciraNvp" /> <ref bean="MidoNetElement"/> + <ref bean="DnsNotifier"/> <!-- <ref bean="BareMetalDhcp"/> <ref bean="BareMetalPxe"/> diff --git a/client/tomcatconf/nonossComponentContext.xml.in b/client/tomcatconf/nonossComponentContext.xml.in index fc8a9cd..9da3d06 100644 --- a/client/tomcatconf/nonossComponentContext.xml.in +++ b/client/tomcatconf/nonossComponentContext.xml.in @@ -79,6 +79,13 @@ <bean id="vmwareContextFactory" class="com.cloud.hypervisor.vmware.resource.VmwareContextFactory" /> + <bean id="DnsNotifier" class="org.apache.cloudstack.network.element.DnsNotifier"> + <property name="name" value="DnsNotifier"/> + </bean> + + <!-- Nicira support components --> <bean id="niciraNvpDaoImpl" class="com.cloud.network.dao.NiciraNvpDaoImpl" /> @@ -331,6 +338,8 @@ <ref bean="Ovs"/> <ref bean="SecurityGroupProvider"/> <ref bean="VpcVirtualRouter"/> + <ref bean="DnsNotifier"/> <!-- <ref bean="BareMetalDhcp"/> <ref bean="BareMetalPxe"/>