This came up in the forum over the last week.
The easiest way to get access to native code from a Creator application is when that code can be handled as a global resource similar to a JDBC driver jar.
I created a little test case today (on Linux) and that seemed to work after the following steps:
-
Created a libmarco.so and libmarco.jar, The Java code does a
static { System.loadLibrary("marco"); }
-
Copied both into /SunAppServer8/lib to make the appserver happy. This might be a different directory for other containers!
-
For Creator set the LD_LIBRARY_PATH to the directory where the libmarco.so is. (Is this PATH for Windows?)
-
For the project, add the libmarco.jar as library for the design time only! I believe that can somehow be added to a customized template if it’s needed in more than one project.
-
Use the library (mine just returns a String from the native side;-) and deploy the application.
That worked for me;-)
Trying to handle a native library as part of a WebApplication is probably a lot harder. Things to watch out for would at least include:
-
The Java wrapper code has to find the native library relative to it’s classloader.
-
The security manager of the container will probably have to be changed to allow loading of native libraries from applications.
-
The initialization code on the native side and the Java side have to be able to handle `redeployments’.
-
What would the container do when an undeploy attempt tries to delete a loaded native library?
So overall I don’t think that would be a good idea.
I hope this helps a bit;-)