アプリケーション変数

Application.cfc の This スコープには、cfapplication タグで設定した属性に対応する複数のビルトイン変数が含まれています。CFC メソッドを定義する前に、CFC 初期化コードでこれらの変数の値を設定します。任意のメソッドの変数にアクセスできます。

注意:Windows では大文字と小文字は区別されませんが、Application.cfc のファイル名は常に大文字の A で始める必要があります。application.cfc および Application.cfc はいずれも予約語です。

注意:アプリケーションに Application.cfc があり、Application.cfm または onRequestend.cfm ページがある場合、ColdFusion は CFM ページを無視します。

次の表では、アプリケーションの動作を制御するために設定できる変数について簡単に説明します。詳しくは、cfapplication タグを参照してください。

変数 デフォルト 説明
name 名前なし アプリケーション名です。この変数を設定しない場合、または空の文字列に設定した場合、CFC は、ColdFusion J2EE サーブレットコンテキストである、名前のない Application スコープに適用されます。名前のないスコープについて詳しくは、『ColdFusion アプリケーションの開発』の「JSP ページおよびサーブレットとの相互運用」の「ColdFusion アプリケーションへの JSP およびサーブレットの統合」を参照してください。
applicationTimeout Administrator の値 アプリケーション(すべての Application スコープ変数も含む)の有効期間を示す実数値(日数)。この変数の値を生成するには、CFML CreateTimeSpan 関数を使用します。
authcookie.disableupdate False  cfauthorization cookie のアップデートを、cfcookie または cfheader タグを使用して無効にします
authcookie.timeout -1 認証 Cookie の有効期間(日数)です。
authcookie.samesite   有効な値は Struct、Lax または None です。
cache.useInternalQueryCache false true の場合、ColdFusion はキャッシュされたクエリを、最新ではない、非 Ehcache バージョンのキャッシュに保管します。
cache.querysize Administrator の値 キャッシュできる最大クエリ数です。この値は、cfquery タグまたは queryExecute 関数の cachedWithin および cachedAfter による自動キャッシュに適用されます。cachePut を使用すると、必要な数だけクエリを保管できます。ただし、RAM による制限があります。メモリの空き容量に注意してください。
chartStyleDirectory   アプリケーション固有のチャートスタイルディレクトリです。
clientManagement no
  • yes:クライアント変数を有効にします。

  • no

clientStorage Administrator の値 クライアント変数の保存先。cookie、レジストリ、またはデータソースの名前を使用できます。
customtagpaths Administrator の値 ColdFusion カスタムタグのパスを含みます。絶対パスのカンマ区切りのリストです。この変数を使用するには、Administrator のサーバー設定ページで「アプリケーションごとの設定の有効化」オプションを選択します。ここで定義する設定は、現在のアプリケーションに対して Administrator のサーバーの設定マッピングページで定義したカスタムタグのパスより優先されます。
googleMapKey   Web ページに Google マップを埋め込むために必要な Google Map API キーです。
datasource   クエリによってデータを取得するデータソースの名前です。
datasources   データソースを定義する構造体です。この編集を使用して、アプリケーション専用のデータソースを定義できます。これは、ColdFusion Administrator のデータソースを登録/更新しません。
loginStorage cookie ログイン情報を Cookie スコープと Session スコープのいずれに格納するかを示します。
mappings Administrator の値 ColdFusion マッピングを含む構造体です。構造体の各エレメントは、1 つのキーと 1 つの値で構成されます。論理パスはキー、絶対パスは値です。この変数を使用するには、Administrator のサーバーの設定/設定ページで「アプリケーションごとの設定の有効化」オプションを選択します。ここで定義するマッピングは、現在のアプリケーションに対して Administrator のサーバーの設定/マッピングページで定義したマッピングより優先されます。
passArrayByReference False このアプリケーションの値の代わりに、参照用として配列が渡されます。
restSettings.cfclocation   特定の場所にのみ CFS を公開するには、REST CFS が格納されているディレクトリのカンマ区切り リストを提供します。ディレクトリパスは、絶対パスまたは相対パスを設定できます。設定しないと、アプリケーションルートからのすべての CFC が公開されます。
restSettings.skipCFCWithError   エラーが発生した場合、公開を継続し、例外の原因となる CFC を無視します。true の場合、エラーの CFC は無視され、CFC の残りは公開されます。デフォルトでは、false です。false に設定すると、エラーの場合に、アプリケーション自体は公開されません。しかし、他の登録されたアプリケーションは公開されます。アプリケーションの起動中にエラーが発生した場合、エラーはコンソールに表示されます。各アプリケーションには、問題を記録するための個別のログファイルがあります。
restSettings.restEnabled False true の場合、ColdFusion は一連の REST 対応の CF コンポーネントを含むディレクトリを検索します。 
restSettings.autoRegister False アプリケーションの自動登録を有効化します。
restSettings.useHost False ホスト名を指定します。true の場合、ホスト名は URL から解析されます。
restSettings.host  

