Search code examples
isis

Using different database provider settings in production


Say I want to use a different configuration in development and production, and want to switch between the two easily, so that my IDE just works out of the box with the development settings, and with a simple Maven command I am able to create a functioning WAR.

Lots of the properties are stored in the Isis properties files under resources. I know the Maven resources plugin can replace el-expressions with environment variables and Maven properties. This replacement is however only done in packaging phase, so the expressions are useless in “development”.

Did someone figured out a good approach? Is there a way to load different configuration files in production?


Solution

  • We currently override the defaults in context.xml to point to different config files on dev, test and prod boxes:

    <Context>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <Manager pathname="" />
        <Parameter name="shiroConfigLocations" value="file:/var/isis-config/shiro.ini" override="false" />
        <Parameter name="isis.config.dir" value="/var/isis-config/" override="false" />
        <Parameter name="wicket.configuration" value="deployment" override="false" /> 
    </Context>
    

    The /var/isis-config folder contains the following files:

    • isis.properties
    • logging.properties
    • persistor.properties
    • persistor_datanucleus.properties
    • shiro.ini
    • viewer_wicket.properties