Aufruf des TSE Connectors

In diesem Forum können Fragen zum OrderSprinter gestellt werden.
brewkrezi
Beiträge: 4
Registriert: Mi 5. Aug 2020, 14:14

Aufruf des TSE Connectors

Beitrag von brewkrezi »

Hallo Stefan,

da ggf. andere Nutzer mit Windows 10 Probleme haben, schreibe ich hier einmal einige Anregungen und Fragen auf, da bei mir der AUFRUF des TSE-Connectors nicht gelingt.

Anmerkungen:
Bei Eingabe von
PS C:\WINDOWS\system32> java -jar "C:\Users\Public\Documents\tseconnector\swissbit\tseconnector.jar"
in die Windows Powershell (Administrator) kommt unter anderem folgende Meldung:
Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden (sonst wird ein java.lang.UnsatisfiedLinkError gemeldet):
z.B. java -Djava.library.path=/usr/local/bin/tseconnector/swissbit/nativelibs/linux64 -jar tseconnector.jar mode=...
M
Es heißt in deiner Meldung "Verzeichnis tseconnector_lib". Weiter unten wird im Beispiel aber ..../swissbit/nativelibs/linuxt64 ... genannt.

Des Weiteren funktioniert bei mir offensichtlich nur java 9.04 und nicht die von java für windows10/64 aktuelle Version 8 Update 261. Bei der Version 8 Update 261 kommt die Fehlermeldung, dass bei der Compilierung eine aktuellere Version/Klasse (53) verwendet wurde, 8 /261 aber die Version/Klasse 52 hat. Vielleicht macht es Sinn, den TSE-Connector neu zu compilieren mit der Version 8 /261, da dass die aktuelle Version auf den Windows10-Rechnern ist.

Nun zu meinen Fragen:

Ich habe den TSE-Connector bei mir in folgendem Pfad abgelegt:
C:\Users\Public\Documents\tseconnector
Den Aufruf starte ich daher wie in dem Beispiel angegeben mit folgendem Befehl und erhalte dann folgende Meldung:
PS C:\> java -Djava.library.path="C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64"
Fehler: Hauptklasse .library.path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64 konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: /library/path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64
Starte ich einen Aufruf wie folgt, erhalte ich diese Meldung:
PS C:\> java -jar "C:\Users\Public\Documents\tseconnector\swissbit\tseconnector.jar"
Keine Aufrufparameter übergeben. Standardwerte werden benutzt!
TSEConnectors kann folgende Parameter verarbeiten:
pass=xyz Das Passwort des TSEConnectors. In der OrderSprinter-Administrationsansicht einstellen!
port=8000 Der TCP-Port, über den OrderSprinter-Core mit dem TSEConnector kommunizieren soll
mountpoint=/media/account/SWISSBIT Das Laufwerk/Mountpoint der Swissbit-TSE
mode=normal Falls der Wert auf "simulate" eingestellt wird, wird die TSE nur simuliert.

Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden (sonst wird ein java.lang.UnsatisfiedLinkError gemeldet):
z.B. java -Djava.library.path=/usr/local/bin/tseconnector/swissbit/nativelibs/linux64 -jar tseconnector.jar mode=...

Start TSEConnector mit diesen Parametern:
pass= 123
port= 8000
supplier= swissbit
mountpoint=/media/stefan/SWISSBIT
mode= normal
java.lang.UnsatisfiedLinkError: no WormAPI in java.library.path
at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
at java.base/java.lang.System.loadLibrary(Unknown Source)
at com.secureflashcard.wormapi.WormAPIJNI.<clinit>(WormAPIJNI.java:14)
at com.secureflashcard.wormapi.WormStore.<init>(WormStore.java:233)
at tseconnector.tseconnector.main(tseconnector.java:82)
Gebe ich, so wie ich meine, den Pfad komplett ein, kommt folgende Meldung:
PS C:\>java -Djava.library.path="C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64" -jar tseconnector.jar pass=678 mode=simulate
Fehler: Hauptklasse .library.path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64 konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: /library/path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64
Die gleiche Meldung kommt wenn die Eingabe wie folgt lautet:
PS C:\> java -Djava.library.path="C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64" -jar "C:\Users\P
ublic\Documents\tseconnector\swissbit\tseconnector.jar" pass=678 mode=simulate
Fehler: Hauptklasse .library.path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64 konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: /library/path=C:\Users\Public\Documents\tseconnector\swissbit\nativelibs\windows64
Steuere ich den TSE-Connector direkt im selben Verzeichnis an, gelingt die Übernahme der Parameter:
PS C:\users\public\documents\tseconnector\swissbit> java -jar tseconnector.jar mode=simulate pass=5678
TSEConnectors kann folgende Parameter verarbeiten:
pass=xyz Das Passwort des TSEConnectors. In der OrderSprinter-Administrationsansicht einstellen!
port=8000 Der TCP-Port, über den OrderSprinter-Core mit dem TSEConnector kommunizieren soll
mountpoint=/media/account/SWISSBIT Das Laufwerk/Mountpoint der Swissbit-TSE
mode=normal Falls der Wert auf "simulate" eingestellt wird, wird die TSE nur simuliert.

Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden (sonst wird ein java.lang.UnsatisfiedLinkError gemeldet):
z.B. java -Djava.library.path=/usr/local/bin/tseconnector/swissbit/nativelibs/linux64 -jar tseconnector.jar mode=...

