1

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 の両方が署名されています。

4

0 に答える 0