如何在Coldfusion8中使用javaloader设置java库?

我正在尝试让javaLoader在Coldfusion8应用程序中运行,我需要一些帮助才能让我跨越终点线。

这是我到目前为止:

application.cfc里面:

... THIS.mappings["/javaloader"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "tools/javaloader"; ...   Application.str = structNew(); Application.str.myJavaLoaderKey = "someUUID_javaloader"; Application.str.jarPaths = arrayNew(1);               

这是按照此处和此处的说明完成的。

在我的handler.cfc中 ,我试图访问javaloader和BCrypt类,如下所示:

  pass = "some_password";  cryptonite = server[Application.str.myJavaLoaderKey];   bCrypt = cryptonite.init(Application.str.jarPaths[1]); hashed = bCrypt.hashpw(pass, bcrypt.gensalt());  

我可以转储cryptonite变量,但是当我尝试创建BCrypt实例时,脚本失败了。

问题
我很高兴我做到这一点,但我现在已经坐了几个小时了,不知道我做错了什么。 希望有更多洞察力的人可以指出我的方向?

感谢帮助!

好。 有几个错误。

要使用Coldfusion8和BCrypt或您选择的Java类设置Javaloader,请执行以下操作:

1)将任何Java类(.java文件,而不是.class文件)放在webroot / htdocs(Apache)的文件夹中。 我的BCrypt之路看起来像这样:

  htdocs/classes/jBCrypt/ 

2)为javaloader做同样的事情。 我的路径看起来像这样:

  htdocs/tools/javaloader/ 

3)在Application.cfc中

   THIS.mappings["/javaloader"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "tools/javaloader";      Application.str = structNew(); Application.str.myJavaLoaderKey = "your_uuid_javaloader"; Application.str.jarPaths = arrayNew(1);              

设置应该在此处的应用程序范围内。 这应该设置所有.java类,您现在可以从其他地方引用它们,如下所示:

  var pass = "a_password"; javaLoader = server[Application.str.myJavaLoaderKey]; // create an instance of javaloader-BCrypt bcrypt = javaLoader.create("BCrypt").init(); // now you can call methods from bcrypt like so: hashed = bcrypt.hashpw(pass, bcrypt.gensalt());  

想通过这里读出它。 事实certificate你必须引用.java文件,而不是我最初做的.class文件。

以下链接也可能有所帮助:
http://blog.mxunit.org/2011/02/hashing-passwords-with-bcrypt-in.html
http://www.compoundtheory.com/javaloader/docs/
http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/using-bcrypt-in-coldfusion-10-370