Application.cfc ファイルのスコープには、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 | cfcookie または cfheader タグを使用した cfauthorization Cookie の更新を無効にします。 |
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 |
|
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 | 特定の場所においてのみ CFC を公開するには、REST CFC が配置されるディレクトリのコンマ区切りリストを提供します。ディレクトリパスは、絶対パスまたは相対パスを設定できます。設定しないと、アプリケーションルートからのすべての 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 の場合、アプリケーションはデフォルトのアプリとして作成されます。 |
scriptprotect | なし | true の場合は、外部スクリプトとクロスサイトスクリプティングからの保護が追加されます。有効な値は次のとおりです。
以下のタグから保護されます。
この機能は、lib/neo-security.xml にある一連の正規表現で、object、embed、script、applet および meta タグが Form、URL、CGI および Cookie スコープに入力として渡されたときに、これらのタグを InvalidTag というタグ名に置き換えるものです。 |
sessioncookie.httponly | True | セッション Cookie を httponly に設定する必要があるかどうかを指定します。つまり、Http リクエストにのみアクセスできます。 |
sessioncookie.secure | False | セッション Cookie をセキュアに設定する必要があるかどうかを指定します。つまり、すべてのタイプの接続で返されるか、またはセキュリティ保護されている(https)接続でのみ返されるかを指定します。 |
sessioncookie.domain | Cookie を設定するドメインです。これは、アプリケーションにアクセスするドメインと完全に一致する必要があります。 | |
sessioncookie.timeout | 30 年 |
セッション Cookie の有効期間(日数)です。この値には -1 を割り当てることもできますが、0 は無効です。 |
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 つのホストではなく)ドメイン全体に設定するかどうかを示します。 |
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 ハンドラーを呼び出さないようにします。
|
|
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 | False | 暗黙のスコープで、スコープの設定されていない変数の検索を有効または無効にできます。 メモ:ColdFusion(2023 リリース)アップデート 7 では、このフラグのデフォルト値が False に変更されています。 |
serialization.structmetadata | 構造体の値のデータ型情報を設定します。例えば、this.serialization.structmetadata = {zipcode="String"}; の場合、このキーを含む構造体の zipcode にはデータ型を定義する必要はありません。構造体自体に zipcode のデータ型を定義した場合は、構造体のレベルで定義されたデータ型が、Application.cfc で定義されたデータ型よりも優先されます。 | |
enableNullSupport | false | NULL 変数のサポートを有効または無効にできます。使用できる値は true または false です。 |
cache.engine | ehcache | 使用するキャッシュエンジンを指定します。次のエンジンを使用できます。
|
cache.configFile | キャッシュエンジンのプロパティファイルへのパスです。 | |
restSettings.generateRESTDoc | false | true の場合、ColdFusion サーバーは Swagger ドキュメントを自動的に生成します。 |
blockedExtForFileUpload | アップロードをブロックする必要があるファイルのファイル拡張子のコンマ区切りリスト。 | |
useJavaAsRegexEngine | false | true の場合、デフォルトエンジンではなく、Java が正規表現エンジンとして使用されます。 |
timeZone |
true の場合は、日付/時刻関数を実行すると、返されるタイムゾーンは、このフラグに設定されているものと同じになります。 |
同じ名前を持つフォームフィールド
フォームフィールドに同じ名前が設定されているとします。この場合、ColdFusion では、フォームフィールドをリストではなく、配列として変換します。これを行うには、Application.cfc で this.sameformfieldsasarray = "true" を指定します。デフォルト値は false です。
Application.cfc では、このファイルが存在するディレクトリの外部から、ネストされた cfincludes を解決することはできません。これを解決するには、-Dcoldfusion.application.recur_resolve.include=true を jvm.config に追加する必要があります。
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" : "<エイリアス名>", "vendorName" : "AWS", "region" : "<リージョン名>", "secretAccessKey" : "<AWS シークレット>", "accessKeyId" : "<AWS キー>" }; application.awsConf = { "serviceName" = "<サービス名>", "alias" : “<エイリアス名>”, "clientOverrideConfig": { "apiCallAttemptTimeout": "<タイムアウト>" } }; application.accountKey = "<アカウントキー>"; } }
SAML
手動設定
this.security.samlsettings.idp = [{ name: '<IDP 名>', description: '<説明>', entityID: '<ID プロバイダーから取得したエンティティ ID>', ssoURL: '<シングルサインオン URL>', sloURL: '<ログアウト URL>', ssoBinding: '<post/redirect>', sloBinding: '<post/redirect>', SIGNREQUESTS: true/false, ENCRYPTREQUESTS: true/false, SignCertificate: '<証明書>' , EncryptCertificate: '<証明書>' }];
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 名>', description:'<説明>', entityId: '<SP のエンティティ ID>', acsURL: '<アサーションコンシューマーサービス URL>', sloURL: '<ログアウト URL>', ACSBINDING: '<post/redirect>', SLOBINDING: '<post/redirect>', SIGNREQUESTS: true/false, WANTASSERTIONSSIGNED: true/false, LOGOUTRESPONSESIGNED: true/false, SIGNKEYSTOREPATH: '<署名キーストアのパス>', SIGNKEYSTOREPASSWORD: '<キーストアパスワード>', SIGNKEYSTOREALIAS: '<キーストアエイリアス>', 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 = "<DB 名>", host = "<ホスト名または IP アドレス>", port = "<ポート番号>", driver = "MSSQLServer", username = "<ユーザー名>", 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 でも値を指定できます(サーバーの設定/設定/メモリ内仮想ファイルシステムのアプリケーションごとのメモリ制限)。小さいほうの値が利用されます。 |