Апплет Java не может найти файлы конфигурации JavaPOS - PullRequest
2 голосов
/ 03 апреля 2012

Я создал апплет, который использует 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.

Я попробовал следующее, чтобы апплет "увидел" два файла:

  1. jpos / res / jpos.properties уже присутствует в одном из jar-файлов, на которые ссылается апплет. Тем не менее, я добавил этот файл в основную банку апплета. Я также попытался добавить его в каталог на сервере, содержащий банки (с правильным относительным путем). Ничего из этого не работает.

  2. Я могу обойти невозможность найти свойства 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. Есть идеи, в чем проблема?

Ответы [ 2 ]

5 голосов
/ 11 апреля 2012

Это для справки любого, кто сталкивается с подобной проблемой.

Мне не удалось получить код JavaPOS для просмотра файла jpos.properties, но загрузка значений в свойства системы, как описано выше, работает, поэтому сейчас я буду придерживаться этого.

Чтобы JavaPOS загружал jpos.xml или jposxml.cfg из URL-адреса, вам нужно установить свойство jpos.config.populatorFileURL, а не jpos.config.populatorFile. Это может быть установлено либо в jpos.properties, либо в случае его сбоя, как свойство System.

0 голосов
/ 30 ноября 2017

Столкнулся с той же проблемой.

JposServiceLoader использует classpath для поиска корня пути.

Например, если локальный путь к классу для приложения равен

C:/myapp/target/classes

тогда jpos.properties должен быть по пути

C:/myapp/target/classes/jpos/res/jpos.properties

P.S. Возможно, это не лучший способ размещения файлов jpos, но, по крайней мере, это то, с чего можно начать, решая эту проблему.

...