Verhalten von javax.smartcardio.Card.disconnect (boolescher Reset) in JDK 7u79?
Laut demrelease notes von JRE 7u72:
Change in javax.smartcardio.Card.disconnect (boolean reset) method behaviour
Vor den Releases JDK 8u20 und JDK 7u72 hatte die Methode javax.smartcardio.Card.disconnect (boolesches Zurücksetzen) eine invertierte Logik für den zurückgesetzten booleschen Wert. Die Karte wurde beim Trennen zurückgesetzt, wenn false übergeben wurde, und umgekehrt. Ab JDK 7u72 und JDK 8u20 wurde das korrekte Verhalten gemäß API-Dokumentation implementiert.
Um Benutzern, die sich auf das alte Verhalten verlassen, Abwärtskompatibilität zu bieten, wurde eine neue Systemeigenschaft eingeführt. Die folgende Befehlszeilenoption kann verwendet werden, um das alte fehlerhafte Verhalten zu erzwingen:
-Dsun.security.smartcardio.invertCardReset = true
Diese Eigenschaft ist standardmäßig für JDK 7-Updateversionen mit 7u72 und höher festgelegt. Standardmäßig wird in diesem Bereich für JDK 7-Update-Versionen keine Verhaltensänderung festgestellt.
Auch die folgende Befehlszeilenoption kann verwendet werden, um das neue korrekte Verhalten zu erzwingen:
-Dsun.security.smartcardio.invertCardReset = false
Dies ist die Standardeinstellung für JDK 8-Updateversionen ab 8u20. In zukünftigen Java-Versionen wird die Eigenschaft ignoriert / deaktiviert und das Verhalten der Standardtrennungsmethode entspricht der API.
Wenn Sie @ anrufjavax.smartcardio.Card.disconnect(true)
Die Karte wird nicht zurückgesetzt, obwohl ich JDK 7u79 habe. Wenn ich an @ vorbeigefalse
oder benutze die Option-Dsun.security.smartcardio.invertCardReset=true
an die VM, alles funktioniert gut. Wie konnte das sein? Wird eine ältere Version der JRE mit JDK 7u79 ausgeliefert?