ホスト名に明示的に名前を指定して、ホスト名を作成します。ホスト名が指定されていない場合は、usehost 名がデフォルトになります。

restSettings.serviceMapping   指定しない場合、この名前で定義されたアプリケーションがデフォルトになります。
restSettings.isDefault False true の場合、アプリケーションはデフォルトのアプリとして作成されます。
sessioncookie.httponly True セッション Cookie を httponly に設定する必要があるかどうかを指定します。つまり、Http リクエストにのみアクセスできます。
sessioncookie.secure False セッション Cookie をセキュアに設定する必要があるかどうかを指定します。つまり、すべてのタイプの接続で返されるか、またはセキュリティ保護されている(https)接続でのみ返されるかを指定します。
sessioncookie.domain   Cookie を設定するドメインです。これは、アプリケーションにアクセスするドメインと完全に一致する必要があります。
sessioncookie.timeout 30 年
セッション Cookie の有効期間(日数)です。
sessioncookie.disableupdate False cfcookie または cfheader タグを使用した cfid および cftoken Cookie の更新を無効にします。
serverSideFormValidation yes フォームの送信時に cfform フィールドで検証を有効にするかどうかを指定します。
sessionManagement no アプリケーションで Session スコープ変数をサポートするかどうかを示します。
sessionTimeout Administrator の値 ユーザーセッション(すべての Session 変数も含む)の有効期間を示す実数値(日数)。この変数の値を生成するには、CFML CreateTimeSpan 関数を使用します。
setClientCookies True クライアントブラウザーに CFID Cookie および CFTOKEN Cookie を送信するかどうかを示します。
setDomainCookies False CFID Cookie および CFTOKEN Cookie を(1 つのホストではなく)ドメイン全体に設定するかどうかを示します。
scriptProtect Administrator の値 変数をクロスサイトスクリプティング攻撃から保護するかどうかを示します。
security.antisamypolicy   Antisamy ポリシーファイルが getSafeHTML または isSafeHTML 関数に渡されない場合に使用される Antisamy ファイルの場所を指定します。ポリシーファイルには、アプリケーションの CFC パスに対する相対パスまたは絶対パスを指定できます。
compileextforinclude   cfinclude タグで許可されるファイル拡張子のリストをカンマ区切りのリストとして指定します。リスト内にワイルドカード * を指定すると、cfinclude タグを使用してインクルードされたすべてのファイルがコンパイル対象になります。cfinclude タグを使用してインクルードされたファイルがこのリストにない場合、その内容はスタティックにインクルードされます。デフォルトでは、拡張子 cfm および cfml を持つファイルは、常に、この設定に関係なくコンパイルされます。
strictnumbervalidation  

True または False です。デフォルトは true です。整数および数値型に対する IsValid 関数では、以前は先頭に通貨記号を、数値内にカンマを使用することができました。

ColdFusion 11 では、isValid 関数の動作は異なります。strictnumbervalidation を false に設定すると、isValid 関数は以前のバージョン(ColdFusion 10 以前)と同じ動作をします。この設定は、以下のタグの動作も変更します。

