cfobject: .NET オブジェクト

説明

.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 objectDotNetToCFType、『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 ファイル) の絶対パスです (複数指定可)。アセンブリ内のクラスが他のアセンブリ内のサポートクラスを必要とする場合は、それらのアセンブリも指定する必要があります。ただし、次のタイプのサポートクラスについては、サポートアセンブリの指定を省略できます。

  • .NET コアクラス (mscorlib.dll に含まれるクラス)
  • GAC (Global Assembly Cache) に存在するアセンブリ内のクラス
    複数のアセンブリを指定するには、カンマ区切りのリストを使用します。リモート .NET アセンブリの場合:アセンブリの代わりとして使用するローカルプロキシ JAR ファイルの絶対パスを指定する必要があります(複数指定可)。
    ローカルに .NET がインストールされていない場合にこの属性を省略すると、このタグは機能せず、エラーも生成されません。ローカルに .NET がインストールされている場合、この属性を省略して、指定したクラスが .NET コアクラスに存在しないときは、エラーが生成されます。

port

オプション

6086

.NET サイドのエージェントがリスンするポート番号です。

protocol

オプション

tcp

ColdFusion と .NET の通信に使用するプロトコルです。有効な値は次のとおりです。

  • http:HTTP/SOAP 通信プロトコルを使用します。tcp より遅くなりますが、ファイアウォール経由でアクセスする場合に必要になることがあります。
  • tcp:バイナリの TCP/IP プロトコルを使用します。HTTP よりも効率的です。

secure

オプション

false

.NET サイドのエージェントとの通信を暗号化するかどうかを指定します。true を指定すると、.NET との通信に SSL が使用されます。

server

オプション

localhost

.NET サイドのエージェントが実行されているサーバーのホスト名または IP アドレスです。次のいずれかの形式で指定します。

  • サーバー名 (例 : myserver)
  • IP アドレス (例 : 127.0.0.1)
    リモートサーバー上の .NET コンポーネントにアクセスする場合は、この属性を指定する必要があります。

使用方法

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>

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2025

Adobe MAX Japan
クリエイターの祭典

2025 年 2 月 13 日
東京ビッグサイト