У меня есть объект, который я хотел бы захватить содержимое в 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, так что теперь все в байтах. Как бы я получить доступ к этой 2-й строке? Я предполагаю, что что-то можно сделать с помощью jruby, но я никогда раньше этим не пользовался и понятия не имел, с чего начать.
Позвольте мне подробнее остановиться на моей проблеме здесь.
1) это куки, которые я пытаюсь разделить между сервлетом на tomcat и приложением merb на apache
2) Я не собираюсь хранить их в базе данных. Я думал об их использовании в memcached, но по другим причинам я хотел бы сохранить их в виде файлов cookie (да, я хорошо знаю о связанных с этим последствиях для безопасности)
В настоящее время я смотрю на красный мост jruby / 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 ..