Windows C++ CFX Support (CFX_HTTP5 & CFX_Exec)


#1

I’m attempting to move a large application from Adobe ColdFusion 10 to Lucee. The only dependencies that we have are two (2) 64bit C++ CFX tags from Adiabata, Inc.; CFX_HTTP5 and CFX_Exec. (These modules have some advanced features that both Adobe ColdFusion and Lucee lack.) I noticed that there had been similar CFX support requests since 2015, but those were regarding 32bit tags and no solutions regarding getting it to work were provided.

I was able to add the C++ tags by appending “&enable=cfxcpp” to the admin URL, but the C++ tags don’t appear to function.
/lucee/admin/web.cfm?action=resources.cfx_tags&enable=cfxcpp

CFX_HTTP5 Benefits: Faster. Better SSL integration (no importing certs), ability to specify which cryptographic protocol to use when connecting; respects DNS TTL

CFX_Exec Benefits: Ability to execute command line functions while specifying domain/username/password, better timeouts, only-the-fly BAT creation, desktop interaction.

Is there some trick to getting C++ tags to function or is there no support other than the undocumented ability to register them?


#2

I was never able to get cfx_hhtp5 to work

I was using it to maintain state for an app that does automated form submissions. Cfhhtp didn’t work in CF8 which was what I was stuck with using. I really wanted to move to railo and then lucee but the lack of support for c++ dll’s was a show stopper.

However after putting it off forever, last fall I made the leap and rewrote my code to use java for get & posts. Works really well. At least as fast as the cfx was.

Don’t know what other features you are using but if you need the Java code for get & post while maintaining state, let me know.


#3

CFHTTP started having issues starting in CF9 and 10 with TLS1.2 and wildcard SSL certificates and ColdFusion+Java tends to have DNS TTL issues, so I’d preferred to use something that worked consistently on every version of Adobe ColdFusion since new bugs always seemed to be introduced with new versions.

I know how to use CFHTTP, but I’d prefer to continue using the same scripts that I currently have and make them work using both ACF & Lucee as I can’t convert all scripts to Lucee overnight.

CFX_Exec is also something that can’t easily be replaced since all CFExecute function in ACF and Lucee can only be performed using a single user account (and sometimes it’s not one with required admin privileges.)


#4

C++ EXAMPLE: CFX_Exec has the ability to create a dynamic BAT file on-the-fly. I like using this feature because I don’t have to create a physical file and then delete it afterwards. I used this today with Adobe ColdFusion to call CMD.exe so I could pass “chcp 65001” to change the default code page of Windows console to UTF-8 before executing a command line program to convert XLSX to CSV. (ACF was choking on the file. It was 88k+ rows with only two (2) columns. The command line app could process it in under 2 seconds whereas CF couldn’t read it without timing out.)

I’d really like to switch some application to Lucee, but I’d prefer not to have to sacrifice C++ tags or rewrite and hope that it performs as well.


#5

There is no doubt regarding how fast cfx_http5 is comparing with cfhttp native. cfx_http5 avoid any mid-term components and parses and open the connection very very fast.

I was facing the same issue as Jamo, then I decide to go a little deep on it. The error message showing was
lucee.runtime.exp.NativeException: cannot initialize C++ Custom tag library, make sure you have added all the required jar files. GO to the Lucee Server Administrator and on the page Services/Update, click on “Update JARs”
at lucee.runtime.cfx.customtag.CPPCustomTag.(CPPCustomTag.java:51)

So, if we look at that line
clazz = ClassUtil.loadClass(“com.naryx.tagfusion.cfx.CFXNativeLib”);

CFXNativeLib was missing!
I added on my lib path and it is working now.

One note: it was simple to fix and I need only 20 minutes to solve. Instead we keep discussing about the who needs what or “this is old solution, we probably have something better now”, just try to look at the error and source and fix it.

I strong believe cfx_http5 is what everybody needs in terms of performance.