JNA を使用してデバイスと通信するアプレットをコーディングしました。デバイスによって読み取られた値を取得し、データベースに保存する必要があります。私が自分自身に提案した解決策は、javascript を介してアプレット メソッドを呼び出し、戻り値を JSP に挿入することです。さて...アプレットの実行中に、DLLファイル(Windowsで実行されているps)をダウンロードし、ディスクに保存して、ダウンロードしたパスをJNAパスに追加する必要があります。しかし、アプレットを実行すると、java.security.AccessControlException がスローされ、「アクセスが拒否されました」と表示されます。これがJSPコードです...
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>..:: Testing ::..</title>
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script>
$(document).ready(function() {
$('#myTrigger').click(function() {
alert($('#myApplet')[0].capture());
});
});
</script>
</head>
<body>
<h1>Test Applet</h1>
<object type="application/x-java-applet" height="0" width="0" id="myApplet">
<param name="code" value="AppletHW" />
<param name="archive" value="AppletHW.jar,jna.jar" />
</object>
<a id="myTrigger" href="#">Click here</a>
</body>
</html>
...そして、私のアプレットは次のようになります...
public class AppletHW extends Applet {
public String capture() {
String folder = System.getProperty("java.io.tmpdir");
File path = new File(folder + File.separator + ".applethw");
System.setProperty("jna.library.path", path.getAbsolutePath());[/code]
// I download the DLL file
MyDLL lib = (MyDLL) Native.loadLibrary("MyDLL", MyDLL.class);
return lib.capture();
}
}
PS アプレット jar と JNA の両方が署名されています。