Application datasource Property not accessible in CFM Template
The following is running on a ColdFusion 2018 server (in the event this is a version-specific issue).
I'm setting the Application datasource property in the onApplicationStart() LifeCycle Handler, but the datasource property isn't accessible in a CFM Template.
I'm thinking it may have something to do with how the this Scope is handled inside the onApplicationStart() method, but I'm not certain. I tried setting the datasource property using this.datasource as well as Application.datasource, but it's not accessible in the CFM Template either way.
Application.cfc
// The usual App config stuff here... (omitted for brevity) // Instantiate Instance of Java System Object used to set System Env Vars this.System = createObject("java", "java.lang.System"); // Include Config files include "resources/config/AppSettings.cfm"; include "resources/config/onApplicationStart.cfm";
AppSettings.cfm
if (! isDefined(this.System.getProperty("DB_DSN_CREATED"))) { // Code to read values from .env file here ... (omitted for brevity) // Set System Env Vars this.System.setProperty("DB_USER_NAME", "DB USERNAME FROM .ENV FILE HERE"); this.System.setProperty("DB_USER_PASSWORD", "DB PASSWORD FROM .ENV FILE HERE"); }
onApplicationStart.cfm
public void function onApplicationStart() {
if (! isDefined(this.System.getProperty("DB_DSN_CREATED"))) { this.datasources = {MY_DSN = { PROPS FOR DB CONNECTION HERE }}; // *** NOTE: This is the Property that isn't accessible in the CFM Template // I also tried Application.datasource, but that didn't work either this.datasource = "MY_DSN"; this.System.setProperty("DB_DSN_CREATED", true); }
}
db-test.cfm
variables.appInstance = createObject('component', 'Application'); variables.sql = "SQL STATEMENT HERE"; variables.sqlParams = {}; // *** NOTE: variables.appInstance.datasource below isn't accessible // I also tried Application.datasource but that didn't work either variables.sqlResult = queryExecute(variables.sql, variables.sqlParams, {datasource = variables.appInstance.datasource}); writeDump(variables.sqlResult);
Does anyone see what I'm missing? Thanks in advance for any guidance!
