Ruby on Rails:执行JAR

时间:2013-01-23 16:07:36

标签: ruby-on-rails process jar io popen

伙计们,我正在尝试在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”并传递参数。然而无法理解。还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

除了你提到的问题之外,这在性能方面听起来非常痛苦(毕竟你还在等待JVM启动每个请求)。

两个解决方案向我跳出来:

  • 查看库的功能,看看你是否真的需要为此调用Java;特别是,如果只是在一个带有一组固定参数的LDAP目录中进行查找的问题,那么就有很多宝石

  • 如果必须使用Ruby中的Java类,请强烈考虑使用JRuby,这样可以直接调用有问题的Java类,而不会产生任何开销。在每次调用时重新启动JVM,也不会尝试将参数从Ruby正确地转移到shell到JVM,然后返回。