Class AbstractEc2InstanceLaunchingFactoryBean

  • All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean
    Direct Known Subclasses:
    ContextSourceEc2InstanceLaunchingFactoryBean

    public abstract class AbstractEc2InstanceLaunchingFactoryBean
    extends org.springframework.beans.factory.config.AbstractFactoryBean
    Abstract FactoryBean superclass to use for automatically launching an EC2 instance before creating the actual target object. This approach is particularly useful for integration testing purposes - the idea is to have particular EC2 images prepared for running integration tests against certain server configurations, enabling integration tests aimed at e.g. a particluar DB server to run transparently at the computer of each individual developer without having to have the actual server software installed on their computers.

    Public AMIs will need to be created, bundled and registered for each server setup. A subclass of this FactoryBean is then added to create the actual target object (e.g. a DataSource), implementing the {link #doCreateInstance} method. This method will be supplied the IP address of the instance that was created, enabling the subclass to configure the created instance appropriately.

    • Field Summary

      • Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean

        logger
      • Fields inherited from interface org.springframework.beans.factory.FactoryBean

        OBJECT_TYPE_ATTRIBUTE
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object createInstance()  
      protected void destroyInstance​(java.lang.Object ignored)  
      protected abstract java.lang.Object doCreateInstance​(java.lang.String ip)
      Implement to create the actual target object.
      void setAwsKey​(java.lang.String awsKey)
      Set the AWS key.
      void setAwsSecretKey​(java.lang.String awsSecretKey)
      Set the AWS secret key.
      void setGroupName​(java.lang.String groupName)
      Set the name of the access group.
      void setImageName​(java.lang.String imageName)
      Set the name of the AMI image to be launched.
      void setKeypairName​(java.lang.String keypairName)
      Set the name of the keypair.
      • Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean

        afterPropertiesSet, destroy, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, getObjectType, isSingleton, setBeanClassLoader, setBeanFactory, setSingleton
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AbstractEc2InstanceLaunchingFactoryBean

        public AbstractEc2InstanceLaunchingFactoryBean()
    • Method Detail

      • setImageName

        public void setImageName​(java.lang.String imageName)
        Set the name of the AMI image to be launched.
        Parameters:
        imageName - the AMI image name.
      • setAwsKey

        public void setAwsKey​(java.lang.String awsKey)
        Set the AWS key.
        Parameters:
        awsKey - the AWS key.
      • setAwsSecretKey

        public void setAwsSecretKey​(java.lang.String awsSecretKey)
        Set the AWS secret key.
        Parameters:
        awsSecretKey - the aws secret key.
      • setKeypairName

        public void setKeypairName​(java.lang.String keypairName)
        Set the name of the keypair.
        Parameters:
        keypairName - The keypair name.
      • setGroupName

        public void setGroupName​(java.lang.String groupName)
        Set the name of the access group. This group should be configured with the appropriate ports open for this test case to execute.
        Parameters:
        groupName - the group name.
      • createInstance

        protected final java.lang.Object createInstance()
                                                 throws java.lang.Exception
        Specified by:
        createInstance in class org.springframework.beans.factory.config.AbstractFactoryBean
        Throws:
        java.lang.Exception
      • doCreateInstance

        protected abstract java.lang.Object doCreateInstance​(java.lang.String ip)
                                                      throws java.lang.Exception
        Implement to create the actual target object.
        Parameters:
        ip - the ip address of the launched EC2 image.
        Returns:
        the object to be returned by this FactoryBean.
        Throws:
        java.lang.Exception - if an error occurs during initialization.
      • destroyInstance

        protected void destroyInstance​(java.lang.Object ignored)
                                throws java.lang.Exception
        Overrides:
        destroyInstance in class org.springframework.beans.factory.config.AbstractFactoryBean
        Throws:
        java.lang.Exception