Class AbstractEc2InstanceLaunchingFactoryBean

java.lang.Object
org.springframework.beans.factory.config.AbstractFactoryBean
org.springframework.ldap.test.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.

  • Constructor Details

    • AbstractEc2InstanceLaunchingFactoryBean

      public AbstractEc2InstanceLaunchingFactoryBean()
  • Method Details

    • setImageName

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

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

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

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

      public void setGroupName(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 Object createInstance() throws Exception
      Specified by:
      createInstance in class org.springframework.beans.factory.config.AbstractFactoryBean
      Throws:
      Exception
    • doCreateInstance

      protected abstract Object doCreateInstance(String ip) throws 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:
      Exception - if an error occurs during initialization.
    • destroyInstance

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