Я создал апплет, который использует JavaPOS для связи с платежным терминалом в локальной системе пользователя.
При запуске из Eclipse IDE апплет работает нормально, но не при запуске в браузере. В браузере апплет не может найти файлы jpos / res / jpos.properties и jposxml.cfg.
Когда в апплете выполняются следующие операторы (в методе start (), а не init ()):
JposEntryRegistry registry = JposServiceLoader.getManager().getEntryRegistry();
registry.load();
это вывод, который я вижу в окне консоли Java:
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
jpos/res/jpos.properties file not found
И никакие записи не загружаются в реестр JposEntry.
Я попробовал следующее, чтобы апплет "увидел" два файла:
jpos / res / jpos.properties уже присутствует в одном из jar-файлов, на которые ссылается апплет. Тем не менее, я добавил этот файл в основную банку апплета. Я также попытался добавить его в каталог на сервере, содержащий банки (с правильным относительным путем). Ничего из этого не работает.
Я могу обойти невозможность найти свойства jpos.properties, задав для свойств системы соответствующие значения, например:
System.setProperty("jpos.loader.serviceManagerClass", "jpos.loader.simple.SimpleServiceManager");
System.setProperty("jpos.config.populatorFile", "jposxml.cfg");
System.setProperty("jpos.util.tracing.TurnOnNamedTracers", "JposServiceLoader,SimpleEntryRegistry,SimpleRegPopulator,XercesRegPopulator");
System.setProperty("jpos.util.tracing.TurnOnAllNamedTracers", "ON");
Однако апплет все еще не может найти jposxml.cfg. Этот файл присутствует в корне основного файла jar апплета. Я попытался положить на сервер в тот же каталог, что и банки. Я также попытался создать отдельный файл JAR, содержащий только jposxml.cfg, но это тоже не работает. Я получаю следующий вывод в окне консоли Java:
[AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg
[JposServiceLoader]manager.getEntryRegistry().load() OK
[AbstractRegPopulator]getPopulatorFileIS(): populatorFileName=jposxml.cfg
Но список JposEntries пуст. В результате апплет не может связаться с платежным терминалом.
Апплет загружается через файл JNLP (и все необходимые файлы jar через расширение JNLP). Оба файла JNLP имеют безопасность, установленную на . Все банки подписаны одним и тем же сертификатом. Тот же код отлично работает в Eclipse. Есть идеи, в чем проблема?