Start TSEConnector mit diesen Parametern:
pass= 5678
port= 8000
supplier= swissbit
mountpoint=/media/stefan/SWISSBIT
mode= simulate
Abgeschlossen Startup des TSEConnectors
Letzte Frage:

Als "nur" PowerUser weiß ich nicht so recht, was mountpoint ist bzw. was ich in meinem Fall hier eingeben muss oder ob er nur für Linux gilt. Bei Dir heißt es:
mountpoint=/media/stefan/SWISSBIT
Bei mir könnte es dann ggf. heißen (Laufwerk der TSE)
mountpoint="C:\SWISSBIT"
Möglicherweise ist diese Angabe aber im Simulationsmodus nicht erforderlich, oder doch?

Ich hoffe, ich kann hiermit auch ein wenig zum Gelingen beitragen und freue mich den TSE-Connector zunächst im Simulatiosmodus testen zu können, bevor es dann "ernst" wird.

Michael Roeßgen
pichel
Administrator
Beiträge: 1169
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Aufruf des TSE Connectors

Beitrag von pichel »

Hallo Michael,

vielen Dank für deinen detaillierten Beitrag. Ich werde erst am Wochenende dazu kommen, ausführlicher zu antworten.

Nur kurz schon mal:
Mountpoint: Nicht wichtig im Simulationsmodus (bin gerade nicht sicher, ob ich das als mandatory argument festgelegt habe, aber im Simulationsmodus darf jeglicher Blödsinn drinstehen).
Java-Version: Stimmt, da habe ich nicht drauf geachtet, das auch Kompatibel mit 8.x zu machen...

Am Wochenende mehr... :)

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
pichel
Administrator
Beiträge: 1169
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Aufruf des TSE Connectors

Beitrag von pichel »

Hallo Michael,

mit Version 2.0.3, die ich gerade released habe, sollte der TSEConnector auch mit Java 1.8 laufen.

Ich konnte es mangels Zeit nur mit Linux testen, wüsste aber nicht so recht, warum es bei Win 10 nicht laufen sollte. Hast du die Kommandos mal außerhalb der Powershell ausprobiert? Vielleicht verhindert die PS den Zugriff auf Verzeichnisse oberhalb des aktuellen Working Directories.

Das Zitat "Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden" kann ich nirgendwo finden. Hast du es aus dem Web oder meiner PDF-Anleitung?

Viele Grüße,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
brewkrezi
Beiträge: 4
Registriert: Mi 5. Aug 2020, 14:14

Re: Aufruf des TSE Connectors

Beitrag von brewkrezi »

Hallo Stefan,
Das Zitat "Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden" kann ich nirgendwo finden. Hast du es aus dem Web oder meiner PDF-Anleitung?
Weder noch. Es kam als Rückmeldung/Fehlermeldung/Hinweis in der PS.
Zum Beispiel nach folgender Eingabe:
PS C:\> java -jar "C:\Users\Public\Documents\tseconnector\swissbit\tseconnector.jar"
Und dann "spuckte" die PS Folgendes aus (siehe Mitte)
Keine Aufrufparameter übergeben. Standardwerte werden benutzt!
TSEConnectors kann folgende Parameter verarbeiten:
pass=xyz Das Passwort des TSEConnectors. In der OrderSprinter-Administrationsansicht einstellen!
port=8000 Der TCP-Port, über den OrderSprinter-Core mit dem TSEConnector kommunizieren soll
mountpoint=/media/account/SWISSBIT Das Laufwerk/Mountpoint der Swissbit-TSE
mode=normal Falls der Wert auf "simulate" eingestellt wird, wird die TSE nur simuliert.