secureJSON Administrator の値 リモートの呼び出しへの応答として ColdFusion 関数が JSON 形式で返す値の前に、セキュリティの接頭辞を追加するかどうかを指定するブール値です。デフォルト値は、Administrator のサーバーの設定/設定ページの「シリアル化 JSON への接頭辞付加」設定の値(デフォルトは false)です。cffunction タグでこの値を上書きできます。詳しくは、『ColdFusion アプリケーションの開発』の「Ajax プログラミングのルールとテクニック」の「セキュリティの強化」を参照してください。
secureJSONPrefix Administrator の値 secureJSON の設定が true の場合に、リモート呼び出しへの応答として ColdFusion 関数が JSON 形式で返す値の前に挿入するセキュリティの接頭辞です。デフォルト値は、Administrator のサーバーの設定/設定ページの「シリアル化 JSON への接頭辞付加」設定の値(デフォルトは JavaScript のコメント文字である //)です。詳しくは、『ColdFusion アプリケーションの開発』の「Ajax プログラミングのルールとテクニック」の「セキュリティの強化」を参照してください。
serialization.preservecaseforstructkey False 構造体を JSON にシリアル化する場合に構造体キーの大文字と小文字 を維持するかどうかを指定するブール値です。
serialization.serializequeryas row クエリを JSON にシリアル化する方法を指定します。有効な値は次のとおりです。row、column、および struct。
serialization.preserveCaseForQueryColumn false true の場合、列の大文字と小文字が維持されます。
sessioncookie.samesite 
  有効な値は Strict、Lax または None です。
welcomeFileList  

ファイル名のカンマ区切りリストです。ファイルが見つからない場合に、onMissingTemplate メソッドを呼び出さないようにします。この変数を使用して、次のすべての条件を満たす場合は onMissingTemplate ハンドラーを呼び出さないようにします。

  • Web サーバーにウェルカムファイルリスト(例:web.xml ファイル)があり、ディレクトリで終わるパスが URL に指定された場合に実行される index.cfm などの CFML ページが記載されている。
  • Web サーバーは、ページが存在するかどうかを最初に判断せずに、ウェルカムファイルリストの CFML ページのリクエストを ColdFusion に送信する。
  • ウェルカムファイルリストのファイルが存在しないディレクトリについて、ディレクトリ参照をサポートする。
    この変数を指定するのは、Application.cfc ファイルで onMissingTemplate ハンドラーが指定されている場合のみです。ハンドラには web.xml ウェルカムファイルリストと同様のファイルリストが必要です。注意:Apache などの多くの純粋な Web サーバーでは、welcomeFileList 変数を使用する必要はありません。統合型の Web サーバーやアプリケーションサーバーの多くでは、welcomeFileList 変数を使用する必要があります。
smtpServersettings   サーバー、ユーザー名およびパスワードの値を含む構造体です。値が指定されていない場合は、Administrator の値が使用されます。
sameformfieldsasarray false フォームフィールドが同じ名前を持っている場合、ColdFusion で、フォームフィールドをリストではなく配列として変換します。これをおこなうには、Application.cfc で、this.sameformfieldsasarray = "true" と指定します。注意:これを true に設定した場合にのみ、空の文字列値が維持されます。
timeout   この数値は、個別の要求を実行できる時間を表しています。設定したタイムアウト値は、Application.cfc で this.timeout="" を使用して設定したタイムアウト値より優先されます。
debuggingIPAddresses   デバッグを必要とする IP アドレスのリストです。
enablerobustexception   デフォルトの Administrator 設定を上書きします。コンパイル時の例外は報告されません。
javaSettings   コードで利用可能にする Java クラスパスを指定できる構造体です。有効なキーは、loadPaths(Java ライブラリを検索する場合にインクルードするパスの配列)、loadColdFusionClassPath(デフォルトのクラスパスを使用するかどうかを示すブール値。デフォルトは false)および reloadOnChange(クラスパスが変更されたときにクラスパスをリロードするかどうかを示すブール値。デフォルトは false)です。
javasettings.watchInterval   クラスファイルまたは JAR ファイルの変更を調べる間隔(秒単位)を指定します。この属性は、reloadOnChange 属性を true に設定している場合にのみ適用されます。デフォルト値は 60 秒です。
javasettings.watchExtensions   変更を監視するファイルの拡張子を指定します。デフォルトでは、.class ファイルと .jar ファイルだけが監視されます。
searchImplicitScopes true 暗黙のスコープで、スコープの設定されていない変数の検索を有効または無効にできます。
serialization.structmetadata   構造体の値のデータ型情報を設定します。例えば、this.serialization.structmetadata = {zipcode="String"}; の場合、このキーを含む構造体の zipcode にはデータ型を定義する必要はありません。構造体自体に zipcode のデータ型を定義した場合は、構造体のレベルで定義されたデータ型が、Application.cfc で定義されたデータ型よりも優先されます。
enableNullSupport false NULL 変数のサポートを有効または無効にできます。使用できる値は true または false です。
cache.engine ehcache

使用するキャッシュエンジンを指定します。次のエンジンを使用できます。

  • Ehcache
  • JCS
  • Memcached
  • Redis
cache.configFile   キャッシュエンジンのプロパティファイルへのパスです。
restSettings.generateRESTDoc false true の場合、ColdFusion サーバーは Swagger ドキュメントを自動的に生成します。
blockedExtForFileUpload   アップロードをブロックする必要があるファイルのファイル拡張子のカンマ区切りリスト。
useJavaAsRegexEngine false true の場合、デフォルトエンジンではなく、Java が正規表現エンジンとして使用されます。
timeZone
  true の場合は、日付/時刻関数を実行すると、返されるタイムゾーンは、このフラグに設定されているものと同じになります。

同じ名前を持つフォームフィールド

フォームフィールドに同じ名前が設定されているとします。この場合、ColdFusion では、フォームフィールドをリストではなく、配列として変換します。これをおこなうには、Application.cfc で this.sameformfieldsasarray = "true" を指定します。デフォルト値は false です。

ColdFusion(2021 リリース)

this.timeZone

新しいフラグ this.timeZone が追加され、任意の有効なタイムゾーンに設定できます。タイムゾーンを設定した後は、日付/時刻関数を実行すると、返されるタイムゾーンは、Application.cfc で設定されているものと同じになります。例えば、次のように入力します。

Application.cfc

component {
    this.timeZone="US/Pacific"
}

timezone.cfm

<cfscript>
    writeOutput("The time at the configured time zone is: " & now())
</cfscript>

MongoDB 設定

this.datasources = { 
    "local"= { 
        type="mongodb" 
    }, 
    "mymongodb"= { 
        type="mongodb", 
        host="mongodb://10.192.217.184:27017/", 
        "init"= true 
    } 
}

AWS クラウド機能(SQS、SNS、S3、DynamoDB)

component { 
 
   function OnApplicationStart() { 
      application.awsCred = { 
         "credentialAlias" : "<alias name>", 
         "vendorName" : "AWS", 
         "region" : "<region name>", 
         "secretAccessKey" : "<AWS Secret>", 
         "accessKeyId" : "<AWS Key>" 
      }; 
 
      application.awsConf = { 
         "serviceName" = "<Service name>", 
 
         "alias" : “<alias name>”, 
 
         "clientOverrideConfig": { 
 
            "apiCallAttemptTimeout": "<timeout>" 
 
         } 
 
      }; 
 
      application.accountKey = "<Account Key>"; 
   } 
}

SAML

手動設定

this.security.samlsettings.idp = [{ 
    name: '<IDP name>', 
 
    description: '<Description>', 
    entityID: '<Entity ID obtained from Identity Provider>', 
    ssoURL: '<Single Sign-On URL>', 
    sloURL: '<Logout URL>', 
    ssoBinding: '<post/redirect>', 
    sloBinding: '<post/redirect>', 
    SIGNREQUESTS: true/false, 
    ENCRYPTREQUESTS: true/false, 
    SignCertificate: '<Certificate>' , 
 
    EncryptCertificate: '<Certificate>' 
 
}];

IDP メタデータのファイルの場所の使用

this.security.samlsettings.idp = [ 
{ 
    name: '<IDP name>', 
    description:'<Description>', 
    file:'<IDP metadata file location>' 
} 
];

URL の使用

this.security.samlsettings.idp = [ 
{ 
    name: '<IDP name>', 
    description:'<Description>', 
    url:'<IDP metadata URL>' 
} 
];

Application.cfc を使用した SP の追加

this.security.samlsettings.sp = [{ 
    name: '<SP name>', 
    description:'<Description>', 
    entityId: '<Entity ID for SP>', 
    acsURL: '<Assertion Consumer Service URL>', 
    sloURL: '<Logout URL>', 
    ACSBINDING: '<post/redirect>', 
    SLOBINDING: '<post/redirect>', 
    SIGNREQUESTS: true/false, 
    WANTASSERTIONSSIGNED: true/false, 
    LOGOUTRESPONSESIGNED: true/false, 
    SIGNKEYSTOREPATH: '<Path to sign keystore>', 
    SIGNKEYSTOREPASSWORD: '<keystore password>', 
    SIGNKEYSTOREALIAS: '<keystore alias>', 
    requestStore: 'Redis', strict: 'true' 
}];

Azure BLOB 資格情報

application.blobCred = { 
    "vendorName" : "AZURE", 
    "connectionString" : "key" 
}

Azure BLOB 設定

application.blobConf = { 
    "serviceName" : "AZURE_BLOB" 
    "options" : { 
        "absorbConditionalErrorsOnRetry" : true/false, 
        "concurrentRequestCount" : 5, 
        "useTransactionalContentMD5" : true/false, 
        "storeBlobContentMD5" : true/false, 
        "disableContentMD5Validation": true/fasle, 
        "singleBlobPutThresholdInBytes" : 12345, 
        "skipEtagLocking" : true/false, 
        "retryPolicyFactory": { 
            "retryPolicyType" : "EXPONENTIAL" | "LINEAR" | "NONE", 
            "deltaBackoffIntervalInMs" : 12, 
            "maxAttempts" : 3, 
            "resolvedMinBackoff" : 1 
        }, 
        "locationMode" : "PRIMARY_ONLY" | "PRIMARY_THEN_SECONDARY" | "SECONDARY_ONLY" | "SECONDARY_THEN_PRIMARY", 
        "maximumExecutionTimeInMs" : 2, 
        "timeoutIntervalInMs" : 1 
    } 
}

ColdFusion(2018 リリース)アップデート 9 および ColdFusion(2016 リリース)アップデート 15 でおこなわれた機能強化

次のフラグが追加されました。

  • this.sessioncookie.samesite = "Strict | Lax | None"
  • this.authcookie.samesite= "Strict | Lax | None"

Application.cfc

component {

                this.name = "MyApp";

                this.sessioncookie.samesite = "Strict";

                this.authcookie.samesite = "Lax";

                this.sessionmanagement = true;

}

ColdFusion(2018 リリース)アップデート 3、ColdFusion(2016 リリース)アップデート 10 および ColdFusion 11 アップデート 18 でおこなわれた機能強化

blockedExtForFileUpload は、アップロードをブロックする必要がある ファイル のファイル拡張子のカンマ区切りリストを指定します。

次に例を示します。

{
    this.name="app name";
    this.blockedExtForFileUpload="cfm, cfc, jsp"; //Specify other file extensions
}

設定 blockedExtForFileUpload は、次のタグおよび関数にのみ適用されます。

すべてのファイルをブロックするには、"*"(アスタリスク)を使用します。また、すべての拡張子を許可するには、""(空の文字列)を使用します。

ファイルのアップロードに cffile タグを使用して、サーバーレベルで定義したブロックされるファイル拡張子を上書きする場合、拡張子を指定します。このリストは、グローバル設定を上書きします。

例えば、拡張子 " cfm , cfc , asp, aspx " を ColdFusion Administrator でブロックしているが、アプリケーション用にタイプ aspx のファイルをアップロードしたい場合、次のコードを使用してグローバル設定を上書きします。

component {
        this.name="myApp";
        this.blockedExtForFileUpload="cfm, cfc, asp";
}

ColdFusion(2018 リリース)でおこなわれた機能強化

  • enableNullSupport:NULL 変数のサポートを有効化する場合に指定します。
  • cache.engine:使用するキャッシュエンジンの型を指定します。

ColdFusion(2016 リリース)でおこなわれた機能強化

  • serialization.structmetadata:構造体キーのデータ型を 定義 します。
  • 新しいアプリケーション設定 searchImplicitScopes が追加されました。これを false に設定すると、スコープが指定されていない変数は、暗黙的なスコープで検索されません。
  • passArrayByReference 設定。true に設定すると、値の代わりに、参照用として配列を渡すことができます。

ColdFusion 11 でおこなわれた機能強化

ColdFusion 11 では、Application.cfc でアプリケーション固有のデータソースを登録できます。これらのデータソースはそのアプリケーション固有となり、Administrator から利用できません。サーバー全体のデータソースと名前の衝突がある場合、アプリケーション固有のデータソースが優先されます。 

this.datasources.dsn2={
    "driver"="MSSQLServer",
    "username"="sa",
    "password"="password",
    "url"="jdbc:macromedia:sqlserver:
//localhost\MSSQL2008;databaseName=regression;;sendStringParametersAsUnicode=
false;querytimeout=0;MaxPooledStatements=1000"
};

カスタムドライバーを使用した場合:

this.datasources.dsn3 = { 
    "driver" = "other", 
"url"="jdbc:sqlserver://localhost\MSSQL2008;databaseName=pubs;sendStringParametersAsUnicode=false;querytimeout=0;MaxPooledStatements=1000", 
    "username" = "sa", 
    "password" = "S33N0Ev!l",             

"class"="com.microsoft.sqlserver.jdbc.SQLServerDriver"
};

次のドライバーがサポートされます。

  • MSSQLServer
  • Oracle
  • Sybase
  • DB2
  • Informix
  • MySQL_DD
  • PostgreSQL
  • MSAccess
  • Apache Derby Embedded
  • Apache Derby Client

  • MySQL5

  • ODBCSocket

  • その他(カスタムドライバー)

次の例のように this.datasources を使用します。

// Application.cfc
component {
        this.name = "DSNTest";
        this.datasources = { 
                mssql_app = { 
                    database = "<DBName>", 
                    host = "<HostNameOrIP>", 
                    port = "<portNumber>", 
                    driver = "MSSQLServer", 
                    username = "username", 
                    password = "password" } 
                };
        this.datasource = "mssql_app";
}
<!--- query.cfm --->
<cfscript>
    employees = queryExecute("SELECT * FROM TableName ",[], {datasource="mssql_app"});
    writeOutput(employees);
</cfscript>

ColdFusion 9.0.1 でおこなわれた機能強化

Application.cfc を使用すると、データソースの認証情報をデータソースに指定できます。今回のリリースでは、データソース設定は文字列または構造体のいずれかです。文字列の場合、データソース名と認証情報は、ColdFusion Administrator で定義されているデータソースから取得されます。
データソースに構造体の値を使用すると、認証情報を指定できます。キー名は、次のとおりです。

  • name:データソース名
  • username:データソースのユーザー名
  • password:データソースのパスワード

    <this.datasource={name='cfartgallery', username="user", password="passwd"}>

    または

    <this.datasource="cfartgallery">

    注意:ORM のデフォルトのデータソースにも同じ規則が使用されます。ORM のデフォルトのデータソースでは、ormsettings でデータソースの認証情報を指定できます。

    Amazon S3 統合用の次のアプリケーション固有の属性が追加されました。

  • accessKeyId:Amazon S3 アカウントの ID です。
  • awsSecretKey:S3 アカウントの秘密鍵です。
  • defaultLocation:Amazon S3 のバケット作成のデフォルトの場所です。S3 ストレージのバケットは、US、EU または US-WEST のいずれかの地域で作成できます。Application.cfc に指定された defaultLocation では、作成するバケットのデフォルトの場所が定義されます。デフォルト値は US です。

    this.s3.accessKeyId = "key_ID";
    this.s3.awsSecretKey = "secret_key";
    this.s3.defaultLocation="location";
    </cfscript>

アプリケーション固有のメモリ内ファイルシステム

アプリケーション別のメモリ内ファイルシステムを使用できます。これにより、仮想ファイルシステムでアプリケーションの分離を実現できます。つまり、あるアプリケーションによってメモリ内ファイルシステムに作成されたファイルには、別のアプリケーションからアクセスできません。
この設定は、Application.cfc で次のように指定できます。

変数

説明

this.inmemoryfilesystem.enabled

アプリケーション用のメモリ内ファイルシステムを有効にするには、値を true に設定します。これはデフォルトの設定です。

this.inmemoryfilesystem.size

メモリ内ファイルシステムのメモリ制限を MB 単位で指定します。ColdFusion Administrator でも値を指定できます(サーバーの設定/設定/メモリ内仮想ファイルシステムのアプリケーションごとのメモリ制限)。小さいほうの値が利用されます。