If you've ever worked with jars or raw java in ColdFusion, you will love the JavaLoader module for ColdBox. The JavaLoader module will interface with Mark Mandel's JavaLoader to allow you to do a network class loader, compiler and proxy. You can keep jars with your application's code instead of putting them in ColdFusion classpath, and you can even dynamically compile java code to use in your app.
To get started, simply install the module using CommandBox:
box install cbjavaloader
The module registers a new WireBox DSL called javaloader
. You can then use this custom DSL for injecting direct java class loaded classes very easily:
property name="name" inject="javaloader:{class-path}"; property name="hello" inject="javaloader:HelloWorld"; property name="buffer" inject="javaloader:org.class.path.StringBuffer";
With some basic configuration in your Coldbox.cfc, you can load jars or compile java:
// JavaLoader settings javaloader = { // The array paths to load loadPaths = getJars( getDirectoryFromPath( getCurrentTemplatePath() ) & "lib" ), // Load ColdFusion classes with loader loadColdFusionClassPath = false, // Attach a custom class loader as a parent parentClassLoader = "", // Directories that contain Java source code that are to be dynamically compiled sourceDirectories = [], // the directory to build the .jar file for dynamic compilation in, defaults to ./tmp compileDirectory = getDirectoryFromPath( getCurrentTemplatePath() ) & "model/javaloader/tmp", // Whether or not the source is trusted, i.e. it is going to change? Defaults to false, so changes will be recompiled and loaded trustedSource = false };
Happy Java-ing!
Add Your Comment