Tag: jruby

如何干净地关闭嵌入式JRuby以响应SIGTERM到JVM进程?

我正在使用org.jruby.embed.ScriptingContainer API在JVM进程内运行JRuby上的Middleman(使用Webrick)服务器。 如果我干净地关闭并从JVM内部停止服务器,一切都按预期工作。 但是如果我将一个SIGTERM发送到JVM进程(例​​如,通过在命令行中按ctrl + C),控制台将返回但JVM进程不会终止 – 它会无限期地挂起,直到我发送一个SIGKILL。 我尝试注册一个JVM关闭钩子来终止ScriptingContainer实例,但钩子永远不会触发。 我不确定为什么……也许JRuby以某种方式吞下了SIGTERM? 即使它包含正在运行的Webrick服务器,如何让JVM完全关闭,干净利落地关闭?

如何在java中解组ruby对象?

我有一个对象,我想抓住java中的内容。 唯一的问题是目前是ruby。 irb(main):050:0> blah => “BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg%253D%253D-\ -0cdecf4edfaa5cbe4693c9fb83b204c1256a54a6” irb(main):049:0> Marshal.load(Base64.decode64(blah)) => {“authentication_strategies”=>nil, “user”=>1} 我得到了base64部分 – 所以现在一切都以字节为单位。 我如何访问第二个字符串? 我认为可以用jruby完成一些事情,但我以前从未使用它,也不知道从哪里开始。 让我在这里详细说明我的问题。 1)这些是我试图在tomcat上的servlet和apache上的merb应用程序之间共享的cookie 2)我不打算将它们存储在数据库中。 我曾考虑在memcached中使用它们,但出于其他原因我想将它们存储为cookie(是的,我很清楚所涉及的安全隐患) 我目前正在寻找jruby的Red Bridge / jruby-embed,但是因为这只有70个字节,所以我需要看一下,我觉得把所有这些开销用于这么简单的事情是荒谬的。 而不是启动一个新的问题….我现在的代码看起来像这样: // using commons Base64 b64 = new Base64(); byte[] decoded = b64.decode(cookie.getValue().getBytes()); ScriptingContainer container = new ScriptingContainer(); container.runScriptlet(“la = Marshal.load(\”” + decoded + “\”); puts la.to_s;”); 显然这不会起作用因为元帅将检查解码的前2个字节并且因为它与jruby的主要/次要版本不匹配而疯狂…. hrmss ..

Ruby代码到JAR

我希望能够将ruby程序编译为java JAR程序。 我查看了JRuby并看到了几个能够eval()ruby代码的Java应用程序示例,但是有一个更优雅的解决方案,允许简单地编写ruby中的所有内容,然后直接将批量编译成JAR文件吗? 这背后的总体目标是能够扩展名为Burp Proxy的安全工具。 所以我希望能够使用我所有的Ruby测试脚本(显然是组织它们以便它们与Burp扩展器连接)并将我的插件编译成可以由该工具执行的JAR文件。 如果您可以在答案中包含一些示例或指向示例的链接,甚至会更好! 谢谢你的时间。

如果您不了解任何Java,运行JRuby是否有优势?

我听说过JRuby很棒的东西,我知道你可以在不知道任何Java的情况下运行它。 我的开发技巧很强,Java不是我所知道的工具之一。 它是一个庞大的工具,有许多附带的工具,如Maven / Ant / JUnit等。 仅出于性能原因,是否值得将我当前的Rails应用程序移至JRuby? 也许如果我选择一些基本的Java,那么可以有一些不太明显的好处,比如更好的调试/性能优化工具? 会喜欢这方面的一些建议。

java.lang.OutOfMemoryError:Java堆空间

在使用Jruby的时候,我收到了这条消息。 Complete Java stackTrace java.lang.OutOfMemoryError: Java heap space 怎么解决?

Java脚本安全(JRuby,Jython,Groovy,BeanShell等)

我正在寻找运行一些未经validation的脚本(用一种尚未确定的语言编写,但需要基于Java,所以JRuby,Groovy,Jython,BeanShell等都是候选者)。 我希望这些脚本能够做一些事情并限制做其他事情。 通常,我只是使用Java的SecurityManager并完成它。 这非常简单,让我限制文件和网络访问,关闭JVM的能力等等。这对我想要阻止的高级别东西很有用。 但是我想要允许一些东西,但只能通过我提供的自定义API /库。 例如,我不想允许直接网络访问打开到yahoo.com的URLConnection,但如果使用MyURLConnection完成,我没关系。 那就是 – 我想要允许的一组方法/类,然后我想要的其他一切不受限制。 我不相信这种类型的安全性可以使用标准的Java安全模型来完成,但也许它可以。 我对脚本语言本身的性能或灵活性没有特定要求(脚本将通过基本循环/分支对我的API进行简单的过程调用)。 因此,即使是一个“大”的开销来检查每次reflection调用的安全检查也没问题。 建议?

带有Rubeus和Swing的JRuby脚本一旦使用warble打包到jar中就退出了

我试图将一个简单的JRuby脚本打包到一个jar文件中。 该脚本使用Rubeus :: Swing,并在使用JRuby解释器执行时正确运行。 require ‘rubygems’ require ‘rubeus’ class Example01 extend Rubeus::Swing def show JFrame.new(“Rubeus Swing Example 01”) do |frame| frame.visible = true end end end Example01.new.show 一旦我将脚本打包成带有warble的JAR,当我执行时: java -jar jtest.jar … JFrame窗口显示并立即关闭。 没有任何错误的迹象。 有谁知道为什么会这样?