MacOS и JSVC: SCARD_E_NO_SERVICE: менеджер ресурсов смарт-карт не работает - PullRequest
0 голосов
/ 15 мая 2018

Я получил файл JAR, который должен работать как демон в MacOS Sierra, и я решил использовать Apache Commons Daemon и JSVC для этой цели.Я знаю, что, возможно, JSVC на самом деле не нужен для этой цели (кажется, он позволяет открывать порты только в низком диапазоне), и можно добиться того же с помощью системы / запуска, так что любая помощь / решение с JSVC или без него приветствуется.

Вот так я запускаю флягу из командной строки, и она работает правильно.Он открывает соединение WebSocket через порт 8085 и ожидает входящего соединения.Затем он подключается к устройству чтения смарт-карт и получает некоторые данные с карты.

java -cp "myjar.jar:jars/*" full_class_name

Теперь, когда я пытаюсь запустить тот же файл с интерфейсом Apache Commons Daemon и JSVC, файл запускается правильно ион начинает прослушивать через порт 8085.

./jsvc -debug -cp commons-daemon-1.1.0.jar:myjar.jar:jars/* -cwd . -pidfile /tmp/file.pid full_class_name

Проблема в том, что по какой-то причине возникает исключение при попытке подключения к считывателю смарт-карт.

INFORMACIÓN: WebSocket Registered apps: URLs all start with ws://localhost:8085
may 15, 2018 10:04:37 AM org.glassfish.tyrus.server.Server start
INFORMACIÓN: WebSocket server started.
LISTENING
Daemon started successfully
java_start done
Waiting for a signal to be delivered
create_tmp_file: /tmp/541.jsvc_up
jnasmartcardio.Smartcardio$EstablishContextException: jnasmartcardio.Smartcardio$JnaPCSCException: SCardEstablishContext got response 0x8010001d (SCARD_E_NO_SERVICE: The Smart card resource manager is not running.)
    at jnasmartcardio.Smartcardio$JnaTerminalFactorySpi.engineTerminals(Smartcardio.java:81)
    at javax.smartcardio.TerminalFactory.terminals(TerminalFactory.java:351)
    at apdu4j.TerminalManager.getTheReader(TerminalManager.java:228)
    at com.st.middleware.a.a.b.connect(SourceFile:24)
    at com.st.middleware.a.b.connect(SourceFile:18)
    at com.st.middleware.a.b.getCertificates(SourceFile:1024)
    at com.st.middleware.MiddlewareImpl.a(SourceFile:113)
    at com.st.middleware.MiddlewareImpl.getAuthCertificates(SourceFile:151)
    at com.st.communication.card.websocket.a.handleMessage(SourceFile:79)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)

Фактто, что jar работает правильно при работе с java -jar, заставляет меня поверить, что проблема связана с конфигурацией.Любые идеи о том, почему услуга не доступна с помощью JSVC?

Заранее спасибо.

...