我可以从另一个JVM中的一个JVM运行JRuby代码吗?

时间:2013-08-28 23:34:04

标签: java jruby

有一个有趣的想法,我宁愿做,但无法弄清楚它是否有可能(猜测它更接近于不是。)

脚本想要做这样的事情:

process_recursively(top_item) do |item|
  if item.text =~ /evil/
    item.add_tag(evil)
  end
end

从概念上讲,这可以这样工作:

def process_recursively(item, &block)
  block.call(item)
  item.children.each { |child| process_recursively(child) }
end

但问题是,真正的系统(用Java而不是Ruby实现)实际上会调用来处理来自不同JVM的项目,因此JVM崩溃不会破坏整个处理运行。

我知道这种事情可能会以一种尴尬的方式在RMI回归时仍然很受欢迎,但有没有办法让这个疯狂的想法适用于像JRuby这样的东西?

理想情况下,我希望它适用于任何JSR223脚本语言,但我并没有屏住呼吸。

1 个答案:

答案 0 :(得分:0)

考虑使用通用的RPC机制,例如:

  • RMI(通过Java)
  • 通过Java的CORBA或Ruby的本地(例如R2CORBA
  • SOAP / web-services

另外,请考虑特定于Ruby的解决方案,例如JRuby XMLRPC - https://github.com/jruby/jruby/blob/master/lib/ruby/1.9/xmlrpc/README.rdoc

这不是JSR223所解决的问题。