The answer is by creating a "dll" in .net. Then ColdFusion will access the methods of the dll file by creating Object of that dll.
Example:
Now, I am going to create a Calculator library in .net(a dll file) which will have two methods addition and subtraction using the following .net code.
using System;
namespace Calculator
{
public class Calculator
{
public int addition(int a, int b)
{
return a + b;
}
public int subtraction(int a, int b)
{
return a - b;
}
}
}
Then, I wrote the following lines of ColdFusion code to create object of that ".dll" file.
<cfscript>
variables.dotNetObject = createObject("dotnet", "Calculator", "#expandPath('./Calculator.dll')#").init();
WriteDump(variables.dotNetObject);
</cfscript>
variables.dotNetObject = createObject("dotnet", "Calculator", "#expandPath('./Calculator.dll')#").init();
WriteDump(variables.dotNetObject);
</cfscript>
But, I got the one error message:
"DotNet Side does not seem to be running. Ensure that the DotNet agent is running and you have provided the correct host and port information "
Solution:
1. Go to the window services viewer and see whether "ColdFusion .NET Service" service is running or not. If not running then start the service. If the service is not Present then go to step 3.
2. After that check whether the code is again throwing the same error or not.
3. If it again throwing the same error then go to "http://help.adobe.com/en_US/ColdFusion/9.0/Installing/WSc3ff6d0ea77859461172e0811cdec18969-7ff1.html" and follow the instructions to reinstall/install the ColdFusion .net Service.
After, following all the instructions and reinstalling the ColdFusion .net Service I again run the code. I got the following error:
"Class Calculator not found in the specified assembly list.The assembly that contains the class must be provided to the assembly attribute. "
Solution:-
In the above ColdFusion code, in the function createObject we are passing the class name as "Calculator" in the argument. Our class name in the above .net code is aslo "Calculator". Then what is the cause of the problem???
While creating a .net class we have to specify the name space of that class, if you are not specifying the name space then the Project will be taken as the default name space.
So, in the .net code our name space will be "" and during accesing the class we must have to sppecify the name space like this:"<name-space>.<class>".
In ColdFusion code instead of passing "Calculator" we have to pass "Calculator.Calculator". The out put of the Dump will be as follow:
The dump shows the object have two function addition and subtraction. Now, we can perform the operation like general ColdFusion Object.
Nice blog.. Thanks for sharing this blog information with us…
ReplyDeleteHi,
ReplyDeleteMy environment: window server 20008, .net 3.5 installed, cf8 and also cf .net integration installed.
I having the problem when try to call a basic DLL from my CF8. it showing me
Object Instantiation Exception.
An exception occurred while instantiating a Java object. The class must not be an interface or an abstract class. If the class has a constructor that accepts an argument, you must call the constructor explicitly using the init(args) method. Error : ''
I able to view the class when using the CFDump, but when I try to call the method within the class, it showing error. Anything that I can look into for this problem?
Thanks
Can you please try with the attached the DLL file and let me know whether you are getting the same error or not.
DeleteOtherwise if you could post your stack trace then it would help me to identify the exact issue.
Hi there,
ReplyDeleteSorry to bother you this much later. I am working fine upto the end of tutorial you have published. Then, after I instantiate the .net object, calling any function of it throws error: "Method Not Found". However, I can see that the specified method is listed in the cfdump of the object instance. Do you know what is causing this trouble? I will be waiting anxiously ... :P
Thank you.
Asad,
DeleteCheck if you are passing the correct argument type. If possible please share the code sample.
Dear Upendra,
ReplyDeleteThank you for this tutorial! It's been helpful. I am still getting the error "Class Calculator not found in assembly". I have double checked that I have the same code as your example shows as well. Any ideas on what to do? Do i need to add this dll to the GAC?
Hi !
ReplyDeleteMuchas gracias por tu gran aporte estuve batallando para consumir una DLL y tu post fue de mucha ayuda !
Muchas Gracias !