APPLET印刷のまとめ

2579 ワード

プロジェクトで使用しているのは、APPLETプリントです。実現過程で発生した問題について、以下のようにまとめられています。
まずAppleのデジタル署名をローカルリソースにアクセスし、読み書きの権限設定を付与します。
ステップ1:Apple ClassをJarバッグにする
jar -cvf  MyApplet.jar .
ステップ2:証明書と署名を生成する
1、keytool -genkey -keystore 7csky.store -alias 7csky
このコマンドは、現在のディレクトリに7 csky.storeのファイルを作成する必要があります。ここの7 cskyは私が定義した名前です。修正できます。また、コマンドを実行する時には、隠しデータベースのパスワードを入力するようにというメッセージがあります。ここで必ず覚えてください。でないと、後で使うときは入力できません。
  2、keytool -export -keystore 7csky.store -alias 7csky -file 7csky.cert
このコマンドは署名を作成する際に使う証明書です。ここの7 cskyも必要な名前に変えられます。このコマンドは実行後、現在のディレクトリに7 csky.ceertのファイルを作成します。
 
 3、 jarsigner -keystore 7csky.store MyApplet.jar 7csky
このコマンドは上で作成した証明書で私達のjarファイルをサインしました。
ステップ3:ポリシーファイルを新規作成し、これらのポリシーファイルを追加(変更ファイル)します。
1.applet.policyを新規作成するファイルの内容は以下の通りです。
keystore "http://192.168.200.35/JYDA/security/7csky.store","JKS";

grant signedBy "7csky"{ permission java.io.FilePermission "<>", "read,write";};
grant signedBy“7 csky”{permission java.io.FilePermission"<>、“read、write”;
現在署名されているAPPLETに代わって、ファイルシステムのすべてのファイルを読み書きする権限を与えます。
2、{java.home}/jre/lib/securityディレクトリのjava.securityを修正して、次の二つの行を見つけます。
  policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
2行目は現在のユーザのポリシーファイルを表します。ほとんどありません
下に3行目を書き足す

  policy.url.3=http://192.168.200.35/JYDA/security/7csky.store  
この修正が完了したら、前に作成したapple.policyファイルが有効です。
また、APPLETを使用して印刷する場合、すでにAPPLETに署名していても、いくつかのブラウザでは、APPLETがプリンタの操作を要求する警告枠がポップアップされます。ポリシーファイルには以下のような構成が必要です。
permission java.lang.RuntimePermission "queuePrintJob";
permission java.net.SocketPermission "127.0.0.1:1024", "listen,connect";
注意:
linux下のfirefoxで試してみたら、firefoxがappleを正常に表示できないことがあります。このような状況が発生した理由は、firefoxにjdkプラグインがインストールされていないためで、読者は以下の方法でlinux版のfirefoxにjdkプラグインをインストールすることができます。
jdkプラグインのライブラリファイルはlibjavapluginです。oji.so,このファイルは/jre/plugin/i 386/ns 7ディレクトリにあります。ここでns 7は現在のjdkバージョンによって違いますが、前の2文字は全部nsです。linuxでは、jdkは一般的に/usr/javaディレクトリにインストールされます。
libjavapluginを見つけましたoji.soファイル後に/pluginsディレクトリにおいて、次のコマンドをlibjavaplugin(u)とします。oji.soファイルにシンボリックリンクを追加します。
ln-s/jre/plugin/i 386/ns 7/libjavaplugin_oji.so
Firefoxを再起動して、apple.jspページにアクセスすれば、正常にappleを表示することができます。
また、htmlページでは、javascriptでappleを呼び出す方法でもクライアントのローカルファイルにアクセスできません。ローカルファイルにアクセスできるのはappleの内部だけです。