JavaAppletを用いてローカルリソースにアクセスする

以前作ったブラウザ上でのP2Pアプリケーションを実行する際には、事前にユーザが".java.policy"ファイルを編集して設定しなければ成りませんでした。


今回はそれを改善する事も含めた、JavaAppletからのローカルリソースアクセスについて少々。


といっても私が自力で書く事は無いんですけどもね・・・。


http://d.hatena.ne.jp/ranha-pages/20090110/1231513372
http://www.mki.ne.jp/developers/doc/sign/SignedApplet.html


肝心なのは、署名付きjarを用いるという事です。署名付きjarファイルの作り方は、私はコピペしただけですので上記サイトなどを参考にして作ってもらう事にして。


で、署名付きjarファイルからはローカルリソースにアクセス出来ます。以上です。


がこれだけだとJavaScript->Javaではアクセス出来ないので更に追加。それと、セキュリティ的には全く宜しく無い事をやったのでその辺はご了承ください。

LiveConnectは別ポリシ(??)

署名付きjarを単純にAppletとして用いた時にはローカルリソースにアクセスする事が可能なのですが、JavaScriptからJava呼び出し(LiveConnect)する時にはそうもいかないようです。


で、そいつをどうにかする為には、".java.policy"を編集すれば良いんですが、署名付きアプレットならばそれは容易に出来ます。


流れとしては

System.getProperty("user.home")+"/.java.policy"
などでpathを取得。
↓
文字列"grant {\npermission java.security.AllPermission;\n};\n"を適切にアペンド
↓
Policy policy = Policy.getPolicy();
policy.refresh();
などでポリシを更新

最後のポリシを更新・・・が重要です。


ともかくまぁ、これで結構やりたい放題です。


あくまで未来の私向けメモ。


Java Web Startの時はjnlpが必要なようですけど、署名+jnlpになるわけはなんだろう・・・。