Zusätzlich muss der Pfad zum Verzeichnis tseconnector_lib angegeben werden (sonst wird ein java.lang.UnsatisfiedLinkError gemeldet):
z.B. java -Djava.library.path=/usr/local/bin/tseconnector/swissbit/nativelibs/linux64 -jar tseconnector.jar mode=...

Start TSEConnector mit diesen Parametern:
pass= 123
port= 8000
supplier= swissbit
mountpoint=/media/stefan/SWISSBIT
mode= normal
java.lang.UnsatisfiedLinkError: no WormAPI in java.library.path
at java.base/java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.base/java.lang.Runtime.loadLibrary0(Unknown Source)
at java.base/java.lang.System.loadLibrary(Unknown Source)
at com.secureflashcard.wormapi.WormAPIJNI.<clinit>(WormAPIJNI.java:14)
at com.secureflashcard.wormapi.WormStore.<init>(WormStore.java:233)
at tseconnector.tseconnector.main(tseconnector.java:82)
Ich checke die Version 2.0.3 und melde mich.

Grüße
Michael
brewkrezi
Beiträge: 4
Registriert: Mi 5. Aug 2020, 14:14

Re: Aufruf des TSE Connectors

Beitrag von brewkrezi »

Hallo Stefan, kurze Rückmeldung:

Ich habe einen lokalen Server per xampp installiert. Dort läuft jetzt der ordersprinter 2.0.3 und auch der entsprechende TSE-Connector.

Ich starte die Installation mit einem Klick über eine Batch-Datei, in der ich zunächst xampp aufrufe, dann den printserver, dann den TSE-Connector und schließlich den Ordersprinter - und es funktioniert. Zwischen den einzelnen Aufrufen habe ich einen Timeout-Befehl gesetzt.

Den TSE-Connector starte ich in der Batch-Datei mit folgendem Befehl:
C:\> java -jar "C:\xampp\htdocs\tseconnector\swissbit\tseconnector.jar" pass=xxxxx port=8000 mode=simulate
Die dann folgende Meldung endet damit, dass der Aufruf des TSE-Connectors abgeschlossen ist. Nach Aufruf des Ordersprinter folgen dann in dem Fenster viele weitere Angaben, die ich aus dem Kopf jetzt nicht zitieren kann (habe nur mein Handy und bin gerade ein paar Tage verreist).

Mit diesem Befehl
C:\> java -Djava.library.path="C:\xampp\htdocs\tseconnector\swissbit\nativelibs\windows64" -jar "C:\xampp\htdocs\tseconnector\swissbit\tseconnector.jar" pass=xxxxx port=8000 mode=simulate
kam es zu einer Fehlermeldung, allerdings nicht, wenn ich nur den zweiten Teil verwendet habe (siehe oben).

Die Installation läuft auf Windows 10 Home.

Für die Zukunft würde ich die Installation auf einem Webspace bei ionos machen wollen, allerdings ist mir da noch nicht ganz klar, ob der Ordner "tseconnector" lokal oder im Webspace abzulegen ist.

Abgelegt im Webspace weiß ich nicht, wie ich den Ordersprinter aufrufen kann.
Wenn ich ihn lokal platziere, kann ich ihn aufrufen, weiß aber nicht, wie die Syntax der URL in den TSE-Einstellungen des Ordersprinters lauten sollte.

Fazit:
lokal mit xampp-Umgebung läuft's schon mal. Top und danke!

Beste Grüße vom Bodensee
Michael

kleine Ergänzung:

die Batch-Datei starte ich mit einer Verknüpfung, die ich so eingestellt habe, dann dass sie mit Adminrechten startet und somit auch die Batch-Datei
pichel
Administrator
Beiträge: 1169
Registriert: So 13. Sep 2015, 19:48
Wohnort: Hamburg
Kontaktdaten:

Re: Aufruf des TSE Connectors

Beitrag von pichel »

Hallo Michael,

wenn du die TSE nicht nur simulierst, sondern auch eine reale TSE einsetzen möchtest (mode=normal), so benötigst du die nativen Bibliotheken, die du mit -Djava.library.path referenzierst.

Ich kann es gerade mangels Zeit und einem Win10-Rechner vor Ort nicht testen, aber ich möchte nicht ausschließen, dass die beigelegten Bibliotheken nicht die richtigen für Windows sind. Ich werde das aber überprüfen, nur nicht jetzt...

Gruß,

Stefan
Stefan Pichel
Entwickler der Kassensoftware OrderSprinter (http://www.ordersprinter.de)
Antworten