Вызов DLL из апплета через JNI

У меня есть "доказательство концепции " часть работы, которая пересекает какую-то незнакомую территорию. Я'Мне поручено подключить компьютер EFTPOS к приложению, выполняемому в качестве апплета в браузере в нашей внутренней сети.

на данный момент мы проигнорировали dll EFTPOS и создали простую DLL-библиотеку, украшенную JNI, на моем языке по выбору (Delphi), которая просто записывает строку в текстовый файл в c: \, и я могу успешно вызвать ее из локального Java-приложения.

Тем не менее, когда я создаю апплет, чтобы сделать то же самое, скомпилируйте его в .JAR, подпишите JAR & попытаться вызвать метод в апплете через Javascript на веб-странице, это не удается.

Старший Java-парень, яя работаю с неНе думаю, что это можно будет заставить работать, потому что этопо своей сути "злой" чтобы позволить апплету сделать это.

Есть запись, которую вы можете поместить в файл java.policy, чтобы разрешить loadLibrary. а также все разрешения и ямы попробовали целый ряд вариантов по всем этим направлениям, но все безрезультатно, приведя следующую трассировку ошибок в консоли Java:

java.lang.ExceptionInInitializerError
  at app.TestApplet.LogAString(Unknown Source)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
  at java.lang.reflect.Method.invoke(Unknown Source)
  at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
  at sun.plugin.com.MethodDispatcher.invoke(Unknown Source)
  at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
  at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.plugin.com.DispatchImpl.invoke(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.DLoggerImpl)
  at java.security.AccessControlContext.checkPermission(Unknown Source)
  at java.security.AccessController.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkPermission(Unknown Source)
  at java.lang.SecurityManager.checkLink(Unknown Source)
  at java.lang.Runtime.loadLibrary0(Unknown Source)
  at java.lang.System.loadLibrary(Unknown Source)
  at app.DLogger.(Unknown Source)
  ... 16 more
java.lang.Exception: java.lang.ExceptionInInitializerError
  at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source)
  at sun.plugin.com.DispatchImpl$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.plugin.com.DispatchImpl.invoke(Unknown Source)

Ключевая линия, кажется, "Вызвано: java.security.AccessControlException: доступ запрещен (java.lang.RuntimePermission loadLibrary.DLoggerImpl) " что подразумевает проблему с разрешениями. Может быть, яполучаю неправильный файл политики - или неправильную подпись - или что-то в этом роде, или может случиться так, что Java жестко запрограммирована, чтобы не разрешать такого рода разрешения для апплета из-за угрозы безопасности.

Мой вопрос, я трачу свое время? Это может быть сделано и если да, то как?

Спасибо в ожидании

Майк

Ответы на вопрос(3)

Ваш ответ на вопрос