Friday, June 3, 2011

Adventures using DotNet with ColdFusion via the side agent

 I have a project were the web service of a vendor would not work with the Apache Axis 1.2.1 that CF uses.
However I was able to call it via dotnet. So I decided to use the CF to .Net integration. I'd used it before but rebuild my dev machine since and forgot some of the glitches.

This is all for ColdFusion 8.01 and .Net 3.5 framework. CF 8 does not work with .Net 4 and we are not on CF 9 yet.

Adventure 1: the java.lang.ClassNotFoundException error.
For starters if you are running the multi-server install the process that creates new server instances has a huge fault. It does not copy the dotnet proxy config to the created CF server instances.  Find in the master cfusion instance this file, dotnet_coreproxy.config, and copy it to the same location in your server instance.

Adventure 2: unable to copy file [your assembly dll] another process is using it.
For development in CF I pointed at the dll in my projects bin directory. However once you invoke it from CF the CF .net side agent service locks this so when you recompile in Visual Studio it will error. Restarting the .net side agent service temporarily breaks the link.

Adventure 3: .net exception passed to CF = java.lang.ClassNotFoundException
Passing some exceptions back work just fine but if the exception has nested objects that CF does not know how to find to proxy it will error. Even if they are in my assembly. They must not be in base .net library that CF is using. I have not found a good solution other than creating my own object to pass back to CF.
Update: I implemented an exception processing function that catches several types of exceptions like  SoapHeaderException and pulls the information out and adds it to a poco I created to simplify what CF has to deal with.

No comments:

Post a Comment