Liveconnectの長年の懸案を解決

| トラックバック(0)

FireFoxのLiveconnectを使ってweb上のjarを読み込ませるという実験らしきものをここ一年くらい考えて詰まっていたのだが、今日解決した。まぁ、要するにクライアントマシンでかなりの事が出来てしまう訳だ。前提条件としてpolicyを開けてやらなきゃならんのだが。

以下のような.java.policyを作ってユーザーのホームディレクトリへ。
grant {
  permission java.security.AllPermission;
};

で以下の様なjavascript

var jarUrl = "jar:http://chrhsmt.com/test.jar!/";
var methodName = "go";
var urls = java.lang.reflect.Array.newInstance(java.net.URL, 1);
urls[0] = new java.net.URL(jarUrl);
var loader = new java.net.URLClassLoader(urls, java.lang.ClassLoader.getSystemClassLoader());
var clazz = loader.loadClass("com.chrhsmt.Test");
var method = clazz.getMethod(methodName, null);
var obj = method.invoke(clazz.newInstance(), null);
alert(obj);

「yes」とアラートされれば成功。ちなみに.java.policyを書き換えてから(作ってから)、FireFoxを起動すること。
URLClassLoaderの呼び出す際のurl表記とかliveconnect上での配列変数の扱いでずっとはまってた。
いやぁ、すっきり。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Liveconnectの長年の懸案を解決

このブログ記事に対するトラックバックURL: http://blog.chrhsmt.com/mt-tb.cgi/345