Jak mogę unieważnić obiekt ruby ​​w java?

Mam obiekt, który chciałbym pobrać zawartość w java. Jedynym problemem jest to, że jest obecnie w rubinie.

irb(main):050:0> blah
=> "BAh7ByIeYXV0aGVudGljYXRpb25fc3RyYXRlZ2llczAiCXVzZXJpBg%253D%253D-\
-0cdecf4edfaa5cbe4693c9fb83b204c1256a54a6"

irb(main):049:0> Marshal.load(Base64.decode64(blah))
=> {"authentication_strategies"=>nil, "user"=>1}

Mam część base64 w porządku - więc teraz wszystko jest w bajtach. Jak uzyskać dostęp do tego drugiego ciągu? Przypuszczam, że coś można zrobić z jruby, ale nigdy wcześniej tego nie użyłem i nie mam pojęcia, od czego zacząć.

pozwólcie, że omówię tutaj mój problem.

1) są to pliki cookie, które próbuję udostępnić między serwletem na tomcat a aplikacją merb na apache

2) Nie będę ich przechowywać w bazie danych. Zastanawiałem się nad wykorzystaniem ich w memcached, ale z innych powodów chciałbym je przechowywać jako pliki cookie (tak, jestem świadomy konsekwencji związanych z bezpieczeństwem)

Obecnie patrzę na Red Bridge / jruby-embed jruby'ego, jednak ponieważ jest to tylko 70 bajtów, muszę się przyjrzeć, myślę, że to absurdalne, aby wywołać to wszystko na coś tak prostego.

zamiast uruchamiać nowe pytanie .... kod, który mam teraz wygląda tak:

        // 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;");

oczywiście to nie zadziała, ponieważ marszałek będzie sprawdzał pierwsze 2 bajty zdekodowanego i dziwnego, ponieważ nie pasuje do głównej / pomniejszej wersji jruby .... hrmss ..

questionAnswers(3)

yourAnswerToTheQuestion