説明
.NET オブジェクトを作成します。このオブジェクトは、ローカルまたはリモートの .NET アセンブリに存在するクラスにアクセスするための ColdFusion プロキシになります。
シンタックス
<cfobject class="class name" name="instance name" type=".NET|dotnet" action="create" assembly="absolute path" port="6086" protocol="tcp|http" secure="no|yes" server = "localhost">
このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。
NTLM 属性の使用
<cfobject authType="NTLM" ntlmdomain="domain name" workstation="workstation name" type="webservice" name="ws" webservice="WSDL URL" username = "user name" password = "password">
ここで、
authType |
使用する認証タイプ。NTLM または BASIC を使用できます。 |
ntlmdomain |
ドメインコントローラーのホスト名。 |
workstation |
クライアントマシンのホスト名。 |
authType=NTLM の場合、ntlmDomain は必須です。
ユーザーがドメインに属している場合は、ntlmDomain 属性が必須です。ユーザーがドメインに属していない場合、ntlmDomain 属性はオプションです。
関連項目
.NET object、DotNetToCFType、『ColdFusion アプリケーションの開発』の「Microsoft .NET アセンブリの使用」
履歴
Adobe ColdFusion(2016 リリース):NTLM 属性が追加されました。
ColdFusion 8:.NET と dotnet タイプの値、assembly、port、protocol および secure の各属性が追加されました。
属性
属性 |
必須/オプション |
デフォルト |
説明 |
---|---|---|---|
class |
必須 |
|
オブジェクトとしてインスタンス化する .NET クラスの名前です。 |
name |
必須 |
|
文字列です。アプリケーションで使用するコンポーネントの参照名を指定します。 |
type |
.NET の場合は必須 |
|
オブジェクトのタイプです。.NET オブジェクトの場合は .NET または dotnet に設定する必要があります。 |
action |
オプション |
create |
実行するアクションです。create に設定する必要があります。 |
assembly |
オプション |
.NET コアクラスを含む mscorlib.dll |
ローカル .NET アセンブリの場合 : .NET クラスとそのサポートクラスにアクセスするために使用するアセンブリ (EXE または DLL ファイル) の絶対パスです (複数指定可)。アセンブリ内のクラスが他のアセンブリ内のサポートクラスを必要とする場合は、それらのアセンブリも指定する必要があります。ただし、次のタイプのサポートクラスについては、サポートアセンブリの指定を省略できます。
|
port |
オプション |
6086 |
.NET サイドのエージェントがリスンするポート番号です。 |
protocol |
オプション |
tcp |
ColdFusion と .NET の通信に使用するプロトコルです。有効な値は次のとおりです。
|
secure |
オプション |
false |
.NET サイドのエージェントとの通信を暗号化するかどうかを指定します。true を指定すると、.NET との通信に SSL が使用されます。 |
server |
オプション |
localhost |
.NET サイドのエージェントが実行されているサーバーのホスト名または IP アドレスです。次のいずれかの形式で指定します。
|
使用方法
cfobject タグで type 属性の値を .NET または dotnet に設定すると、指定したクラスの .NET オブジェクトへの参照が作成されます。この参照を使用して、.NET オブジェクトのフィールドとメソッドにアクセスできます。.NET クラスは必ずしもローカルに存在している必要はないので、.NET がインストールされていないシステム(UNIX ベース、OS-X ベースのシステムも含む)でも cfobject タグを使用できます。
.NET アセンブリにアクセスする手順は次のとおりです。
- アセンブリがインストールされているシステムに ColdFusion .NET Extension をインストールして、.NET Extension サービスを実行します。リモートアセンブリのみにアクセスする ColdFusion システムでは、Extension をインストールして Extension サービスを実行する必要はありません。インストール手順については、『ColdFusion インストール』を参照してください。
アセンブリがリモートシステム上に存在する場合は、使用する .NET クラス用の Java プロキシを作成し、そのプロキシを ColdFusion システムにコピーします。次に、プロキシからアクセスできるように、リモートシステムを設定します。これらの手順については、『ColdFusion アプリケーションの開発』の「Microsoft .NET アセンブリの使用」を参照してください。.NET アセンブリが ColdFusion システム上にある場合は、この手順を実行する必要はありません。
メソッドとフィールドへのアクセス 他の ColdFusion オブジェクトのメソッドを使用する場合と同様に .NET メソッドを呼び出します。簡単なアプリケーションでは、コード内で次の形式を使用して .NET クラスのメソッドを呼び出します。
<cfobject type=".NET" name="mathInstance" class="mathClass"> assembly="C:/Net/Assemblies/math.dll"> <cfset myVar=mathInstance.multiply(1,2)>
.NET クラスに複数のコンストラクタがある場合、デフォルトのコンストラクタを使用してオブジェクトを作成しないようにするには、コンストラクタの引数を使用して ColdFusion オブジェクトの特別な init メソッドを呼び出すことにより、特定のコンストラクタを呼び出します。例えば、次のタグを使用すると com.foo.MyClass(int, int) をインスタンス化できます。
<cfobject type=".NET" class="com.foo.MyClass" assembly="c:\temp\myLib.dll" name="myObj" > <cfset myObj.init(10, 5)>
.NET クラスのパブリックフィールドにアクセスして変更を加えるには、次のメソッドを呼び出します。
Get_fieldName() Set_fieldName()
例えば、.NET クラスに account という名前のパブリックフィールドがある場合、そのフィールドの値にアクセスして変更を加えるには Get_acount() メソッドと Set_account() メソッドを使用します。
final フィールドは、アクセスのみが可能で変更は行えません。したがって、呼び出せるのは Get_fieldName() のみになります。
例
次の例では、.NET System.Diagnostics.Process クラスの GetProcess メソッドを使用して、ローカルシステムで実行されているプロセスの情報を取得して表示します。この例では .NET コアクラスを使用するので、cfobject タグでアセンブリ名を指定する必要はありません(コアクラス用のプロキシは ColdFusion によって自動的に生成されます)。カスタムの .NET クラスを使用するさらに複雑な例については、『ColdFusion アプリケーションの開発』の「Microsoft .NET アセンブリの使用」を参照してください。
<cfobject type=".NET" name="proc" class="System.Diagnostics.Process"> <cfset processes = proc.GetProcesses()> <cfset arrLen = arrayLen(processes)> <table border=0 cellspacing="3" cellpadding="3"> <tr bgcolor="#33CCCC"> <td style="font-size:12px; font-weight:bold" nowrap>Process ID</td> <td style="font-size:12px; font-weight:bold" nowrap>Name</td> <td style="font-size:12px; font-weight:bold" nowrap>Memory (KB)</td> <td style="font-size:12px; font-weight:bold" nowrap>Peak Memory (KB)</td> <td style="font-size:12px; font-weight:bold" nowrap>Virtual Memory Size (KB)</td> <td style="font-size:12px; font-weight:bold" nowrap>Start Time</td> <td style="font-size:12px; font-weight:bold" nowrap>Total Processor Time</td> </tr> <cfloop from = 1 to="#arrLen#" index=i> <cfset process = processes[i]> <cfset id = process.Get_Id()> <cfif id neq 0> <cfoutput> <tr> <td align="right">#process.Get_Id()#</td> <td>#process.Get_ProcessName()#</td> <td align="right">#process.Get_PagedMemorySize()/1000#</td> <td align="right">#process.Get_PeakPagedMemorySize()/1000#</td> <td align="right">#process.Get_VirtualMemorySize()/1000#</td> <td>#process.Get_StartTime()#</td> <td>#process.Get_TotalProcessorTime()#</td> </tr> </cfoutput> </cfif> </cfloop> </table>