伙计们,我正在尝试在RoR中执行一个jar文件。多亏了SO,我想用IO :: popen调用来执行一个jar文件。
要求: - 登录网站:让我们公司的员工登录。它是一个Java库,如果用户名/密码有效,它会做一些魔术和数字。我用过的,
result = IO::popen("java -cp auth.jar com.name.auth.LDAPLookup " + params[:username] + " " + params[:password]).read
p result
输出:[“授权”,“电子邮件”,“id”]
我不知道该怎么做。我想尝试的一个选项是使用fork()或Process API来启动“java”并传递参数。然而无法理解。还有其他想法吗?
答案 0 :(得分:2)
除了你提到的问题之外,这在性能方面听起来非常痛苦(毕竟你还在等待JVM启动每个请求)。
两个解决方案向我跳出来:
查看库的功能,看看你是否真的需要为此调用Java;特别是,如果只是在一个带有一组固定参数的LDAP目录中进行查找的问题,那么就有很多宝石
如果必须使用Ruby中的Java类,请强烈考虑使用JRuby,这样可以直接调用有问题的Java类,而不会产生任何开销。在每次调用时重新启动JVM,也不会尝试将参数从Ruby正确地转移到shell到JVM,然后返回。